⚡ Tutorials

A collection of hands-on tutorials to learn Linux techniques step by step. From basic commands to advanced skills, each tutorial includes rich examples and detailed explanations.

No matching articles found. Try changing your search criteria.

🚀 Basic Operations

Beginner
mktemp Command: Creating Safe Temporary Files
Intermediate ⏱️ ~8 min

mktemp Command: Creating Safe Temporary Files

Why fixed-name or $$ temp files are dangerous, and how mktemp creates unique, owner-only temporaries that trap cleans up reliably.

Read more →
read Command: Interactive Input in Shell Scripts
Beginner ⏱️ ~9 min

read Command: Interactive Input in Shell Scripts

Learn how the read command captures keyboard input and reads files line by line, explained through Lina and Linny-senpai's dialogue. Covers -p, -s, and while read.

Read more →
file Command: Detecting File Types
Beginner ⏱️ ~8 min

file Command: Detecting File Types

Extensions can lie. Learn how the file command inspects content to reveal what a file really is, explained through Lina and Linny-senpai's dialogue.

Read more →
printf Command: Formatted Output in the Shell
Beginner ⏱️ ~9 min

printf Command

Learn printf with Linny-senpai and Lina. Covers the difference from echo, format specifiers like %s, %d, and %f, width padding, and escape sequences.

Read more →
watch Command: Monitor Output at Intervals
Beginner ⏱️ ~10 min

watch Command

Learn with Linny-senpai and Lina! Rerun a command at a fixed interval and monitor how its output changes. Covers -n intervals, -d diff highlighting, quoting pipes, and how to exit.

Read more →
wc Command: Counting Lines, Words, and Bytes
Beginner ⏱️ ~9 min

wc Command

Learn with Linny-senpai and Lina! Master wc basics (-l lines / -w words / -c bytes / -m characters), the `ls | wc -l` counting pattern, and why bytes and characters differ for multibyte text.

Read more →
How to Use pwd, cd, and ls - Linux Basic Commands Tutorial
Beginner ⏱️ ~10 min

How to Use pwd, cd, and ls

Learn with Linny-senpai and Lina! Master pwd (location), ls (list), and cd (move) - the 3 essential commands for beginners.

Read more →
How to Use mkdir, touch, and echo - Create Files in Linux
Beginner ⏱️ ~12 min

How to Use mkdir, touch, and echo

Learn with Linny-senpai and Lina! Master mkdir (create directories), touch (create files), and echo/cat (view contents).

Read more →
How to Use cp, mv, and rm - Linux File Operations Guide
Beginner ⏱️ ~10 min

How to Use cp, mv, and rm

Learn basic file operations: creation, editing, copying, moving, and deletion. Includes introduction to text editor basics.

Read more →
tree Command: Visualizing Directory Structure
Beginner ⏱️ ~8 min

tree Command: Visualizing Directory Structure

When ls alone makes it hard to grasp a layout, tree visualizes the whole directory structure at once. Learn to limit depth with -L, show folders only with -d, and exclude node_modules with -I.

Read more →
Environment Variables Basics - Configuration and Practical Usage
Beginner ⏱️ ~15 min

Environment Variables Basics - Configuration and Practical Usage

Learn Linux environment variables for beginners. From echo and env to export, PATH, and persistence with .bashrc, taught through Lina and Linny-senpai's dialogue.

Read more →
locate, which, and whereis - Three Ways to Find Commands in Linux
Beginner ⏱️ ~15 min

locate, which, and whereis - Three Ways to Find Commands in Linux

Learn the differences between locate, which, and whereis. Solve "where did it install?" and "which python is running?" with the right command for the job.

Read more →
md5sum and sha256sum: Verifying File Integrity
Beginner ⏱️ ~10 min

md5sum and sha256sum: Verifying File Integrity

Learn with Linny-senpai and Lina! What a hash is, computing one with sha256sum, verifying with -c, the difference between corruption and tampering, and why MD5 is discouraged today.

Read more →

🔐 Permissions & Process Management

Intermediate
How to Use chmod and chown - Linux File Permissions Guide
Beginner ⏱️ ~12 min

How to Use chmod and chown

Detailed explanation of file and directory permissions, chmod, chown, umask and other permission-related commands.

Read more →
chmod vs chown vs sudo - When to Use Each in Linux
Intermediate ⏱️ ~12 min

How to Choose Between chmod, chown, and sudo

Practical learning of advanced permission management including special permissions, ACL, and security configuration.

Read more →
How to Fix Permission Denied in Linux - Practical Troubleshooting
Intermediate ⏱️ ~12 min

Fixing Permission Denied at the Root Cause

Detailed explanation of permission configuration best practices and real-world examples used in system administration.

Read more →
How to Use ps, top, and kill - Linux Process Management Tutorial
Beginner ⏱️ ~10 min

How to Use ps, top, and kill

Learn process concepts and process management commands including ps, kill, jobs, and nohup.

Read more →
Getting Started with Job Control - jobs, fg, bg, and Ctrl+Z
Beginner ⏱️ ~12 min

Getting Started with Job Control - jobs, fg, bg, and Ctrl+Z

Learn shell job control through Linny-senpai and Lina's dialogue: pause with Ctrl+Z to free your terminal, swap with fg/bg, list with jobs, and run with & — including the kill %1 pitfall — for absolute beginners.

Read more →
nohup, disown, and screen: Keeping Processes Running After Logout
Intermediate ⏱️ ~12 min

nohup/disown/screen - Keeping Processes Running After Logout

Three ways to keep processes running after SSH disconnect or terminal close. Learn nohup (before start), disown (after start), and screen (full session reattach), plus when to use each.

Read more →
nice and renice Basics - Controlling Process Priority
Intermediate ⏱️ ~12 min

nice and renice Basics - Controlling Process Priority

Control CPU scheduling priority with nice and renice. Covers the nice value range (-20 to 19), setting priority at launch, changing it dynamically for running processes, and root vs user permission rules.

