We may earn an affiliate commission when you visit our partners.
Course image
Jannis Seemann and Denis Panjuta

Do you sometimes feel lost with the command line and want to use Linux with confidence? Do you want to boost your daily efficiency and gain a significant advantage for your tech career?

Read more

Do you sometimes feel lost with the command line and want to use Linux with confidence? Do you want to boost your daily efficiency and gain a significant advantage for your tech career?

This is where our Mastering Linux course steps in. Led by a top Udemy instructor with real-world expertise, we simplify Linux for you. Featuring 70+ hours of content, hands-on projects, and practical scenarios, and many quizzes - this course is all you need.

Dive in, sharpen your skills, and give your tech career a big lift.

Course Highlights:

  • Career Amplification: Propel your career forward. This course positions you as a sought-after Linux authority, primed for elite tech engagements.

  • Holistic Learning: Imparted by a distinguished instructor with seasoned experience at flagship tech giants. Experience a harmonious blend of real-world relevance and innovative teaching methods.

  • Stand Out in Tech Roles: Go beyond rote learning and grasp the reasoning behind each Linux concept. This enriches your learning experience, and makes you stand out from others.

  • Have Fun While Learning: Dive into a dynamic learning experience packed with practical examples, engaging quizzes, and real-world scenarios. Our interactive approach ensures you remain captivated while absorbing and applying Linux's core principles. Learning has never been this enjoyable and impactful.

What is the structure of this course?

  1. Bash CLI Mastery: Dive deep into the Command Line Interface (CLI) with Bash and transform your day-to-day tech tasks. By mastering this foundational element, you'll not only become comfortable in the command line environment but also gain the confidence to handle daily operations seamlessly. From executing basic commands to managing files, the CLI is an indispensable tool for any Linux enthusiast. Through our hands-on exercises and real-world scenarios, you'll learn to use Bash with precision, making everyday tasks easier and more efficient.

  2. Diving Deep into Linux: This segment takes you to the heart of Linux, preparing you for tasks like server administration, network configuration or workstation setups. By exploring the intricate details of Linux processes, user groups, and permissions & SELinux, you'll gain a foundational understanding how everything works. Delve into the boot process, package management, firewalls, networking. This knowledge ensures you're well-equipped to manage servers, set up Linux networks, or tackle any related challenges. By the end of this section, you'll navigate the Linux ecosystem with confidence, ready to handle real-world applications with precision.

  3. Advanced Bash Scripting: With your foundational knowledge in place, this section dives deeper into the real-world applications of Bash scripting. Learn to automate repetitive tasks, monitor system health, process vast datasets, and seamlessly integrate with web services. Delve into crafting intricate scripts that utilize loops, tests, and APIs. This module ensures you're equipped with both theoretical insight and hands-on skills, ready to tackle diverse challenges in various tech environments.

Why This Course Stands Out:

  • Purposeful Learning: Emphasis on comprehension over plain memorization.

  • Practical Integration: Each session is meticulously crafted for real-tech applicability.

  • Comprehensive Curriculum: Over 70 hours of curated content for exhaustive learning.

  • Mentorship Excellence: Absorb wisdom from a top-tier Udemy maestro.

  • Practical Engagements: Dive into projects that mirror real-world scenarios.

  • Collaborative Learning: Vibrant forums for collective discussions and inquiries.

  • Everlasting Access: Pay once, benefit forever.

Embrace Your Linux Future:

Are you ready to say goodbye to feeling lost with Linux and the command line? Are you eager to command Linux like a professional and give your tech career a substantial boost?

Click that enroll button now and take the first step towards unlocking the power of Linux. You got nothing to loose and a world of opportunities to gain.

Enroll now

What's inside

Learning objectives

  • Career boost: stand out in tech roles such as system administrator, web developer, software engineer, devops engineer, site reliability engineer, and more
  • Master the cli: you will never feel lost on the command line again. daily tasks will be quicker and easier than ever before
  • Holistic comprehension: grasp the 'why' behind linux. this makes learning intuitive and engaging. no annoying 1:1 memorisation needed!
  • Engaging & interactive: dive into a fun learning experience with numerous examples, hands-on projects, and quizzes to reinforce and test your knowledge
  • Package management & application: navigate package systems seamlessly and apply knowledge in real-world projects
  • Advanced bash scripting: create sophisticated scripts using loops, tests, apis, and json for automation and complex tasks
  • Comprehensive linux insight: understand processes, user groups, permissions, and get acquainted with system boots and storage mounts
  • All-encompassing guide: dive into the definitive linux course, meticulously crafted to be the only resource you'll ever need

Syllabus

----- Part 1: INTRODUCTION & INSTALLATION -----

In this comprehensive course, Jannis Seemann, a seasoned developer and popular Udemy instructor, guides you through mastering the Linux command line and core Linux concepts. The curriculum unfolds over 70+ hours, beginning with setup and basic commands, advancing to intricate bash scripting and system interaction, enabling automation and problem-solving. Jannis extensive teaching and practical experience illuminate each step, ensuring a seamless journey to expertise in Linux and command line mastery, all delivered in fluent English.

Read more

This course provides a comprehensive understanding of Linux, integrating foundational concepts, command line usage, and advanced bash scripting. It emphasizes practical application and active participation, facilitating learning through exercises, hands-on commands, and interaction. The course is designed to cater to various goals, from personal use to professional certification, ensuring clarity and depth in understanding, leading to fluency in Linux. The initial focus is on installing Linux for practical engagement.

Slides of this Course (as .pdf)

