How-To Guides
Task-shaped, not command-shaped. Nobody sits down wanting to "use tar" — they want to unpack a file. Each guide opens with the command that does the job, then explains what it does, the variants you will need, and the edge cases that bite.
For the tool itself in depth, the command reference is the place. For something that is already broken, start at the error messages.
Each page follows the same shape on purpose. The command that does the job comes first, because when you are mid-task you need the answer, not a history of Unix. Then the steps, each with the reasoning behind it — because the second time you meet the problem you want to solve it yourself. Then the tips that separate someone who copied a command from someone who understands it: the trailing slash that changes what rsync does, the dry run before a destructive flag, the flag that makes a search a hundred times faster.
If you would rather build the skill than look things up, the 60-lesson course teaches these commands in a real simulated shell, checking each one as you type it.
See how much space is left, and find out what is using it.
$ df -h Extract a .tar.gz archive Unpack tar.gz, tar.bz2, tar.xz and zip archives from the command line.
$ tar -xzf archive.tar.gz Free a port that is already in use Find which process holds a port and stop it cleanly.
$ sudo ss -tlnp | grep :3000 Find and replace text in files Replace text in one file or across a whole project, safely.
$ sed -i 's/old/new/g' file.txt Make a script executable Give a script permission to run, and understand why it needs it.
$ chmod +x script.sh Search text inside files Find which files contain a word, and exactly where.
$ grep -rn "text" . Check memory usage See how much memory is really available, and which process is eating it.
$ free -h Copy files to or from a remote server Move files between machines with scp and rsync, over the same encrypted connection.
$ scp file.txt user@server:/path/ Search recursively with grep Search every file under a directory with grep, show filenames and line numbers, and skip noisy folders.
$ grep -rn "pattern" . Search with grep ignoring case Make grep match Error, ERROR and error with one option.
$ grep -i "error" app.log Search for multiple patterns with grep Match several words with grep using -e or extended regular expressions.
$ grep -E "error|warning" app.log Set a file to permission 755 Understand what chmod 755 means and when it is appropriate.
$ chmod 755 script.sh Set a file to permission 644 Learn what chmod 644 means and why it is common for ordinary files.
$ chmod 644 file.txt Run a script in Linux Run Bash and executable scripts correctly using an interpreter, execute permissions and a shebang.
$ ./script.sh Connect to a Linux server with SSH Connect securely to a remote Linux host using username, hostname, port and SSH key.
$ ssh user@server Find the process using a port Identify the PID and program listening on a Linux TCP port.
$ sudo ss -ltnp | grep :3000 Find large files in Linux Locate large files without crossing into other mounted filesystems.
$ find / -xdev -type f -size +500M -print 2>/dev/null Find files by name in Linux Locate files and directories by exact name or wildcard pattern with find.
$ find . -type f -name "*.log" Stop a process in Linux Find a process, send it SIGTERM first, and use SIGKILL only when necessary.
$ kill PID Find a process ID in Linux Locate a process PID with ps, pgrep and pidof before inspecting or stopping it.
$ pgrep -af process-name Search Bash command history Find a command you ran before using history, reverse search and grep.
$ history | grep "docker" List hidden files in Linux Use ls to show hidden files and directories, including .env and .git.
$ ls -la Copy a directory in Linux Copy a directory and its contents with cp, including hidden files and nested folders.
$ cp -r source/ destination/ Move files and directories in Linux Move or rename files and directories with mv, including practical overwrite precautions.
$ mv file.txt archive/ Delete a directory in Linux Remove empty or non-empty directories safely with rmdir and rm -r.
$ rm -r directory/ Create nested directories in Linux Use mkdir -p to create a directory tree in one command without errors for existing parents.
$ mkdir -p project/src/components Count lines in a Linux file Count lines, words and bytes with wc, with useful variations for logs and source files.
$ wc -l file.txt View the end of a file Use tail to inspect recent log entries and control how many lines you see.
$ tail -n 50 app.log Watch a Linux log file in real time Follow new log entries with tail and handle log rotation correctly.
$ tail -f /var/log/app.log List running processes in Linux Use ps to inspect running processes, PIDs, users and commands.
$ ps aux Stop a process by name Find matching process IDs with pgrep and terminate them safely.
$ pkill -TERM process-name Download a file with curl Download files with curl while preserving the remote filename and handling redirects.
$ curl -LO https://example.com/file.zip Download a file with wget Download files from HTTP or HTTPS with wget and save them to a chosen location.
$ wget https://example.com/file.tar.gz Rename a file in Linux Rename files and directories with mv, including names containing spaces.
$ mv old.txt new.txt Identify a file type in Linux Use file to identify text, archives, executables and other file formats from the command line.
$ file archive.tar.gz