Read more →
Linux Process Management in Practice - Job Control, pkill, and nice
Intermediate ⏱️ ~12 min

Linux Process Management in Practice

Learn practical techniques including system monitoring, performance tuning, and troubleshooting.

Read more →
fuser: Finding Processes Using Files
Intermediate ⏱️ ~10 min

fuser: Finding Processes Using Files

Find the culprit behind umount "target is busy" with fuser, then kill it safely. Includes a fuser vs lsof comparison.

Read more →
taskset: Setting CPU Affinity in Linux
Intermediate ⏱️ ~10 min

taskset: Setting CPU Affinity in Linux

Pin a process to specific CPU cores with taskset. Launch-time pinning with -c, runtime reassignment with -p, plus benchmarking and core-isolation workflows.

Read more →
chroot: Changing the Root Directory to Isolate an Environment
Intermediate ⏱️ ~10 min

chroot: Changing the Root Directory to Isolate an Environment

Switch the root directory a process sees with chroot. Covers preparing shared libraries, recovering a broken system from a live USB, and why chroot is not a security boundary.

Read more →
User Management Basics: Getting Started with useradd, usermod, and userdel
Intermediate ⏱️ ~12 min

User Management Basics: useradd, usermod, and userdel

Learn how to create users with useradd, modify group memberships and attributes with usermod, and delete accounts with userdel. Covers sudo privileges and group management patterns.

Read more →
Linux Group Management Basics: groupadd, groupmod, and Access Control
Intermediate ⏱️ ~12 min

Linux Group Management Basics: groupadd, groupmod, and Access Control

Learn how to create groups with groupadd, modify them with groupmod, and manage members with usermod -aG and gpasswd. Covers /etc/group format, shared directory setup, and sudo privilege patterns.

Read more →
Understanding sudo vs su - Safe Privilege Escalation in Linux
Intermediate ⏱️ ~12 min

Understanding sudo vs su - Safe Privilege Escalation in Linux

Learn the difference between sudo and su, why sudo is the recommended approach, and how to configure sudoers safely with visudo. Covers common mistakes and a practical quick-reference for daily use.

Read more →
sudoers Configuration Basics - Delegating Privileges Safely
Intermediate ⏱️ ~12 min

sudoers Configuration Basics - Delegating Privileges Safely

Learn how to configure /etc/sudoers safely using visudo. Covers syntax, NOPASSWD, per-command delegation, and sudoers.d best practices on Ubuntu.

Read more →
Understanding umask - Controlling Default File Permissions
Intermediate ⏱️ ~9 min

Understanding umask - Controlling Default File Permissions

Learn how umask determines default permissions for new files and directories. Covers the AND NOT calculation, common values like 022/077/002, and how to make changes persistent via .bashrc or /etc/profile.

Read more →
chown and chgrp Basics - Changing File Ownership in Linux
Intermediate ⏱️ ~9 min

chown and chgrp Basics - Changing File Ownership in Linux

Learn how to change file owner and group with chown and chgrp. Covers user:group syntax, -R recursive changes, and common web server deployment patterns.

Read more →
Understanding SUID, SGID, and Sticky Bit - Special Permission Bits in Linux
Intermediate ⏱️ ~12 min

Understanding SUID, SGID, and Sticky Bit - Special Permission Bits in Linux

Learn how SUID, SGID, and Sticky Bit work in Linux. Understand special permission bits with practical chmod examples and security guidance.

Read more →
SELinux Introduction: Your First Step to Reading Denial Logs
Intermediate ⏱️ ~12 min

SELinux Introduction: Your First Step to Reading Denial Logs

Learn SELinux basics — check modes with getenforce, read AVC denial logs, and use ausearch and audit2why to identify what is being blocked and why.

Read more →
User and Group Management in Practice - Setting Up Multi-User Environments
Intermediate ⏱️ ~15 min

User and Group Management in Practice - Setting Up Multi-User Environments

A practical guide to managing users and groups with useradd, usermod, and groupadd. Covers multi-user setup and reading /etc/passwd on Linux.

Read more →
passwd and chage: Password and Account Aging
Intermediate ⏱️ ~9 min

passwd and chage: Password and Account Aging

Manage passwords and account locking with passwd, and password aging and expiry with chage. Includes how to read /etc/shadow.

Read more →
who, w, and last: Inspecting Logins and Sessions
Beginner ⏱️ ~8 min

who, w, and last

Who is logged into this server right now? When did they log in? Use who, w, and last to inspect logged-in users, what each one is doing, and past login history. Covers reboot history and failed logins too, explained step by step in a friendly dialogue.

Read more →

💪 Advanced Skills

Advanced
How to Use head, tail, and Pipes - Linux File Operations Advanced
Intermediate to Advanced ⏱️ ~22 min

How to Use head, tail, and Pipes

Learn advanced file operation techniques including links, compression/decompression, and backup technologies.

Read more →
find, grep, awk Master Guide - From Basics to Practice
All Levels ⏱️ ~10 min

How to Use find, grep, and awk

Practical learning of advanced file search and processing techniques using find, grep, awk. Aimed at professional-level mastery.

Read more →
fd: A Simpler, Faster Alternative to find
Intermediate ⏱️ ~9 min

fd: A Simpler Alternative to find

find has complex syntax and is slow. With fd, just type `fd pattern` for a recursive search that respects .gitignore. From the fdfind install gotcha to extensions, types, and exec.

Read more →
How to Use find, grep, and awk - Linux Text Search Tutorial
Beginner to Intermediate ⏱️ ~20 min

How to Use find, grep, and awk - Basics

Systematic learning of basic file search and text processing commands.

Read more →
Advanced grep and awk Techniques - find/grep/awk Master Series
Intermediate to Advanced ⏱️ ~25 min

grep and awk Advanced Techniques

Learn advanced techniques including complex search conditions, regular expressions, and awk programming.

Read more →
Combining find, grep, and awk - Practical Techniques for Real Work
Advanced ⏱️ ~25 min

How to Combine find, grep, and awk