This video explores the essence and functionalities of Linux, emphasizing its role as a kernel in open-source, Unix-like operating systems. It elucidates the pivotal relationship between Linux and Unix, clarifying the multitasking and multi-user capacities of Unix. It highlights Linux’s prevalence in various technologies and its synergy with GNU to form a comprehensive operating system, contrasting it with proprietary Unix systems. The discussion extends to the significance of operating systems and their interaction with computer hardware and software.

This video discusses the nuances of Linux distributions, focusing on Ubuntu and CentOS Stream, detailing their relation to Debian and Red Hat families respectively. It guides users on choosing the appropriate distribution based on their individual needs, project scale, and security requirements. The lecture emphasizes the user-friendly nature of Ubuntu and the professional adaptability of CentOS, while ensuring viewers understand the availability and integrative aspects of both distributions within the course.

Test your knowledge about Basic Linux Terms
Heads-up: Problems with Ubuntu 24.04 LTS

This video elucidates the process of running Linux through virtualization, regardless of your main operating system. It stresses the importance of using a virtual machine for learning Linux, highlighting its benefits like isolation and easy recovery. The tutorial guides through utilizing VirtualBox, a free software by Oracle, detailing its installation and setup, and addresses compatibility and usage on different operating systems and processors, ensuring viewers can seamlessly create a conducive Linux learning environment.

The video demonstrates installing Ubuntu on a virtual computer using VirtualBox, focusing on using the Long-Term Support (LTS) version of Ubuntu for stability. The instructor guides through the entire process, including downloading the Ubuntu image, setting up the virtual machine with recommended configurations, and initiating the installation. The tutorial also touches on troubleshooting and customization tips, ensuring a smooth user experience and addressing potential variations in the installation process.

In this lecture, the instructor details configuring an Ubuntu virtual machine, focusing on installing drivers and software to enable seamless interaction with Windows. The steps include system updates, compiling drivers, and setting up shared folders to facilitate data transfer. Various functionalities, like shared clipboard and drag-and-drop, are demonstrated, concluding with insights into efficiently managing and pausing the virtual machine's state.

For your convenience: Configuration Recap
Read before installing CentOS Stream

The video demonstrates how to install CentOS Stream in VirtualBox, focusing on creating a virtual machine, selecting the correct CentOS version, and configuring settings. It addresses the importance of proper memory allocation and keyboard layout configuration, concluding with insights into resolving interface inconsistencies and enhancing host and virtual machine interaction through additional drivers, ensuring smooth and convenient user experience.

This video provides a comprehensive guide to configuring CentOS Stream on VirtualBox, emphasizing seamless integration with Windows. It walks through the installation of essential drivers and tools, addressing common issues like cursor misalignment and enabling functionalities like shared clipboard and drag-and-drop. The tutorial also introduces data transfer methods between virtual and host machines, ensuring a smooth and user-friendly experience.

This video demonstrates creating snapshots in VirtualBox, a pivotal feature that captures the system's state, allowing users to revert their virtual machine if errors occur. It emphasizes the importance of snapshots for preventing unintended configurations, maintaining system integrity, and offering a flexible, forgiving learning environment across different settings.

In this video, the instructor congratulates viewers on setting up a running Linux system, a foundational step for the course. Encouraging exploration, the instructor emphasizes the importance of familiarization with the system. The upcoming chapter promises to delve into Linux principles and introduce the terminal, providing viewers with an opportunity to build upon their newly acquired knowledge and to deepen their understanding of Linux functionalities.

[Installation on MacOS with Apple Silicon Chips]: UTM
Important: Only for macOS users

This lecture provides guidance specifically for modern Mac users with Apple processors on installing UTM—a virtualization software optimized for macOS, as an alternative to VirtualBox which primarily supports x86 architecture. The discussion delves into the differences between x86 and ARM CPU architectures, highlighting ARM's dominance in mobile and its expansion into traditional computing. The tutorial concludes with instructions on downloading and installing UTM and hints at subsequent lessons on setting up Ubuntu and CentOS Stream virtual machines.

This video guides viewers through installing Ubuntu on Mac for ARM processors using the UTM application. It emphasizes acquiring the correct Ubuntu desktop image for ARM and stresses using the latest LTS version of Ubuntu. The tutorial covers creating a virtual machine, addressing keyboard layout preferences, and resolving common installation errors. Lastly, it touches on post-installation configurations, including adjusting resolution and ensuring proper system functionality within the virtual environment.

This tutorial demonstrates configuring Ubuntu on Mac via UTM, focusing on creating a shared folder between Mac and Ubuntu. The instructor details the process of establishing and maintaining shared folders post-reboot, emphasizing security by recommending selective sharing and advocating for cloning virtual machines as a precaution. Reconfiguration of shared directories within UTM is highlighted as an essential step in certain instances.

The video guides users through installing CentOS Stream on a Mac via UTM virtualization. It covers downloading the ARM64 CentOS image, setting up the virtual machine with Apple Virtualization for optimal file sharing, and configuring system preferences. Post-installation, it addresses potential display issues and introduces basic CentOS functionalities, hinting at future file sharing tutorials.

This video demonstrates configuring CentOS Stream on a Mac using UTM software, focusing on adjusting resolution and enabling persistent folder sharing between the systems. It provides detailed command executions in the terminal and explains cloning the virtual machine for backup. The tutorial ensures users can establish a well-configured, functional system with clear visuals and secured data sharing.

----- Part 2: BASH CLI -----

