Blog
Thoughts on engineering, design, and building great products.
Compress and Decompress: tar, gzip, zip
Bundle many files into one and compress them for backups or moving data. Understand the difference between archiving (tar) and compressing (gzip), memorize the confusing tar flags, and know when to use tar.gz vs zip.
Pipes, Redirects, and Data Streams
A deep dive into the mechanism behind the command line's power: the three streams stdin/stdout/stderr (file descriptors 0/1/2), how to redirect them into files, merge errors, discard with /dev/null, and chain commands with pipes.
Reading and Processing Text: grep, sed, awk and Friends
The toolset behind the power of the Linux command line: viewing files (cat, less, head, tail), filtering (grep), cutting columns (cut), sorting (sort, uniq), counting (wc), and transforming (sed, awk). Each tool does one thing well.
File and Directory Operations
The commands you use every day: create, copy, move, rename, delete files and directories, create links, use wildcards to operate in bulk, and find files with find.
Setting Up a Linux Environment and Getting Comfortable with the Shell
Create a Linux environment to practice with using a container, understand the shell and the command prompt, run your first commands, and learn the keyboard shortcuts that make typing commands much faster.
What Is Linux and Why Developers Should Learn It
Series opener: the difference between the Linux kernel and a distro, why nearly every server and container runs Linux, the Unix philosophy behind the command line, and how to use a Linux container as a lab right on your Mac/Windows machine.