Detailed explanation of practical use cases and best practices used in real-world work.

Read more →
find, grep, awk Exercises - Troubleshooting and Practical Skill Building
Expert ⏱️ ~20 min

find, grep, and awk Exercises

Detailed learning of professional-level advanced techniques and optimization methods.

Read more →
Shell Script Tutorial for Beginners - Bash Variables, If, and Loops
Beginner~Intermediate ⏱️ ~15 min

How to Write Shell Scripts

Systematic learning of shell script writing basics, variables, control structures, and functions.

Read more →
Shell Scripting Practical - Functions, Arrays, and File Operation Techniques
Intermediate~Advanced ⏱️ ~20 min

Shell Scripting in Practice

Learn practical shell script creation methods, debugging techniques, and performance optimization.

Read more →
bash Parameter Expansion — Understanding ${var:-x} and Related Syntax
Intermediate ⏱️ ~12 min

bash Parameter Expansion — Understanding ${var:-x} and Related Syntax

bash parameter expansion cheat sheet covering default values, substring extraction, pattern removal, replacement, and case conversion with practical examples.

Read more →
getopts: Parsing Command-Line Options in Bash
Intermediate ⏱️ ~11 min

getopts: Parsing Command-Line Options in Bash

Parse command-line options (-a, -b value) robustly in Bash with getopts. Covers optstring, OPTARG, OPTIND, silent-mode error handling, and how getopts differs from getopt.

Read more →
trap - Handling Signals and Cleanup in Bash
Intermediate ⏱️ ~11 min

trap - Handling Signals and Cleanup in Bash

Use trap to catch signals (Ctrl-C, kill) and run reliable cleanup. Covers the EXIT pseudo-signal, cleanup functions, and combining trap with set -e for robust scripts.

Read more →
Heredoc Basics - Embedding Multiline Strings in Shell Scripts
Intermediate ⏱️ ~12 min

Heredoc Basics - Embedding Multiline Strings in Shell Scripts

Learn how to use heredoc (<<EOF) to embed multiline strings in shell scripts. Covers variable expansion control, stripping indentation with <<-, writing to files, and practical use cases with SSH and databases.

Read more →
Bash Strict Mode: set -euo pipefail Explained
Intermediate ⏱️ ~10 min

Bash Strict Mode: set -euo pipefail Explained

Catch hidden bugs early with set -euo pipefail. Learn errexit, nounset, pipefail, their pitfalls, and IFS settings for safer shell scripts.

Read more →
bash History Tips - Making the Most of Your Command History
Beginner ⏱️ ~15 min

bash History Tips - Making the Most of Your Command History

Learn to reuse bash commands with Ctrl+R search, !!, !$, and history numbers. Covers HISTSIZE and HISTCONTROL settings for efficient shell use.

Read more →
How to Use journalctl - Linux Log Investigation Guide
Intermediate ⏱️ ~10 min

journalctl Basics: Log Investigation

Learn how to check logs in Ubuntu (systemd) environments. Master filtering by time, service, and priority level for effective troubleshooting.

Read more →
journalctl in Practice - Filtering Logs from the systemd Journal
Intermediate ⏱️ ~12 min

journalctl in Practice - Filtering Logs from the systemd Journal

Master journalctl filtering. Filter logs by unit, time range, priority, and fields to quickly extract exactly what you need from the systemd journal.

Read more →
dmesg: Reading Kernel Ring Buffer Messages
Intermediate ⏱️ ~9 min

dmesg: Reading Kernel Ring Buffer Messages

Read the kernel ring buffer with dmesg. From permissions, timestamps, and level filters to triaging disk I/O, OOM, and hardware faults.

Read more →
sysctl: Tuning Kernel Parameters on Linux
Intermediate ⏱️ ~9 min

sysctl: Tuning Kernel Parameters on Linux

Read, change, and persist Linux kernel parameters with sysctl. Covers runtime changes, /etc/sysctl.d drop-ins, precedence, and verification.

Read more →
ulimit: Understanding Resource Limits
Intermediate ⏱️ ~10 min

ulimit: Understanding Resource Limits

Control how many resources a process can use with ulimit. Covers soft vs hard limits, the open files limit, persisting limits via limits.conf and systemd, and diagnosing Too many open files.

Read more →
How to Use tar Command - Compress, Extract, and Avoid Mistakes
Intermediate ⏱️ ~8 min

tar Basics: Compression, Extraction & Avoiding Mistakes

Learn tar command for compression, extraction, and listing contents. Understand .tar.gz/.tgz/.tar differences and how to prevent extraction accidents.

Read more →
gzip vs bzip2 vs xz vs zstd - Choosing a Compression Format
Intermediate ⏱️ ~10 min

gzip vs bzip2 vs xz vs zstd - Choosing a Compression Format

Compare gzip, bzip2, xz, and zstd on ratio and speed, then choose per use case. Covers tar integration, compression levels, and multithreading.

Read more →
zip and unzip Basics: Cross-Platform Archives on Linux
Beginner ⏱️ ~10 min

zip and unzip Basics

Learn with Lina and Linny-senpai! Cross-platform compression made simple. Zip it up, unzip it open, and fix garbled filenames from Windows archives along the way.

Read more →
Pipes and Redirection Basics: Understanding Data Flow in Linux
Beginner ⏱️ ~12 min

Pipes and Redirection Basics

A beginner-friendly dialogue tutorial. Learn how `|`, `>`, `>>`, and `2>&1` work by following the flow of stdin, stdout, and stderr — and combine commands with confidence.

Read more →
Getting Started with nano - The Beginner-Friendly Editor Before Vim
Beginner ⏱️ ~10 min

Getting Started with nano - The Beginner-Friendly Editor Before Vim

Learn nano through dialogue with Lina and Linny-senpai! Open, edit, save (Ctrl+O), and exit (Ctrl+X) without memorizing anything — shortcuts are always shown at the bottom of the screen.

Read more →
Vim Basics: Essential Commands and Practical Techniques
Intermediate ⏱️ ~14 min