The course progresses to part 2, focusing on bash command line interface skills essential for managing files and server work. Participants learn file management through the command line, command output redirection, and the utilization of pipes to combine Unix tools, enhancing functionality. The course elucidates the configurations and customization of the bash environment, including color settings, offering practical examples and a step-by-step guide to mastering command line operations, configurations, and customizations.

First Steps in the Terminal
Important: If you've already been using the Terminal

This video provides an overview of using and configuring terminal apps on CentOS and Ubuntu, emphasizing their text-based interface and highlighting the process to ensure the 'bash' shell is being used. It covers basic interactions, visual adjustments for readability, and introduces the concept of independent terminal sessions, preparing viewers to start writing actual 'bash' commands. Different shells and their launching processes are briefly discussed.

The video tutorial explains the use of the echo command in bash for outputting text, emphasizing the unique role of single quotes in bash. It illustrates how echo automatically generates a line break, modifiable with the -n and -e options, allowing for the incorporation of backslash escapes. The structure of a command, consisting of the command, options, and arguments, is also clarified, preparing viewers for future lessons on file system navigation.

Test your knowledge about First Commands

The video tutorial covers navigating the file system within a shell, focusing primarily on utilizing 'pwd' to reveal the working directory and 'cd' to change directories. It demonstrates various methods to access different folders, emphasizing the distinction in file paths across different operating systems and the absence of drive letters in Linux. The tutorial also introduces concepts like the home directory and the usage of tab autocomplete for efficient command input, providing practical examples to illustrate each concept.

The video explains using the 'ls' command in Linux to list directory contents. It covers options to display hidden files, sort by modification time, and reverse the order. The significance of color-coded outputs and the '--color' option is highlighted. The tutorial also differentiates between specifying relative and absolute paths, laying the foundation for the subsequent lecture on path distinctions.

The video provides a clear distinction between absolute and relative paths in programming. Absolute paths, beginning with a slash, denote the full path and are universal, while relative paths are interpreted based on the current directory, requiring caution due to potential errors. Practical examples underline the importance of understanding and attentively using these paths to navigate files and folders effectively.

This video teaches executing multiple commands in one line by separating them with semicolons. It demonstrates this with examples like using echo to print 'Hello World' without a line break, and navigating directories to perform 'ls'. It emphasizes caution, particularly with directory navigation due to autocompletion limitations, and potential changes in the current working directory before execution. The host advises using this method judiciously, especially when autocompletion is unnecessary.

Test your knowledge about Directory Navigation

This video introduces methods to seek assistance with Linux commands. It emphasizes using `-h` or `--help` to display command options and arguments. The video also highlights the significance of `man` pages, built-in manuals for commands, and the installation process for these on different Linux distributions, specifically CentOS and Ubuntu. It concludes by suggesting online resources like StackOverflow and Reddit for further support and encourages students to leverage course forums for queries.

First Steps with Linux

In this chapter, we delve into bash file management. Learn to create, copy, move, and rename files and folders. Understand the risks of deletion in bash and techniques to mitigate them. Apply knowledge to real-world tasks like extracting photos from directories or retrieving specific PDFs from nested folders. Dive in to master essential bash file management tools.

Information User Managment

Linux categorizes users into system accounts, regular users, and the super user (root). System accounts manage background tasks, while regular users have personal directories but limited permissions. The super user enjoys unrestricted access to all system components. For special tasks, regular users can get temporary elevated permissions using the "sudo" command, explored in the next lecture.

This video instructs on utilizing the 'sudo' command to temporarily elevate user privileges in Linux, a fundamental skill for system updates and tool installations. It emphasizes caution, illustrating the command’s potential to access and modify essential system directories and user accounts, even causing irreversible system damage if misused. Real-time demonstrations underscore the importance of understanding command functionalities, especially when applying 'sudo' to ensure system security and integrity, and solutions are provided for potential installation discrepancies.

In this video, the instructor explains how to troubleshoot when the sudo command is non-functional on a CentOS system. The tutorial demonstrates creating an administrative user, emphasizing secure password practices and the distinction between regular and super users. The content is hands-on, providing insights into user permissions and system configurations to impart fundamental concepts effectively.

Test your knowledge about Handling User Privileges

This video introduces the concept of package management, a crucial process in most Linux distributions, offering a centralized method to install and update software, enhancing system upkeep. It discusses the fundamental workings and benefits of package management systems, highlighting their role in maintaining software like Firefox or Chrome. The lecturer mentions upcoming deep dives into the implementations of this concept in Ubuntu and CentOS, noting their slight differences.

In this video, the instructor discusses managing and installing software on Ubuntu using the APT tool, essential for maintaining system updates and managing software on Debian-based distributions like Ubuntu. The lecture provides detailed insights into various APT commands such as apt-update, apt-upgrade, and apt-full-upgrade, explaining their significance and usage. The demonstration includes installing, using, and removing a software package. The emphasis is also laid on understanding dependencies and addressing potential problems during system upgrades.

In this video, the instructor explains software management on CentOS using the `dnf` tool, which replaces the older `yum` package manager. The tutorial demonstrates updating the system, the significance of the `epel-release` repository, and how to install or remove software. As an example, the `Kause` software is installed to generate ASCII art. The instructor emphasizes the importance of system updates, the transition from `yum` to `dnf`, and mentions that an in-depth discussion on package management will be covered in a subsequent chapter.

To execute the commands for the upcoming quiz questions, you need to have the program `cowsay` installed on your Linux system.

Important (for macOS users):

The cowsay installed through HomeBrew works differently on macOS, and does not support the options asked for in this quiz. You will probably not be able to follow along - be sure to either skip this quiz, or run it in a Linux Virtual Machine!

