grep -rl "beginner" ./blog

Linux Tutorials for Beginners

Start here. Guides written for people who are new to Linux: what the commands do, why the system is arranged the way it is, and how to get comfortable at the terminal without memorizing anything.

129 articles

How to Reset a Forgotten Root or User Password on Linux Locked out of your own Linux machine? How to reset the root or a user password from the GRUB menu with init=/bin/bash or rd.break, from Ubuntu's recovery mode, or from a live USB, including SELinux and encrypted-disk caveats. fzf and ripgrep Explained: Faster Searching in the Terminal ripgrep searches file contents faster than grep and respects .gitignore; fzf turns any list into an interactive fuzzy finder. How each works, the shell keybindings that change daily terminal use, and how to combine them. The ip Command Explained: Addresses, Routes, Links, and Neighbours ip replaced ifconfig, route, and arp as the standard Linux networking tool. How its object and command structure works, the commands you will actually use for addresses, links, routes, and neighbours, and why changes do not survive a reboot. Bash Quoting Explained: The Single Biggest Source of Shell Bugs Word splitting and glob expansion on unquoted variables cause more shell breakage than any other single mistake. Here is exactly what each quoting style does and when to use it. nl, rev, and fold: Three Small Text Utilities Worth Knowing Numbering lines with control over the format, reversing characters on a line, and wrapping long lines to a width. Each solves one problem that is awkward otherwise. seq Command Explained: Generating Number Sequences seq prints a range of numbers, with control over step, padding, and separator. It drives loops, generates test data, and builds padded filenames in one line. basename and dirname Explained: Splitting Paths in Scripts Two small commands that take a path apart reliably. They handle the edge cases that string manipulation gets wrong, and knowing the shell alternatives is worth as much as knowing the commands. comm Command Explained: Comparing Two Sorted Files comm tells you what is only in the first file, only in the second, and in both. It is faster and clearer than diff for set comparisons, with one strict requirement. paste Command Explained: Merging Files Side by Side paste joins lines from several files into columns, or folds a single column into rows. It is the counterpart to cut and the quickest way to rebuild a table from separate pieces. column Command Explained: Making Terminal Output Readable Ragged output from cut, awk, or a CSV becomes an aligned table with one extra command. column is the least known and most immediately satisfying formatting tool on Linux. split Command Explained: Breaking Large Files Into Pieces Split a file by size, by line count, or into a fixed number of chunks, then put it back together with cat. Useful for transfer limits, parallel processing, and log handling. tee Command Explained: Writing to a File and the Screen at Once tee splits a stream so it goes to a file and onward down the pipeline. It is also the standard way to write to a root-owned file without running your editor as root. wc Command Explained: Counting Lines, Words, and Bytes wc counts what passes through it. Most of its real use is one flag, -l, at the end of a pipeline, and there are a few traps worth knowing about what it counts as a line. Gaming on Linux: How Proton Works and What Actually Runs Linux gaming stopped being a compromise when Valve shipped Proton and put it in a handheld. Here is what the compatibility layer is doing under the hood, what still fails, and how to get the best out of it. PipeWire vs PulseAudio: What Replaced Linux Audio and Why PipeWire took over Linux audio without most users noticing, and it handles video and screen sharing too. Here is what it replaced, why the change mattered, and how to troubleshoot it when something is silent. SSH Keys Explained: Generating, Using, and Not Losing Them Password authentication over SSH is a liability on any internet-facing server. Key authentication is better in every way and takes two minutes to set up. Here is how keys work, which type to generate, and how to manage them properly. Wayland vs X11 Explained: Why Linux Replaced Its Display Server X11 is nearly four decades old and was designed for a world of dumb terminals and networked mainframes. Wayland is the replacement that is now the default nearly everywhere. Here is what actually changed and what it means for you. Bash Scripting Part 2: Conditionals, Loops, and Functions Your first script ran commands top to bottom. Real scripts make decisions, repeat work, and organize into functions. This is the control-flow layer of bash: if, test brackets, for, while, case, and functions with local variables. The cut Command Explained: Extracting Columns from Text cut slices lines of text by delimiter, field number, or character position. It is the fastest way to pull one column out of a CSV, a log line, or /etc/passwd without reaching for awk. Docker Compose Basics: From docker run to Declarative Stacks Docker Compose turns long docker run commands into a version-controlled YAML file describing your whole stack: services, volumes, networks, and environment. Here is the mental model plus a working template. Symlinks vs Hard Links Explained: The ln Command and How Links Actually Work Symbolic links point to a path; hard links point to the data itself. Understanding the difference explains why one survives renames, why the other breaks, and what ln -s actually creates. The tr Command Explained: Translating and Deleting Characters tr transforms characters in a stream: uppercasing text, squeezing repeated spaces, deleting carriage returns, and converting delimiters. Small tool, constant usefulness in pipelines. The watch Command Explained: Rerunning Commands on Repeat watch reruns any command at a fixed interval and shows the latest output full-screen, turning one-shot commands like df, ss, or sensors into live monitors. Flags like -d highlight what changed between runs. The xargs Command Explained: Turning Output Into Arguments xargs takes lines of input and turns them into command arguments, letting you chain find, grep, and other tools into pipelines that act on hundreds of files at once. Here is how it works and where it bites. The awk Command Explained awk is a field-based text processing language built into every Linux system, ideal for extracting columns, summing values, and reformatting structured text. This guide covers its pattern-action model, built-in variables, and common one-liners. Bash History Explained Bash remembers every command you type, and knowing how to search, reuse, and configure that history turns repetitive typing into a handful of keystrokes. This guide covers the history command, reverse search, event expansion like !! and !n, and the variables that control what gets remembered. Building Software From Source on Linux When software is not packaged for your distribution, or you need a newer version, compiling from source is the fallback. This guide covers the standard configure/make/install workflow, installing build dependencies, and cleanly uninstalling afterward. Checking Network Connections: ss and nmcli Explained ss inspects active sockets and connections, and nmcli configures and queries NetworkManager. Together they cover the two most common modern network troubleshooting and configuration tasks on Linux. curl and wget Explained curl and wget are the two standard command-line tools for making HTTP requests and downloading files on Linux. This guide covers when to use each, common flags, and practical examples for downloads, APIs, and scripting. The dd Command Explained dd copies raw data block by block, which makes it the standard tool for writing bootable USB drives, cloning disks, and wiping data securely. It is also famous for having no confirmation prompt, this guide covers safe usage and why it earned the nickname "disk destroyer." Docker and Podman: Container Basics on Linux An introduction to running containers on Linux with Docker and Podman: images, containers, the core commands you need day to day, and how the two tools differ. Environment Variables and PATH Explained Environment variables control how your shell and the programs it launches behave, and PATH is the most important one, determining which commands your system can find. This guide covers viewing, setting, and permanently persisting environment variables. GPG Basics on Linux GPG provides encryption and digital signatures using public-key cryptography, and it underlies how Linux package repositories verify software has not been tampered with. This guide covers generating a key pair, encrypting and decrypting files, and signing and verifying. I/O Redirection and Pipes Explained Every Linux command reads from standard input and writes to standard output and standard error. This guide explains those three streams and how to redirect and chain them with >, >>, <, 2>&1, pipes, and xargs. Job Control: bg, fg, jobs, and nohup Explained How to run multiple tasks in a single terminal session, move commands between foreground and background, and keep a process running after you disconnect, using Bash job control and nohup. journalctl and /var/log Explained Linux logs live in two places on most modern systems: the systemd journal, queried with journalctl, and traditional plain-text files under /var/log. This guide covers reading, filtering, and following logs in both. Managing User Accounts on Linux How to create, modify, and remove user accounts on Linux with useradd, usermod, userdel, and passwd, plus what actually lives inside /etc/passwd and /etc/shadow. Mounting Drives and /etc/fstab Explained How Linux attaches storage devices to the filesystem tree with mount and umount, how to find a drive to mount, and how to make mounts persist across reboots using /etc/fstab. The /proc Filesystem Explained /proc is a virtual filesystem that exposes live kernel and process information as ordinary files, and it is what tools like ps, free, and top actually read from. This guide covers what /proc is, its most useful files, and how to read it directly. Reading Man Pages Explained Man pages are the built-in reference documentation for nearly every Linux command, and their terse formatting confuses a lot of newcomers. This guide covers man page structure, sections, searching, and the other help tools available from the command line. The sed Command Explained sed is the standard Linux stream editor for find-and-replace, line deletion, and text transformation from the command line. This guide covers substitution syntax, in-place editing, addressing specific lines, and common real-world patterns. Swap Space Explained What swap actually does on Linux, how it differs from RAM, how to create a swap partition or swapfile, and how to tune swappiness for desktops, laptops, and servers. tmux Basics for Beginners tmux lets you run terminal sessions that survive disconnects and split a single terminal into multiple panes. This guide covers sessions, windows, panes, and the detach/reattach workflow that makes tmux essential for remote work over SSH. Understanding Process Signals on Linux Signals are how Linux tells a running process to stop, reload, or respond to an event. This guide covers the most important signals, the real difference between SIGTERM and SIGKILL, and how to send and handle them. Vim Basics for Beginners Vim is the terminal text editor you will run into on nearly every Linux system, and its modal design confuses almost everyone at first. This guide covers modes, essential navigation, editing, saving, and quitting, enough to use vim confidently for everyday config file edits. What Is WSL? Explained WSL lets Windows run a real Linux environment alongside it, without dual-booting or a traditional virtual machine. This guide covers what WSL actually is, WSL1 vs WSL2, installing a distribution, and what it is and is not a good fit for. Wildcards vs Regular Expressions Explained Shell wildcards and regular expressions look similar and are constantly confused, but they are different systems used in different places. This guide explains shell globbing patterns, regex basics, and which one applies where. Writing Your First Bash Script A practical introduction to Bash scripting: the shebang line, variables, arguments, conditionals, loops, and functions, with runnable examples you can adapt for real automation tasks. cat Command Explained cat prints file contents to the terminal and concatenates multiple files together. This guide covers basic usage, combining files, numbering lines, and why cat is not the right tool for very large files. cd Command Explained cd changes your shell's current working directory. This guide covers relative and absolute paths, useful shortcuts like cd - and cd .., and why cd must be a shell builtin rather than a separate program. chmod Command Explained chmod changes the read, write, and execute permissions on files and directories. This guide covers numeric mode, symbolic mode, recursive changes, and the most common chmod values used in practice. chown Command Explained chown changes which user and group own a file or directory. This guide covers the user:group syntax, recursive ownership changes, and common patterns for web servers and shared directories. cmp Command Explained cmp compares two files byte by byte and reports the first point where they differ, making it the right tool for binary files where diff does not apply. This guide covers basic usage and when to reach for cmp instead of diff. cp Command Explained cp copies files and directories in Linux. This guide covers recursive copying, preserving permissions and timestamps, and the difference between cp and cp -a for backups and migrations. diff Command Explained diff compares two text files and shows exactly what changed between them. This guide covers basic usage, the unified diff format, comparing entire directories, and how diff output feeds into patch. The /etc Directory Explained /etc is where Linux keeps system-wide configuration files. This guide explains what belongs in /etc, how it is organized, and the safe way to edit configuration without breaking your system. file Command Explained the file command identifies what type of file something actually is, based on its content rather than its name. This guide covers how file works, why it matters, and common use cases. find Command Explained find searches the live filesystem with powerful filtering by name, size, date, type, and permissions. This guide covers the essential find patterns, including running commands on results with -exec. Finding Files in Linux: locate vs find vs which vs whereis Linux offers several different tools for finding files, each suited to a different situation. This guide compares locate, find, which, and whereis, and explains which one to reach for. grep Command Explained grep searches text for matching patterns and is one of the most powerful everyday tools in Linux. This guide covers basic usage, recursive search, regular expressions, and common grep flags. head Command Explained head prints the first lines of a file, the fastest way to peek at large files without opening them fully. This guide covers basic usage, combining head with pipes, and how it compares to tail. The /home Directory Explained The /home directory is where every user on a Linux system keeps their personal files, settings, and configuration. This guide covers how /home is structured, why it often lives on its own partition, and how to manage it safely. less Command Explained less is a terminal pager for viewing large files one screen at a time. This guide covers navigation, searching inside less, and why it loads faster than more or cat for huge files. The groups Command Explained The groups command shows which groups a user belongs to, the basis for a large part of Linux's access control model. This guide covers primary vs supplementary groups, /etc/group, and managing group membership. locate Command Explained locate finds files by name almost instantly by searching a prebuilt index instead of scanning the disk live. This guide covers basic usage, updatedb, and why locate results can occasionally be stale. ls Command Explained ls lists the contents of a directory and is one of the most used commands in Linux. This guide covers the essential flags, how to read the output of ls -l, and practical patterns for everyday use. mkdir Command Explained mkdir creates new directories in Linux. This guide covers basic usage, the -p flag for nested paths, setting permissions on creation, and common errors mkdir throws. mv Command Explained mv moves and renames files and directories in Linux. This guide covers how mv works on the same filesystem versus across filesystems, safe overwrite habits, and common renaming patterns. The /opt Directory Explained /opt is reserved for self-contained, third-party software packages that keep all their files in one place. This guide explains what belongs in /opt, how it differs from /usr, and what to expect when you find something installed there. patch Command Explained patch applies the changes described in a diff file to real files on disk. This guide covers basic usage, applying and reversing patches, and how patch and diff work together. pwd Command Explained pwd prints the full path of your current working directory. This guide covers how pwd works, the difference between pwd and pwd -P, and how it interacts with symbolic links. rm Command Explained rm deletes files and directories in Linux, permanently and without a recycle bin. This guide covers safe usage, the -r and -f flags, and how to avoid the most common catastrophic rm mistakes. The Root Directory (/) Explained Every Linux filesystem starts at a single directory called root, written as /. This guide explains what root actually is, what lives directly inside it, and why Linux has no drive letters. rwx Permissions Explained Every file and directory in Linux carries a read, write, and execute permission for the owner, group, and everyone else. This guide breaks down exactly what r, w, and x mean, especially the surprising difference on directories. sort Command Explained sort arranges lines of text in order, alphabetically or numerically. This guide covers basic usage, numeric versus alphabetic sorting, sorting by specific fields, and combining sort with uniq. stat Command Explained stat shows detailed metadata about a file, far beyond what ls -l provides. This guide covers reading stat output, understanding inode numbers, and the three different timestamps every file has. The Sticky Bit Explained The sticky bit restricts file deletion in shared, world-writable directories so only the file owner can remove their own files. This guide explains how it works, where it is used by default, and how to set it. tail Command Explained tail prints the last lines of a file and can follow a growing file in real time. This guide covers basic usage, the essential tail -f for watching live logs, and how it compares to head. The /tmp Directory Explained /tmp is Linux's designated scratch space for temporary files, often cleared on every reboot. This guide explains how /tmp works, why it is sometimes stored in RAM, and how it differs from /var/tmp. touch Command Explained touch creates empty files and updates file timestamps in Linux. This guide covers basic usage, updating access and modification times independently, and common uses in scripts and build systems. umask Explained umask controls the default permissions given to every new file and directory you create. This guide explains how umask subtracts from the maximum possible permissions and how to set it permanently. uniq Command Explained uniq removes or counts adjacent duplicate lines in text. This guide explains why uniq requires sorted input first, how to count occurrences, and how to show only duplicated or only unique lines. The /usr Directory Explained /usr holds the vast majority of installed software, libraries, and documentation on a Linux system. This guide explains what belongs in /usr, how it differs from /bin and /opt, and why the historic /usr merge happened. The /var Directory Explained /var holds the data that changes constantly while Linux runs: logs, caches, spools, and databases. This guide explains what lives in /var, why it grows over time, and how to manage its disk usage. bzip2 Explained bzip2 sits between gzip and xz in the compression tradeoff, offering better ratios than gzip at slower speed using the Burrows-Wheeler transform. This guide covers usage, how it compares to gzip and xz, and where it still makes sense today. The free Command Explained free is the fastest way to check RAM and swap usage on Linux. This guide covers every column in its output, why "available" matters more than "free", and how to read swap usage correctly. gzip Explained gzip is the most widely used compression tool on Linux, balancing speed and compression ratio for everyday use. This guide covers basic usage, compression levels, how it compares to bzip2 and xz, and its role in tar.gz archives and HTTP compression. Monitoring Disk Usage on Linux A practical guide to checking disk space on Linux using df and du, understanding the difference between filesystem-level and directory-level usage, tracking down what is actually filling a disk, and watching out for inode exhaustion. The tar Command Explained tar is the standard Linux tool for bundling files into a single archive, and it can compress that archive at the same time using gzip, bzip2, or xz. This guide covers core tar flags, common archive formats, and practical create/extract/list examples. The unzip Command Explained unzip extracts .zip archives on Linux, with options to list contents first, extract to a specific directory, and handle password-protected or partially corrupted archives. This guide covers the practical day-to-day usage. The uptime Command Explained uptime is the fastest way to check how long a Linux system has been running and how busy it is. This guide covers reading its output, the three load average numbers, and how uptime relates to system reboots and patching. The zip Command Explained zip is the cross-platform archive format most useful when files need to be shared with Windows or macOS users. This guide covers basic usage, password protection, recursive archiving, and how zip differs from the tar-plus-compressor approach common on Linux. BIOS vs UEFI: What's the Difference? BIOS and UEFI are the firmware interfaces that initialize hardware before the OS loads. Understanding the difference matters for installing Linux, setting up dual boot, and configuring Secure Boot. This guide explains both clearly. Common Myths About Linux Linux is surrounded by misconceptions that keep people from trying it. This article addresses the most persistent myths about difficulty, software availability, gaming, security, and hardware support. Creating a Bootable USB Drive for Linux A bootable USB drive is the standard way to install Linux on a computer. This guide covers creating one on Linux, Windows, and macOS using dd, Balena Etcher, Rufus, and Ventoy -- and how to verify your ISO before you write it. Cron Jobs Explained Cron is the classic Unix job scheduler. This guide covers the crontab syntax, the five time fields, user and system crontabs, the cron.d and cron.daily directories, environment variables, logging, and common pitfalls. Desktop Environments Explained: GNOME, KDE, XFCE, and More A desktop environment is the graphical interface you interact with on Linux. GNOME, KDE Plasma, XFCE, and others each make different trade-offs around design, resource use, and customisation. This guide explains how they work and which to choose. DNS Explained DNS translates human-readable hostnames into IP addresses. This guide covers how the resolution process works, the most important record types, and the Linux tools used to query and debug DNS. How to Dual Boot Linux and Windows Dual booting lets you run Linux and Windows on the same machine, choosing which to start at boot. This guide covers the right order to install them, how to resize Windows partitions, how GRUB handles the boot menu, and common problems to avoid. Full Disk Linux Installation: A Step-by-Step Guide A full disk installation dedicates an entire drive to Linux, giving you the simplest setup, best performance, and no dual-boot complexity. This guide walks through the complete process from booting the installer to a working system. How Linux Permissions Work Linux permissions control who can read, write, and execute every file and directory on the system. This guide explains the permission model from the basics through to special bits, umask, and ACLs. IP Addresses Explained IP addresses are how devices on a network identify themselves. This guide covers IPv4 and IPv6 addressing, CIDR notation, public vs private addresses, subnetting basics, and how Linux assigns and displays addresses. Keeping Linux Updated Staying current with security patches is the single highest-impact thing you can do to protect a Linux system. This guide covers update commands for every major distro, how to automate security updates, and how to handle kernel updates safely. Killing Processes in Linux Killing a process on Linux means sending it a signal. Understanding the difference between SIGTERM and SIGKILL, how to find the right process to target, and what to do when a process refuses to die covers everything you need. Linux Desktop vs Linux Server: What Is the Difference? Linux desktop and Linux server share the same kernel but diverge sharply in defaults, software, use cases, and administration. Here is a practical breakdown of what separates them. Linux File System Hierarchy Explained Linux puts every file in a specific place for a reason. This guide walks through the Filesystem Hierarchy Standard, explains what belongs where, and covers the modern changes that have reshaped the traditional layout. Linux Filesystem Basics: What Every Directory Is For Linux organizes all files under a single root directory, with each subdirectory serving a specific purpose defined by the Filesystem Hierarchy Standard. This guide explains what lives in /, /home, /etc, /var, /usr, /opt, and /tmp -- and why. Linux History Linux began as a hobby project by a Finnish student in 1991 and became the operating system powering most of the internet. This is the story of how it happened. Linux Kernel vs Operating System: What's the Difference? The kernel and the operating system are not the same thing. Understanding the difference explains why "Linux" runs on everything from servers to smartphones, and why your distro matters as much as the kernel inside it. Linux Networking Basics Understanding how Linux handles networking -- interfaces, IP addresses, routing, DNS, and the tools to inspect all of it -- is foundational for anyone administering a Linux system or working with servers. Linux Security Best Practices A practical security checklist for Linux systems -- covering user privileges, SSH hardening, firewall setup, automatic updates, file integrity monitoring, and auditing tools like Lynis. Linux Users, Groups, and Ownership Explained Linux is a multi-user operating system built around a clear identity model. Understanding users, groups, UIDs, GIDs, sudo, and the root account is essential for administering any Linux system. Linux vs Windows vs macOS Linux, Windows, and macOS each have genuine strengths and real weaknesses. This guide breaks down the honest differences in cost, software, gaming, privacy, hardware, and who should use each. LTS vs Rolling Release: What's the Difference? Linux distributions come in two broad flavors: LTS (Long Term Support) with infrequent stable releases, and rolling release with continuous updates. Understanding the trade-offs helps you choose the right model for your workload. Managing Services with systemctl systemctl is the command-line interface to systemd. This guide covers starting, stopping, enabling, inspecting, and troubleshooting services, along with the most useful systemctl commands for daily system administration. Network Troubleshooting Commands A practical guide to diagnosing Linux network problems -- from basic connectivity checks with ping, through route tracing with mtr and traceroute, to packet capture with tcpdump and DNS debugging with dig. ps vs top vs htop: Monitoring Linux Processes ps, top, and htop are the three main tools for inspecting running processes on Linux. Each serves a different purpose. This guide covers what each tool is best for, the most useful commands and keyboard shortcuts, and how to get the information you actually need. Snap vs Flatpak vs AppImage: Universal Linux Packages Explained Snap, Flatpak, and AppImage each solve the problem of distributing Linux software across distributions, but with very different approaches. Here is how each works, what each is best for, and when to use which. SSH Beginner's Guide SSH (Secure Shell) lets you log into remote Linux systems, run commands, and transfer files over an encrypted connection. This guide covers key-based authentication, the SSH config file, port forwarding, and common SSH patterns. Sudo Explained sudo lets non-root users run commands with elevated privileges in a controlled, auditable way. This guide covers how sudo works, how to configure /etc/sudoers, and common patterns for granting the right level of access. Ubuntu vs Fedora vs Debian Ubuntu, Fedora, and Debian are three of the most influential Linux distributions. Each makes different trade-offs around stability, freshness, and philosophy. This guide compares them directly so you can choose the right one. Understanding Linux Packages and Repositories Linux software is distributed as packages, installed from signed repositories, and managed by package managers. This guide explains how the whole system works, from .deb and .rpm files through to Flatpak, Snap, and building from source. Understanding Linux Processes Every running program on Linux is a process. Understanding process IDs, states, parent-child relationships, signals, and how the kernel schedules work is essential for diagnosing problems and administering any Linux system. Updating Linux Safely Keeping a Linux system updated is straightforward -- until an update breaks something. This guide covers how to update safely, how to snapshot before major changes, how to hold back problematic packages, and how to recover when something goes wrong. What Is Linux? Linux is the kernel at the heart of most of the internet, Android, and a growing share of desktops. Here is what it actually is, how it got here, and why it matters in 2026. What Is Open Source Software? Open source software makes its source code publicly available for anyone to read, modify, and distribute. Here is what that means in practice, why it matters, and how it underpins most of the modern internet. What Is systemd? systemd is the init system and service manager used by most major Linux distributions. Understanding what it does, how it is structured, and why it replaced older init systems explains a lot about how modern Linux works. Which Linux Distro Should Beginners Choose? Choosing a Linux distribution as a beginner does not have to be overwhelming. This guide cuts through the noise and gives concrete recommendations based on what you need and what you already know. Why Linux Is Everywhere Linux runs on the majority of the world's web servers, every Android phone, most supercomputers, countless embedded devices, and much of the cloud. This article explains why it won.