Vim Basics - Essential Commands and Practical Techniques

A practical Vim guide covering modes, motions, edits, search/replace, and save/quit. Stop getting stuck and learn the minimal .vimrc setup that works on any server.

Read more →
Fixing "command not found" Errors - Solutions When Commands Are Missing
Intermediate ⏱️ ~12 min

Fixing "command not found" Errors

Diagnose and fix "command not found" on Linux. Covers PATH, hash cache, sudo secure_path, pip --user, and cron with practical templates.

Read more →
Package Management Basics: Getting Started with apt and yum
Intermediate ⏱️ ~14 min

Package Management Basics: apt and yum

Practical guide to apt (Debian/Ubuntu) and yum/dnf (RHEL/CentOS) package management. Side-by-side command map, install/update workflows, and troubleshooting steps.

Read more →
dnf Package Management - Modern Tool for Fedora and RHEL-Based Systems
Intermediate ⏱️ ~12 min

dnf Package Management - Modern Tool for Fedora and RHEL-Based Systems

Learn dnf, the standard package manager for Fedora and RHEL-based systems. Covers install, update, remove, search, repo management, module streams, and rollback with practical examples.

Read more →
Package Management Troubleshooting: Resolving Dependency Errors
Intermediate ⏱️ ~10 min

Package Management Troubleshooting: Resolving Dependency Errors

Systematically fix apt and yum/dnf dependency errors. Covers dpkg repair, lock file conflicts, GPG key issues, and a step-by-step diagnosis flow for Ubuntu, CentOS, and Fedora.

Read more →
Git and Linux Basics - Getting Started with Version Control
Intermediate ⏱️ ~14 min

Git and Linux Basics - Version Control

Learn Git basics on Linux: install, configure, init, add, commit, and push. Covers Permission denied, SSH key auth, line endings, and exec bit pitfalls specific to Linux.

Read more →
Network Commands Basics: Checking Connectivity with ip and ifconfig
Intermediate ⏱️ ~11 min

Network Commands Basics - Checking Connectivity with ip and ifconfig

Learn the difference between ip and ifconfig and isolate "no network" issues layer by layer: link → IP → route → reachability → DNS, plus a net-tools migration cheat sheet.

Read more →
netstat and ss Basics: Monitoring Ports and Connections
Intermediate ⏱️ ~10 min

netstat and ss Basics: Monitoring Ports and Connections

Learn how to check listening ports, established connections, and TCP states with netstat and ss, including a netstat-to-ss migration cheat sheet for everyday use.

Read more →
Network Troubleshooting in Practice - Diagnosing Issues with ping, traceroute, and dig
Intermediate ⏱️ ~12 min

Network Troubleshooting in Practice - ping, traceroute, and dig

A 3-step approach to diagnosing network failures: ping for reachability, traceroute for routing, dig for DNS. Covers common patterns — gateway stops, DNS failures, and blocked ports — with real examples.

Read more →
curl and wget Basics: HTTP Communication from the Command Line
Beginner ⏱️ ~12 min

curl and wget Basics - HTTP Communication from the Command Line

Learn with Linny-senpai and Lina! Understand the curl vs wget split, the -O/-o trap, redirect follow with -L, header inspection with -I, JSON POST, and Bearer token auth — all from a beginner's perspective.

Read more →
SSH Key Authentication Setup - Passwordless and Secure Login
Intermediate ⏱️ ~12 min

SSH Key Authentication Setup - Passwordless and Secure Login

Generate an ED25519 key pair with ssh-keygen, deploy the public key using ssh-copy-id, and connect without a password. Covers permissions, ~/.ssh/config for multi-server management, and ssh-agent for passphrase caching.

Read more →
~/.ssh/config Tips: Organizing Your SSH Connection Settings
Intermediate ⏱️ ~8 min

~/.ssh/config Tips - Organizing Your SSH Connection Settings

Replace long ssh commands with short aliases using ~/.ssh/config. Covers ProxyJump for bastion host connections, per-host IdentityFile selection, KeepAlive settings, and Host * for global defaults.

Read more →
Ubuntu scp/rsync Basics: File Transfer Between Servers
Intermediate ⏱️ ~10 min

Ubuntu scp/rsync Basics: File Transfer Between Servers

Learn how to transfer files between servers using scp and rsync on Ubuntu. Includes copy-paste templates for common scenarios.

Read more →
realpath and readlink: Resolving Absolute Paths and Symlinks
Intermediate ⏱️ ~8 min

realpath and readlink

Learn how realpath and readlink resolve symlinks and relative paths into absolute paths. Covers -f / -e / -m, --relative-to, and safe scripting patterns.

Read more →
rsync in Practice: Backups and Mirroring
Intermediate ⏱️ ~12 min

rsync in Practice: Backups and Mirroring

Use rsync differential sync for real work - mirroring with --delete, generational backups with --link-dest, excludes, and bandwidth control done safely.

Read more →
openssl Command: Certificates, Hashing, and Encryption
Intermediate ⏱️ ~10 min

openssl Command Basics

Learn practical openssl in one pass. Create certificates, compute hashes, encrypt files with AES, and check server certificate expiry with copy-paste commands.

Read more →
GPG Basics: Encrypting, Decrypting, and Signing Files
Intermediate ⏱️ ~10 min

GPG Basics: Encrypting, Decrypting, and Signing Files

Encrypt and decrypt files with gpg and verify signatures. Learn when to use public-key vs password mode, with copy-paste examples.

Read more →
SSH Port Forwarding: Local, Remote, and Dynamic Tunnels
Intermediate ⏱️ ~10 min

SSH Port Forwarding: Local, Remote, and Dynamic Tunnels

Use -L, -R, and -D to reach databases behind bastions, expose local apps, and run a SOCKS proxy with safe, repeatable SSH tunnels.

Read more →
tcpdump Basics: Capturing and Reading Packets
Intermediate ⏱️ ~10 min

tcpdump Basics