This lecture demonstrates utilizing bash on macOS, highlighting macOS's default use of an outdated bash version due to Apple’s licensing restrictions with GPL v3. The instructor elucidates upgrading to bash version 5.x for accessing the latest features, enabling users to execute bash commands directly on macOS for a significant portion of the course. The lecture advises caution when working directly on system files and advocates for a virtual machine to mitigate risks associated with erroneous commands.

This video demonstrates the installation and utilization of Homebrew, a versatile package manager for Mac. The instructor emphasizes its importance for those wishing to enhance their command line operations on Mac, guiding users through the installation process and subsequent package installations, such as updating Bash. The tutorial also clarifies potential differences Mac users may encounter, like system-specific path names and language settings, ensuring seamless navigation and application in diverse programming environments.

File Management (Part 1) - Organize Files & Directories
Important: If you've already been using the Terminal / Linux

In this chapter, we delve into file management in bash. Master the art of creating, copying, moving, renaming, and deleting files and folders. Gain insights into the risks of bash and adopt strategies to mitigate them, ensuring safer operations. Apply your knowledge to real-world scenarios, such as extracting photos from a folder or retrieving specific PDFs from nested directories. Dive in to equip yourself with essential bash file management techniques. Let's begin!

In this video, two foundational commands in Unix-like systems are introduced: touch and mkdir. The touch command is typically used to create empty files. However, its primary function is to modify a file's timestamp. If the file exists, its timestamp is updated; otherwise, a new file is created with the current timestamp. The use of ls -l showcases the timestamps and additional file information. The mkdir command allows the creation of new directories. Demonstrations include listing contents with and without color, emphasizing the importance of discerning files from folders. The lecture concludes by hinting at future discussions on moving files between directories.

In the video, we delve into the process of manipulating files in a terminal environment, focusing on moving, copying, renaming, and inspecting directories. Initially, we explore the move command, which is employed to shift files between directories or to rename them. Through practical examples, it's shown that while it is possible to navigate to a target directory to verify a file move, a more efficient approach is to use ls with a directory argument, allowing for inspection without changing the working directory. The instructor also showcases simultaneous moving and renaming, exemplifying this with a Maximilian.txt to Max.txt example.

Transitioning to file duplication, the video introduces the cp command. For simple file copying, the command can be used directly. However, to copy an entire directory, the -R (recursive) flag becomes essential. This ensures that all content inside a directory is duplicated. The video wraps up with a cautionary note on best practices, emphasizing the avoidance of whitespaces in file and folder names to streamline terminal operations.

In this tutorial, we delve deep into the realm of file and folder management in a programming environment. We begin by discussing the powerful "rm" command which is used for deleting files and folders. While the command is straightforward for file deletion, to remove directories especially those containing files, we utilize the "-r" option to apply the deletion recursively. We are cautioned about the potency and irreversible nature of "rm", as it permanently deletes files without a chance for recovery in most configurations. To accentuate the risks, a demonstration reveals the dire consequences of an accidental deletion. As an alternative, we're introduced to the "rmdir" command, specifically designed to safely remove empty directories. This offers a layer of protection against unintentional data loss, as attempting to delete a directory containing files – even hidden ones – results in an error. To navigate through hidden files, the "ls -a" command becomes invaluable, displaying all files, including the concealed ones. In wrapping up, we're shown a practical combination of commands for safe and effective file management. As learners, we're now better equipped and cautioned in file handling, leading to a quiz and an exercise to solidify these concepts.

Test your knowledge about File Management

In this exercise, the focus is on mastering file management commands within bash. Participants are encouraged to use both the terminal and their native file explorer concurrently, allowing them to visualize the effects of each command they execute. While the instructor demonstrates solely using the terminal, viewers are urged to simultaneously observe the real-time changes in their file systems. Such an approach not only solidifies understanding but emphasizes the significance of these commands in bash workflows. As the course progresses, the exercises become more application-driven, but establishing this foundational knowledge is paramount. The lecture then transitions to presenting the detailed exercise in text format.

Exercise: Website File Management

In this video, the instructor guides us through essential file management tasks from the exercise before. Initially, we focus on navigation commands, where the instructor demonstrates changing the current working directory to the desktop from the home directory. Emphasizing efficiency, the instructor showcases the autocomplete feature using the tab key. We then explore the creation of directories and files, specifically creating a directory called 'temp_website' and populating it with 'index.html', 'style.css', and 'script.js'. The tutorial progresses to demonstrate the movement and renaming of files, such as relocating 'style.css' into a new 'styles' directory, and simultaneously renaming 'script.js' to 'index.js' and moving it to a 'scripts' folder. The instructor further exemplifies directory and file management by creating a 'pages' sub-directory, copying and renaming files within it, and moving certain files to the parent directory. Concluding the session, the instructor covers the deletion of specific files, renaming tasks, and the removal of entire directories. The tutorial emphasizes practicing these commands for proficiency, setting the foundation for the remainder of the course.

In this lecture, we delve into the concept of filename expansion, commonly referred to as 'globbing' within bash. We uncover the mechanics behind how bash rewrites our commands even before execution, using predefined wildcard characters, especially the asterisk or star symbol. These wildcards allow for pattern-based file searches, making it easier to work with multiple files simultaneously. A hands-on demonstration showcases the efficiency of moving a group of images with a single move command, emphasizing the strength of bash. We also touch on the distinction between bash and other shells, like ZSH, noting minor yet crucial differences. The lecture underscores the importance of quotations in bash, specifically how using them can disable globbing, which can be vital when dealing with filenames that contain wildcard characters. It's highlighted that globbing is distinct from regular expressions, and while both may appear similar, they have entirely different syntaxes. We wrap up with a hint at diving deeper into the many facets of bash, promising a future exploration of its extensive capabilities and introducing more wildcard characters in the subsequent lecture.

In this video, we delve into advanced techniques for file globbing in Bash. We explore how to use wildcards like the single question mark, which matches any one character, in contrast to the asterisk that matches any sequence of characters. The use of square brackets is introduced to define character ranges, offering more specificity in file matches. The importance of correct syntax is underscored through practical examples, highlighting potential pitfalls and best practices. The double asterisk wildcard, exclusive to Bash 4.0 and above, is highlighted for its capability to traverse nested folders. Throughout, the instructor emphasizes the power and flexibility of Bash, pointing to its efficiency in file management while also hinting at potential complexities that will be discussed in subsequent lessons.

In this lecture, the importance of careful globbing in bash is highlighted due to its potential pitfalls. Globbing, which involves using patterns to match filenames, can be hazardous, especially when combined with the rm command, which is used for removing files. Bash does not differentiate between a folder and a parameter, potentially leading to unintended deletions. An illustrative concern is the existence of a file named "-rf", a valid filename, but also a command option for recursive force deletion. When used in an rm command with a wildcard (*), the file could unintentionally be parsed as a parameter, leading to unexpected file deletions. To safeguard against such mistakes, it is recommended to prepend filenames with ./ to make it clear that they are filenames and not parameters. This approach ensures that the commands behave predictably, preserving the intended files. In essence, while bash's features like globbing are powerful, they come with responsibilities, necessitating users to understand and act cautiously.

Test your knowledge about Globbing
Download the materials for the next exercise

In this lecture, the instructor introduces an exercise to practice 'globbing', a technique to match filenames or strings based on specified patterns. We are placed in a scenario where we run a company requiring urgent extraction of documents — specifically Excel and PDF files for the months January and February. The folder structure presented contains various files named by month and type, across different departments like purchasing and sales. Given the challenge's potential real-world scale (thousands of files), the goal is to efficiently locate and extract the relevant files. Key tips shared include the use of custom ranges to pinpoint months, the combination of custom ranges with wildcards for more specific matching, and the ability to consolidate multiple patterns in a single command for convenience. We are provided a zip file with the necessary folder structure and are encouraged to first attempt the challenge using Bash, emphasizing its power and concise command structures. A sample solution is available in the subsequent lecture for those needing guidance or verification.

Exercise: Navigate a nested folder structure using Globbing

In this segment, the instructor shows us a possible solution to the exercise before and demonstrates the process of selectively extracting specific files using the Bash command line. By using the directory structure displayed through the 'tree' command, the focus is on extracting Excel (XLSX) and PDF files from folders representing the months of January and February. The instructor illustrates this, using wildcard characters and numerical ranges to filter and copy the desired files to an 'export' directory. This process not only underscores the efficiency of Bash for managing and moving bulk files but also introduces the topic of expansions. These expansions will later be elaborated upon in the course, highlighting the capability to further streamline commands. The main takeaway is the potency and flexibility Bash offers in handling file operations. The instructor then wraps up with a look forward to the upcoming content in the course.

In this bonus lecture, the instructor introduces the "find" program, an executable tool available in Unix environments. Rather than relying on bash globbing with wildcards to search by name, "find" offers a more advanced search capability. By specifying a path, users can efficiently search for files or directories. For instance, searching in the current working directory using "find ." provides a list of all files and folders therein, including hidden ones. However, searching extensive directories like the entire hard drive may consume considerable time. The "find" command comes with filter options, allowing users to narrow down their search based on file type, modification date, size, and other criteria. For example, "-type F" lists only files, and using "mtime" can find files modified within a set number of days. Moreover, the command can perform actions, like deleting files based on certain criteria. Exercising caution is vital, especially when making changes to the file system. To explore more "find" options, users are encouraged to refer to the manual pages or online documentation. Upcoming sections will provide hands-on practice and a quiz to test the understanding of the "find" command.

File Management (Part 2) - Handle Text Files

In this chapter, we delve into the significance and utility of pipes in Bash, demonstrating the inefficiency of traditional file handling through an example of counting files in a directory. Using the ls command, output redirection, and word count, we highlight potential pitfalls and emphasize the importance of file location. As we progress, we unveil the power of pipes in Bash, which enables the seamless combination of programs, eliminating the need for temporary files and streamlining tasks like string manipulation with just a single line of code.

The eBook in the next lecture

In this lecture, the instructor demonstrates how to read files using the command line. The cat command is introduced as the primary tool for displaying the entire contents of a file directly in the terminal. However, a cautionary note is provided about accidentally displaying binary data, which can lead to terminal malfunctions. The limitation of the cat command becomes evident when working with larger files, such as the "Romeo and Juliet" e-book used in the demonstration. The buffer capacity of terminals may prevent viewing the entire content of such large files. As solutions to these challenges, the head and tail commands are introduced, which allow users to view the beginning and end of files, respectively. They can be parameterized to show a specific number of lines. The lecture ends by hinting at a forthcoming method to read longer text files in their entirety.