Capture packets with tcpdump. From first capture to BPF filters, pcap files, and Wireshark - a practical playbook for diagnosing network issues.

Read more →
lsof - Listing Open Files and Ports
Intermediate ⏱️ ~10 min

lsof - Listing Open Files and Ports

Find which process holds a file, socket, or port with lsof. Solve device is busy, port conflicts, and deleted-but-open files with copy-paste commands.

Read more →
Getting Started with nc (netcat) - The Versatile Tool for Port Testing and Debugging
Intermediate ⏱️ ~12 min

Getting Started with nc (netcat) - The Versatile Tool for Port Testing and Debugging

Learn nc (netcat) for port testing, simple server setup, file transfer, and banner grabbing. Practical debugging patterns for Linux network diagnostics.

Read more →
iptables and nftables Basics - Introduction to Packet Filtering
Intermediate ⏱️ ~12 min

iptables and nftables Basics - Introduction to Packet Filtering

Learn the fundamentals of iptables and nftables on Linux. Set up SSH and HTTP rules, block ports, and persist your firewall configuration on Ubuntu.

Read more →
Firewall Configuration Basics: Getting Started with ufw and firewalld
Intermediate ⏱️ ~12 min

Firewall Configuration Basics: Getting Started with ufw and firewalld

Learn how to configure Linux firewalls with ufw (Ubuntu) and firewalld (RHEL/CentOS). Covers port rules, default policies, zones, and practical patterns for web and database servers.

Read more →
/etc/hosts and /etc/resolv.conf - Understanding DNS Resolution Priority
Intermediate ⏱️ ~10 min

/etc/hosts and /etc/resolv.conf - Understanding DNS Resolution Priority

How /etc/hosts and /etc/resolv.conf shape DNS resolution on Linux — priority rules in nsswitch.conf, systemd-resolved, and practical override patterns.

Read more →
nmcli: Managing Networks from the Command Line
Intermediate ⏱️ ~10 min

nmcli: Managing Networks from the Command Line

Manage NetworkManager with nmcli — check status, connect to Wi-Fi, set static IPs, and activate connections with copy-paste commands.

Read more →
traceroute and mtr: Tracing Network Paths and Finding the Slow Hop
Intermediate ⏱️ ~9 min

traceroute and mtr: Tracing Network Paths and Finding the Slow Hop

Use traceroute to map the path and mtr to measure per-hop loss and latency. Learn what * means and how to read loss to find the slow or lossy segment.

Read more →
modprobe and lsmod: Managing Kernel Modules
Intermediate ⏱️ ~10 min

modprobe and lsmod: Managing Kernel Modules

Use lsmod to inspect loaded kernel modules and modprobe to load or remove them with dependencies. Covers modinfo, blacklist, and load-at-boot.

Read more →
Linux Error Messages Dictionary: Common Errors, Causes, and Fixes
Intermediate ⏱️ ~14 min

Linux Error Messages Dictionary

A reverse-lookup dictionary of common Linux error messages. Quickly find the cause and fix for command not found, Permission denied, No space left on device, OOM, and more.

Read more →
sed Basics - Text Substitution with the Stream Editor
Intermediate ⏱️ ~12 min

sed Basics - Text Substitution with the Stream Editor

Master the five core sed patterns (substitute, delete, print, address, multi-expression), the safe pattern for in-place editing with `-i.bak`, and when to choose BRE vs ERE.

Read more →
Getting Started with sort and uniq: Sorting Data and Removing Duplicates
Beginner ⏱️ ~10 min

Getting Started with sort and uniq

Learn with Linny-senpai and Lina! Master sort and uniq for sorting, deduplicating, and counting data, including the classic `sort | uniq -c | sort -rn` frequency ranking pattern.

Read more →
xargs in Practice: Converting Standard Input to Command Arguments
Intermediate ⏱️ ~10 min

xargs in Practice - Converting Standard Input to Command Arguments

Master xargs to "paste" pipe contents into the argument slot of the next command. Learn safe patterns with find -print0 | xargs -0, the -I {} placeholder, and -P parallel execution while avoiding common pitfalls.

Read more →
jq Basics: How to Process JSON in the Shell
Intermediate ⏱️ ~12 min

jq Basics - How to Process JSON in the Shell

A practical guide for shaping JSON from curl and APIs with jq. Master filters, select, map, raw vs compact output, and safe patterns for piping JSON in production scripts.

Read more →
cut, paste, and tr Basics: Column Extraction and Character Conversion
Intermediate ⏱️ ~10 min

cut, paste, and tr Basics - Column Extraction and Character Conversion

Use cut to extract CSV/TSV columns, paste to merge files side by side, and tr to translate or delete characters. Combine them in pipelines for powerful text processing.

Read more →
diff and patch Basics - Getting and Applying Diffs
Intermediate ⏱️ ~10 min

diff and patch Basics - Getting and Applying Diffs

Learn how to generate file diffs with diff -u and apply them with patch. Covers unified diff format, directory comparison, -p0 vs -p1 strip levels, dry runs, and reverting with patch -R.

Read more →
comm and join: Comparing and Joining Files
Intermediate ⏱️ ~10 min

comm and join: Comparing and Joining Files

Use comm to show common lines and differences across two files in 3 columns, and join to merge rows on a shared key. Includes the sorted-input gotcha.

Read more →
pv: Monitoring Pipe Progress with a Progress Bar
Intermediate ⏱️ ~9 min

pv: Monitoring Pipe Progress with a Progress Bar

Use pv (Pipe Viewer) to put a progress bar on any pipe. End the anxiety of staring at a silent dd or cp wondering if it is still running.

Read more →
hexdump and xxd: Inspecting Binary Data in Hex
Intermediate ⏱️ ~9 min

hexdump and xxd: Inspecting Binary Data in Hex

Compare hexdump, xxd, and od at a glance. Use -C, xxd -r, and od -t x1z to peek at binary, spot CRLF and BOM bytes, and edit bytes by hand.

Read more →
Getting Started with tee - Splitting Command Output
Beginner ⏱️ ~12 min