In this video, we delve into the utility of the 'less' command for reading large files in the command line, offering a more efficient approach than the 'cat' program. Demonstrated with a text version of "Romeo and Juliet", we explore navigation techniques using arrow keys, and shortcuts like 'F' for forwarding a page and 'B' for going backward. The instructor introduces the ability to jump to a certain percentage of the content, showcased by navigating directly to the middle (50%) of the book. We also learn how the '=' key reveals our exact position in the file. The video goes on to highlight more features of 'less', including the '-N' option to display row numbers, enhancing user orientation. A pivotal functionality discussed is the search feature, where a forward search is executed with '/', and a backward search with '?'. After pinpointing the desired keyword, exiting the 'less' interface is achieved by simply pressing 'Q'. The instructor emphasizes that while the discussed features offer a strong foundation, 'less' boasts many more capabilities valuable for managing extensive text files via the command line.

In this programming course video, we delve into methods for assessing the size of a file before performing operations on it, to prevent overwhelming the terminal. We explore the WC (word count) program, a commonly used tool to provide data about a file. This command gives the count of lines, words, and bytes in a file, and can be customized using parameters like -L for lines, -W for words, and -C for bytes. It's explained that -C stands for "character" due to historical reasons, even though the nature of characters has evolved. The tutorial demonstrates using WC on Shakespeare's "Romeo and Juliet" to showcase its utility.

We then transition to another method using the DU (disk usage) program. This tool calculates the size of items in a directory or specific files. An important distinction is drawn between how macOS and Linux systems interpret file size units, leading to a discussion about POSIX standards. While macOS adheres to the POSIX standard using a block size of 512 bytes, the instructor concedes that the kilobyte representation in Linux is more intuitive. To bridge this difference, options like -h (human-readable) and changing block sizes are introduced.

In summary, viewers learn how to utilize the WC and DU programs to gauge file sizes and content, emphasizing the importance of understanding system-specific nuances in interpreting results.

In this lecture, we delve into editing files directly through the terminal. Although Bash doesn't come with a built-in text editor, several third-party software solutions allow users to modify text files from the command line. Among these, Pico and Nano stand out. Originating from Pico, Nano provides a more feature-rich experience while maintaining simplicity, ensuring users face minimal learning curves. Another advanced option is Vim, an evolved version of V. Vim offers a distinctive editing experience, fostering high efficiency once mastered, despite its steep learning curve. The focus of this course is on Nano, primarily due to its straightforwardness. Many systems come pre-installed with some of these editors, but they can also be added using commands such as 'brew install' for Mac or 'apt-get install' for Ubuntu Linux. Demonstrating Nano, we observe its intuitive interface and essential functions, like saving and exiting. Nano excels for minor changes, especially on remote servers or without a graphical user interface. While sophisticated editors like Visual Studio Code offer extended capabilities, the convenience and immediacy of terminal-based editors, especially Nano, prove invaluable in many scenarios.

Test your knowledge about Handling Text Files

In this lecture, the instructor introduces an exercise to analyze a simulated real-world log file. We are challenged to use shell commands to determine the file's nature, its size (in MBs, KBs, or GBs), and its line count, emphasizing the importance of utilizing the shell over graphical user interfaces. This is essential because real-world scenarios might require accessing logs on remote servers without a user interface. Despite the log file being small to cater to those with limited internet bandwidth, we are encouraged to approach it as though it were a more extensive, real-world log. Using commands like 'cut' is discouraged in favor of others that provide insights into the file's content. After completing the exercise, we will have access to a quiz testing their understanding and a sample solution for reference in subsequent lectures.

Exercise Materials: Analyze a Log File

Test if you got your answers right.

In this video, we look at the solution of the exercise before and explore the intricacies of analyzing a log file, specifically the "access.log" file. The instructor demonstrates how to view the beginning and end of this file using the head and tail commands, respectively. The video provides insight into the log's structure, revealing details such as IP addresses (both IPv4 and IPv6), timestamps, file requests, HTTP protocols, and response codes like 404. Significantly, it is identified that this log format is from an Apache web server, known as the combined log file format. This format provides valuable information like the referrer, which denotes where a user originated, and the user agent, indicating the browser type and version. The instructor points out the challenges in parsing user agents, using the example of the Chrome browser with a misleading "Mozilla" tag. Towards the end, the video elaborates on ways to analyze the log further. We learn how to determine the number of lines in a log with wc -l and how to check a file's size using the du command with the -h flag. The demonstration underscores the importance of efficient analysis techniques, especially for voluminous logs.

Redirection - Manage Data Streams

In this chapter, we delve into the mechanics of streams in Bash, highlighting how to redirect program outputs into files. Previously, executing commands would directly display the results on our terminal. Now, you'll gain the prowess to save this output, writing it to files, and also using files as input for other programs. Importantly, we'll tackle error management, empowering you to selectively redirect errors or choose to discard them while viewing the main output on your screen. This knowledge is fundamental, not only for mastering Bash streams and understanding Unix concepts but also for constructing intricate Bash commands and enhancing your terminal interactions. Although we touch upon core concepts here, a deeper exploration awaits in subsequent chapters. Let's embark on this journey, familiarizing ourselves with Bash streams and their immense capabilities.

In this Video, we delve into writing output to a file in the terminal. Initially, the manual method of copying command output and pasting it into a file is explored, but its limitations concerning the terminal and operating system are highlighted. Moving on, the instructor introduces the '>' operator, demonstrating its utility in redirecting the output of a command directly into a file, whether it's creating a new one or overwriting an existing one. The video progresses to unveil the '>>' operator which appends content to a file instead of overwriting it. We further observe the distinction between normal output and error output. While the former is successfully redirected to a file, error messages are not captured. This curious discrepancy paves the way for an upcoming lesson on output channels in bash and their nuances.