Getting Started with tee - Splitting Command Output

Learn with Lina and Linny-senpai! Save pipeline output to a file while keeping it flowing to the next command. Covers -a append, multiple file targets, the sudo tee pattern for root-owned files, and using tee as a pipeline debugger.

Read more →
awk One-Liners - 30 Practical Patterns for Real-World Use
Intermediate ⏱️ ~15 min

awk One-Liners - 30 Practical Patterns for Real-World Use

30 practical awk one-liners organized by use case. Field extraction, aggregation, log analysis, and CSV processing — copy-paste ready patterns for real-world use.

Read more →
column, pr, and fmt - Understanding Text Formatting Commands
Intermediate ⏱️ ~10 min

column, pr, and fmt - Understanding Text Formatting Commands

Learn Linux text formatting commands column, pr, and fmt — align tabular data, paginate output for printing, and reformat paragraph text on the command line.

Read more →
Reading Logs with less, more, and tail - Mastering Pager Commands
Beginner ⏱️ ~15 min

Reading Logs with less, more, and tail

Learn with Lina and Linny-senpai! Tired of `cat` scrolling past? Master less for page navigation and search, tail for the newest entries, and tail -f for real-time log monitoring.

Read more →
Getting Started with stat - Reading File Metadata
Intermediate ⏱️ ~12 min

Getting Started with stat - Reading File Metadata

Learn to read stat output on Linux. Covers atime/mtime/ctime timestamp differences, inode number usage, format options for scripting, and filesystem-level statistics with stat -f.

Read more →
find -exec vs xargs: Choosing the Right Approach
Intermediate ⏱️ ~15 min

find -exec vs xargs: Choosing the Right Approach

Learn when to use find -exec (semicolon vs plus form) vs xargs. Covers the -print0 | xargs -0 safety pattern for filenames with spaces, parallel execution with -P, and practical one-liners for common file management tasks.

Read more →
Understanding du vs df: Measuring Disk Usage Correctly
Beginner ⏱️ ~10 min

Understanding du vs df - Measuring Disk Usage Correctly

A beginner-friendly walkthrough of how du and df differ. Learn why "df is full but du doesn't add up" — covering deleted-open files, mount boundaries, and root-reserved blocks with a practical investigation playbook.

Read more →
ncdu: Interactive Disk Usage Analyzer
Beginner ⏱️ ~9 min

ncdu: Interactive Disk Usage Analyzer

A beginner-friendly walkthrough of ncdu. Navigate the largest directories with arrow keys, delete files safely on the spot, see how it differs from du, and scan remote servers over ssh.

Read more →
bat: A cat Clone with Syntax Highlighting
Beginner ⏱️ ~9 min

bat: A cat Clone with Syntax Highlighting

A beginner-friendly walkthrough of bat. Display files with syntax highlighting, line numbers, and Git diff markers; fix the Ubuntu batcat naming issue; strip decorations to behave like cat; and colorize man pages.

Read more →
split Command: Splitting and Joining Large Files
Beginner ⏱️ ~8 min

split Command: Splitting and Joining Large Files

A beginner-friendly walkthrough of split. Break a file that is too big to handle into pieces, join them back with cat, and verify nothing was lost. Covers size, line, and count splits plus numbered suffixes and integrity checks.

Read more →
seq Command: Generating Sequences of Numbers
Beginner ⏱️ ~8 min

seq Command: Generating Sequences of Numbers

How do you build the numbers 1 to 100? A beginner-friendly walkthrough of seq. Generate sequences and feed them into for loops to create numbered files. Covers ranges, increments, zero padding, separators, and counting down.

Read more →
top and htop Mastery: Identifying System Bottlenecks
Intermediate ⏱️ ~14 min

top and htop Mastery - Identifying System Bottlenecks

Read top's summary lines in 30 seconds to decide whether the bottleneck is CPU, memory, or I/O. Master %us/%sy/%wa thresholds, htop's tree view, filters, and F-keys for production-grade triage.

Read more →
Getting Started with tmux - Terminal Multiplexing Basics
Beginner ⏱️ ~15 min

Getting Started with tmux - Terminal Multiplexing Basics

Learn tmux fundamentals through a friendly dialogue between Lina and Linny-senpai. Keep your work alive after SSH disconnects, master the session/window/pane hierarchy, the prefix key (Ctrl+b), and detach/attach with beginner-friendly examples.

Read more →
strace Basics - Tracing System Calls for Troubleshooting
Intermediate ⏱️ ~12 min

strace Basics - Tracing System Calls for Troubleshooting

Learn to trace system calls with strace on Linux. Filter by call type, attach to running processes with -p, interpret errno values like ENOENT and EACCES, and diagnose Permission denied and connection failures in minutes.

Read more →
vmstat, iostat, and sar - Understanding Linux Performance Analysis Tools
Intermediate ⏱️ ~15 min

vmstat, iostat, and sar - Linux Performance Analysis Tools

Learn to identify CPU, memory, and I/O bottlenecks using three complementary tools. Use vmstat for a system-wide overview, iostat to pinpoint slow devices by await and util%, and sar to review historical trends after an incident.

Read more →
Setting Up Aliases - How to Shorten Linux Commands
Beginner ⏱️ ~12 min

Setting Up Aliases - How to Shorten Linux Commands

Learn with Lina and Linny-senpai! Create short nicknames for long commands using alias, persist them in .bashrc, and remove them with unalias.

Read more →
Understanding .bashrc and .profile Load Order - When Settings Are Not Applied
Beginner ⏱️ ~15 min

Understanding .bashrc and .profile Load Order

Learn with Linny-senpai and Lina! Why aliases disappear over SSH, the difference between login and interactive shells, and how to reload settings instantly with source — all explained for beginners.

Read more →
How to Write systemd Unit Files - Registering Custom Services
Intermediate ⏱️ ~10 min

How to Write systemd Unit Files - Registering Custom Services