In this video, the intricacies of bash's behavior, especially in relation to communication channels or standard streams, are explored. Every program, from basic commands like 'ls' or 'cat', interacts with the terminal primarily through standard input (stdin), standard output (stdout), and standard error output (stderr). The stdin allows a program to receive input from the keyboard, while stdout is where a program sends its results or messages to be displayed on the screen. Meanwhile, stderr is reserved for error messages, which, by default, also get displayed on the screen.

The discussion then delves into the concept of redirection, emphasizing the role of the '>' operator in directing stdout to a file. This means one can overwrite or append the output to a file rather than viewing it in the terminal. The 'du' command exemplifies this, differentiating between stdout and stderr. Interestingly, errors, when they occur, are displayed in the terminal as they're sent to stderr. The '>' operator by default only caters to stdout, leaving the audience in anticipation about how to redirect stderr, a topic reserved for the next lecture.

In this lecture, we delve into the nuances of redirecting standard streams, particularly focusing on STD error. The purpose of redirecting the standard error varies: sometimes we aim to dismiss non-relevant program errors, and at other times, we wish to save these errors for future reference. Before, we've examined redirecting STD out, denoted as stream 1. Stream 0 represents STD in, and stream 2 corresponds to STD error. Redirecting STD out to a file can be concisely represented as '>', or more verbosely, as '1>'. To redirect STD error, we use '2>', guiding it to a desired file. We can also simultaneously redirect both streams to separate files. Through terminal demonstrations, we explore the 'du' command, which showcases both STD out and STD error outputs. By redirecting these streams, terminal output can be managed, stored in files, or even appended. Occasionally, it's crucial to disregard certain outputs in scripts. To achieve this, we can direct undesired outputs to '/dev/null', effectively discarding them. The lecture sets the stage for a subsequent discussion about transforming errors into standard outputs for versatile handling.

Test your knowledge about Standard Streams and Redirection