Learn to daemonize scripts and applications using systemd. Covers the [Unit], [Service], and [Install] sections, ExecStart, Restart policies, EnvironmentFile, and the full systemctl enable/start workflow.

Read more →
Symbolic Links and Hard Links - Understanding File References in Linux
Intermediate ⏱️ ~10 min

Symbolic Links and Hard Links - Understanding File References in Linux

Learn the difference between symbolic and hard links. Covers the ln command, inodes, reference counting, cross-filesystem constraints, and practical patterns like dotfiles and version-managed directories.

Read more →
Why cron Is Not Running - Troubleshooting crontab on Linux
Intermediate ⏱️ ~10 min

Why cron Is Not Running - Troubleshooting crontab on Linux

Fix cron jobs that aren't running on Linux. Learn how to check crontab, view logs, and avoid common PATH and permission pitfalls.

Read more →
at Command: One-Time Job Scheduling on Linux
Intermediate ⏱️ ~8 min

at Command: One-Time Job Scheduling on Linux

Schedule one-time jobs with the at command. Confirm atd, write time specs, manage jobs with atq and atrm, and know when to use at instead of cron.

Read more →
systemd Timer vs cron: Choosing the Right Scheduler
Intermediate ⏱️ ~12 min

systemd Timer vs cron: Choosing the Right Scheduler

Compare systemd timer and cron for Linux job scheduling. Prefer systemd timer for logging, dependencies, and missed-run recovery; cron for simple one-liners.

Read more →
How to Use systemctl - Linux Service Management Guide
Intermediate ⏱️ ~8 min

How to Use systemctl - Linux Service Management Guide

Manage Linux services with systemctl. Learn status, start, restart, and enable commands for Nginx, Apache, SSH, and other services.

Read more →
How to Read Log Files - Introduction to System Log Analysis
Intermediate ⏱️ ~12 min

How to Read Log Files - Introduction to System Log Analysis

Learn to read Linux log files in /var/log/. Covers syslog, auth.log, kern.log structure plus practical commands — tail -f, grep, less — for effective log analysis and troubleshooting.

Read more →
logrotate Basics - Keeping Logs Manageable with Automatic Rotation
Intermediate ⏱️ ~10 min

logrotate Basics - Keeping Logs Manageable with Automatic Rotation

Learn logrotate config structure and key directives. Covers rotate, compress, delaycompress, postrotate, and how to debug with dry-run mode on Linux.

Read more →
/tmp Cleanup Best Practices - tmpfiles.d and systemd-tmpfiles
Intermediate ⏱️ ~10 min

/tmp Cleanup Best Practices - tmpfiles.d and systemd-tmpfiles

Manage /tmp cleanup with systemd-tmpfiles and tmpfiles.d. Write declarative rules for automatic deletion, permissions, and boot-time directory creation.

Read more →
Disk Management Basics - Inspecting Storage with fdisk and lsblk
Intermediate ⏱️ ~10 min

Disk Management Basics - Inspecting Storage with fdisk and lsblk

Learn how to inspect Linux storage layout using fdisk -l and lsblk. Covers partition types, block device trees, device naming conventions, and when to use df vs du for disk space investigation.

Read more →
lsblk and blkid: Inspecting Block Devices and UUIDs
Intermediate ⏱️ ~10 min

lsblk and blkid: Inspecting Block Devices and UUIDs

Map device topology with lsblk and read UUID, LABEL, and FS type with blkid. Learn how to grab a stable device identifier for fstab.

Read more →
Mount and fstab Basics - How to Attach Filesystems in Linux
Intermediate ⏱️ ~12 min

Mount and fstab Basics - How to Attach Filesystems in Linux

Learn how to use the mount command and /etc/fstab. Covers attaching devices to directories, using UUID for safe device identification, and writing persistent mounts that survive reboots.

Read more →
LVM and Partition Management in Practice: Flexible Storage Operations
Intermediate ⏱️ ~15 min

LVM and Partition Management in Practice: Flexible Storage Operations

LVM and partition management guide for Linux. Learn to create PV, VG, and LV, extend volumes online, use snapshots, and manage storage flexibly.

Read more →
Swap Management - Avoiding Memory Exhaustion in Linux
Intermediate ⏱️ ~12 min

Swap Management - Avoiding Memory Exhaustion in Linux

Learn what Linux swap is, how to create a swapfile, tune swappiness for your workload, and diagnose OOM killer events before they take down production.

Read more →
dd Command: Disk Imaging and Safe Usage
Intermediate ⏱️ ~10 min

dd Command: Disk Imaging and Safe Usage

Clone disks and write ISO images to USB with dd safely. Verify the target with lsblk and avoid wiping the wrong device, from imaging to progress display.

Read more →
fzf: Fuzzy Finder for the Command Line
Intermediate ⏱️ ~9 min

fzf: Fuzzy Finder for the Command Line

fzf is a command-line fuzzy finder. Search history with CTRL-R, pick files with CTRL-T. Covers install, shell integration, search syntax, and preview.

Read more →
ripgrep (rg): Fast Code Search
Intermediate ⏱️ ~9 min

ripgrep (rg): Fast Code Search

ripgrep (rg) is a fast grep alternative that respects .gitignore. Covers the difference from grep, install, type/glob filtering, context, and replacement preview.

Read more →
date Command - Formatting and Calculating Dates
Beginner ⏱️ ~10 min

date Command - Formatting and Calculating Dates

Learn with Lina and Linny-senpai! Use date to show the current time, format output with %Y, calculate dates like yesterday or 3 days ago, convert epoch seconds, and switch time zones.

Read more →
Command Substitution: Capturing Output with $(...)
Beginner ⏱️ ~10 min

Command Substitution: Capturing Output with $(...)

Learn with Lina and Linny-senpai! Capture command output into variables with `$(...)`, see how it differs from backticks, and understand why you should quote it.

Read more →
Globbing and Wildcards: Pattern Matching Files in Linux
Beginner ⏱️ ~12 min

Globbing and Wildcards

Learn with Lina and Linny-senpai! Understand how `*`, `?`, and `[]` differ, how brace expansion is separate, and avoid the traps with extglob, dotfiles, and no-match behavior.

Read more →
test and [[ ]] - Conditionals in Shell Scripts
Intermediate ⏱️ ~9 min

test and [[ ]] - Conditionals in Shell Scripts

A practical guide to test, [ ], and [[ ]]. Master string, numeric, and file comparisons and avoid quoting bugs with copy-paste templates.

Read more →
Exit Codes: Using $? and && ||
Beginner ⏱️ ~10 min

Exit Codes: Using $? and && ||

Learn with Lina and Linny-senpai! Understand exit status, check results with $?, and branch your commands with && and || in a beginner-friendly walkthrough.

Read more →
timeout Command: Limiting Command Execution Time
Beginner ⏱️ ~10 min

timeout Command Basics

Learn with Lina and Linny-senpai! Limit how long a command runs and automatically stop hung commands, with exit status 124 and forced kill via -k, explained for beginners.

Read more →
chmod: Numeric and Symbolic Permission Modes
Beginner ⏱️ ~10 min

chmod: Numeric vs Symbolic Modes

Learn with Lina and Linny-senpai! Understand chmod numeric mode (644, 755) and symbolic mode (u+x, go-w), the r=4 w=2 x=1 math, and when to use each in a beginner-friendly walkthrough.

Read more →
rename Command: Bulk Renaming Files
Beginner ⏱️ ~10 min

rename Command: Bulk Renaming

Learn with Lina and Linny-senpai! Rename many files at once with the rename command in a beginner-friendly walkthrough, covering the -n dry-run, s/// substitution, and the Perl vs util-linux versions.

Read more →
base64 Command: Encoding and Decoding Basics
Beginner ⏱️ ~9 min

base64 Command: Encoding and Decoding

Learn the base64 command with Lina and Linny-senpai. Encode and decode strings and files, avoid the echo newline trap, control wrapping with -w, and learn the key point that base64 is not encryption.

Read more →
flock: Preventing Concurrent Runs with File Locks
Intermediate ⏱️ ~8 min

flock: Preventing Concurrent Runs with File Locks

Stop cron jobs and scripts from overlapping with flock. Exclusive locks, timeouts, and self-locking patterns explained for real-world ops.

Read more →
inotifywait: Watching Filesystem Events
Intermediate ⏱️ ~10 min

inotifywait: Watching Filesystem Events

Trigger automation on file changes with inotifywait. close_write vs modify, recursive watch limits, and a copy-paste processing loop.

Read more →
sshfs: Mounting Remote Filesystems over SSH
Intermediate ⏱️ ~10 min

sshfs: Mounting Remote Filesystems over SSH

Mount a remote directory locally over SSH with sshfs. Installation, auto-reconnect, fstab automation, unmounting, and common fixes from a practical angle.

Read more →
History Expansion: Reusing Commands with !! and !$
Beginner ⏱️ ~13 min

History Expansion: Reusing Commands with !! and !$

From !! / !$ to !string / !:n / :h:t:r / ^old^new^. Use bash history expansion to reuse past commands fast, explained for beginners.

Read more →
Brace Expansion: {1..10} and More
Beginner ⏱️ ~10 min

Brace Expansion: {1..10} and More

Learn with Lina and Linny-senpai! Master {1..10} and {a,b,c} to create numbered files and directories fast, explained step by step for beginners.

Read more →
Bash Arrays: Indexed and Associative Arrays
Intermediate ⏱️ ~9 min

Bash Arrays: Indexed and Associative Arrays

Learn bash indexed and associative arrays step by step: declaring, accessing, looping, and editing elements, plus quoting and sparse-array pitfalls.

Read more →
tac and rev - Reversing Lines and Characters
Beginner ⏱️ ~7 min

tac and rev - Reversing Lines and Characters

Learn with Lina and Linny-senpai! tac flips the order of lines, rev flips the characters inside each line. Two reverse commands with opposite jobs, explained for beginners.

Read more →
yes Command: Automating Confirmations
Beginner ⏱️ ~8 min

yes Command: Automating Confirmations

Learn with Lina and Linny-senpai! When typing y to every "Are you sure?" prompt gets old, see how yes auto-answers them, why it is dangerous, and the safer alternatives.

Read more →
env Command: Running Commands with a Modified Environment
Intermediate ⏱️ ~9 min

env Command

Run a command with a modified environment without touching your shell. Set variables temporarily, use env -i / -u / -C, and write portable shebangs.

Read more →
GNU parallel: Running Jobs in Parallel from the Shell
Intermediate ⏱️ ~10 min

GNU parallel

Run shell commands in parallel to speed up batch work. Placeholders, job control, output ordering, and joblog resume explained, with how parallel differs from xargs.

Read more →
ionice: Controlling Disk I/O Priority
Intermediate ⏱️ ~9 min

ionice

Stop backups and rsync from slowing down your server. Use ionice to set idle/best-effort/realtime classes, apply to running PIDs, and check the BFQ scheduler when it has no effect.

Read more →
tar in Practice: Incremental Backups and Exclusions
Intermediate ⏱️ ~10 min

tar in Practice: Incremental Backups & Exclusions

A practical tar workflow for incremental backups. Use --listed-incremental for level-0/level-1 diffs, --exclude to skip noise, and -C plus --strip-components to control where and how archives extract.

Read more →
nl Command: Numbering Lines
Beginner ⏱️ ~9 min

nl Command: Numbering Lines

Learn the nl command through a friendly dialogue. Add line numbers to text, see how nl differs from cat -n on blank lines, and tune width, separator, start number, and format.

Read more →

🩺 Practical Troubleshooting

Reverse-Lookup Reference

Error and incident articles have moved to a dedicated reverse-lookup category. Look up Permission denied, No space left, SSH failures, high CPU load, memory pressure, DNS issues by symptom.

🐧 Master Skills Through Practice!

After learning the theory, practice using actual commands. You can learn experientially at Penguin Gym Linux.