In the lecture, we delve into redirecting Standard Error (stderr to Standard Output (stdout) in Bash. This capability is crucial as it facilitates storing both types of outputs in a single file, eliminating the need to repeatedly specify the file name for redirection. An in-depth example explains how both STD ERR and STD OUT can be redirected into a file. A vital observation emerges: when output is displayed in the terminal, STD OUT is line-buffered, meaning it waits until a complete line is formed before showing it. Conversely, when sending to a file, STD OUT waits for more data, typically around 4KB, before writing, which can affect the order of the outputs in the file due to STD ERR being unbuffered. The lecture also hints at an upcoming topic: the concept of "pipes" in Bash. This foundational understanding prepares learners for more advanced command chaining. The lecture will continue by examining the importance of the order in which commands are executed.

The video explores the criticality of order in redirecting standard output (stdout) and standard error (stderr) in the terminal. It commences by illustrating two commands, one with the proper sequence and another with an altered sequence of redirections. By doing so, it demonstrates that the modified order results in stderr being printed to the terminal, with only the stdout written to the specified file. The crux of this behavior lies in how the terminal parses the commands: initially, both stdout and stderr target the terminal. When parsed, stdout is redirected to the defined file, and subsequently, stderr is redirected to the same destination as stdout. If the order is reversed, stderr displays on the terminal because the redirect for stdout occurs later. Emphasizing the sequence when redirecting outputs ensures expected outcomes. As an extension, the video hints at an upcoming lecture focusing on the standard input (stdin), broadening the scope of terminal stream redirections.

In this video, we delve into the concept of standard streams used by programs to interact with our terminal, specifically focusing on stdin (standard input) after briefly revisiting stdout (standard output) and stderr (standard errors). We explore the redirection of these streams and illustrate how to convert stderr into stdout. Demonstrating through the wordcount-l and cat programs, we witness the handling of user input in the terminal, where inputs can be fed directly or redirected from a file. This foundational understanding will be crucial as we progress into the next chapter, which emphasizes combining commands. By the end, you will have garnered a comprehensive understanding of standard streams in Unix systems and how they're employed for program interaction. A quiz awaits in the subsequent lecture to test your grasp on the material.

Test your knowledge about Advanced Redirection
Pipes - Data Processing through Command Chaining

In this chapter, we delve into the world of pipes and bash. We begin by illustrating the complexity of counting files in a directory without using pipes—highlighting a multi-step process that involves using the ls command, redirecting output to a temporary file, counting lines with word count, and then deleting that temporary file. An essential note is made on the order of file creation and output redirection, as it may influence the count. Demonstrating the inefficiency of this method paves the way for the introduction of pipes in bash. Pipes seamlessly combine multiple programs, eliminating the need for intermediate steps or temporary files. By the end of this chapter, we master how to harness the power of pipes for tasks like counting files or basic string manipulation in just one line of bash code.

In this video, the instructor introduces the concept of pipes in the shell, a powerful mechanism that allows the output of one command to be passed as the input for another, enabling users to chain commands for enhanced functionalities. Using pipes, the output from a command, displayed on the standard output (stdout), can be passed as an input to another command. This process can be chained with numerous commands. As an illustration, the instructor uses the 'ls' command, which lists files in a directory. The output can be piped into the 'word count' (wc) program to determine the number of files. Additionally, the instructor delves into redirecting the standard error and standard output, emphasizing the importance of the correct order. Through practical examples, the video underscores the compactness and efficiency of using pipes in the bash shell, which can condense operations that might take many lines in other programming languages into a singular, concise command. The lesson wraps up by highlighting that many commonly-used commands integrate well with pipes, with a promise to cover these commands in upcoming lectures.

In this video, we explore the tee command, a tool that allows simultaneous display and saving of standard output (stdout) to both the terminal and a file. Previously, developers had to choose between redirecting output to a file or displaying it. Using tee, one can do both; for example, echo hello world can be saved to hello.txt and shown on the terminal. Appending to a file is also possible with the -a parameter.

The video demonstrates tee's value in complex pipe chains, capturing intermediate outputs and aiding in error handling. With the ping program example, tee captures both successful outputs and error messages. Errors, often sent to standard error (stderr), can be redirected to stdout and captured using tee. This is beneficial for documentation, especially when providing proof of internet disruptions to service providers.

In essence, the tee command is an invaluable utility for simultaneous output display and documentation.

In this video, we delve into the usage and functionality of two essential tools for data manipulation: sort and unique. The sort program organizes the contents of a file or standard input, primarily in alphabetical order, without altering the original file. Beyond its default settings, it offers various options like sorting in reverse, by numerical order, or by specific columns. Notably, the -k parameter enables sorting based on columns, such as last names versus first names. We then transition to the unique command, which removes duplicate lines from sorted data. A crucial observation is that for unique to work effectively, the data must be pre-sorted since it only identifies consecutive duplicate lines. An efficient amalgamation of sort and unique can be achieved using the sort -u flag. Additionally, we explore how to isolate only the duplicate entries from a file with the combination of sort and unique -d. The demonstration accentuates the potency of pipes in processing and transforming data streams, making these tools invaluable for data analysis and manipulation tasks.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops advanced Bash scripting skills for automation and complex tasks, empowering users with knowledge in loops, tests, APIs, and JSON
Taught by seasoned experts, ensuring learners benefit from years of real-world industry experience in the field of Linux and command line mastery
Covers a comprehensive range of topics, delving into Bash CLI mastery, in-depth knowledge of Linux processes and permissions, and advanced Bash scripting techniques
Emphasizes practical implementation through hands-on projects, quizzes, and real-world scenarios, ensuring knowledge retention and application
Provides an immersive learning experience that fosters comprehension over rote memorization, making the educational journey more engaging and rewarding
Suitable for learners pursuing careers in Linux-related roles, such as System Administrators, Web Developers, Software Engineers, and DevOps Engineers

Save this course

Save Mastering Linux: The Comprehensive Guide to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Mastering Linux: The Comprehensive Guide with these activities:
Follow online tutorials
Following online tutorials will help you learn new skills and reinforce what you have learned in the course.
Show steps
  • Find tutorials on topics that you are interested in
  • Watch the tutorials
  • Take notes on important concepts
  • Complete any practice exercises
  • Apply what you have learned to your own projects
Join a study group
Joining a study group will allow you to connect with other students, share knowledge, and work together to better understand the course material.
Show steps
  • Find a group online or in your community
  • Meet regularly to discuss the material
  • Work on assignments together
  • Prepare for exams together
  • Help each other out with questions
Attend a Linux workshop
Attending a Linux workshop will provide you with an opportunity to learn from experts and network with other Linux enthusiasts.
Browse courses on Linux
Show steps
  • Find a workshop in your area
  • Register for the workshop
  • Attend the workshop
  • Take notes and ask questions
  • Follow up with the workshop organizers
Five other activities
Expand to see all activities and additional details
Show all eight activities
Read the Linux Command Line
Reviewing this book will teach you the fundamentals of navigating the Linux command line, providing a more solid foundation for the course.
Show steps
  • Purchase a copy of the book
  • Read chapters 1-5
  • Complete the practice exercises
  • Take notes on important concepts
  • Review your notes regularly
Build a Linux Virtual Machine
Building a Linux virtual machine will give you hands-on experience with Linux and help you set up a testing environment for the course.
Browse courses on Virtualization
Show steps
  • Choose a virtualization software
  • Download and install the software
  • Create a new virtual machine
  • Install Linux on the virtual machine
  • Configure the virtual machine
Practice Bash Scripting
Practicing Bash scripting will help you develop the skills necessary to automate tasks and improve your productivity in the course.
Browse courses on Bash Scripting
Show steps
  • Find a list of Bash scripting exercises
  • Complete 10-15 exercises
  • Review your solutions
  • Identify areas for improvement
  • Repeat steps 1-4 until you are comfortable with Bash scripting
Create a simple Linux script
Creating a simple Linux script will help you apply your skills and gain a deeper understanding of Linux.
Browse courses on Bash Scripting
Show steps
  • Choose a project idea
  • Write the script
  • Test the script
  • Document the script
  • Share the script with others
Write a blog post about Linux
Writing a blog post about Linux will help you solidify your knowledge and share what you have learned with others.
Browse courses on Linux
Show steps
  • Choose a topic
  • Research the topic
  • Write the post
  • Edit and proofread the post
  • Publish the post

Career center

Learners who complete Mastering Linux: The Comprehensive Guide will develop knowledge and skills that may be useful to these careers:

Reading list

We haven't picked any books for this reading list yet.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Mastering Linux: The Comprehensive Guide.
Linux and Bash for Data Engineering
Most relevant
Bash Scripting and Shell Programming (Linux Command Line)
Most relevant
Shell Scripting: Discover How to Automate Command Line...
Bash Shell Scripting: From Zero To Automation
Web Applications and Command-Line Tools for Data...
Processing and Filtering Text Data with Bash and Z Shell
Bash Scripting, Linux and Shell Programming Complete Guide
The Bash Shell and Basic Scripting in Linux
Scripting for Security with Bash
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser