Linux guides
29 guides in Command Line · intermediate.
Listen to Music in the Terminal with MPD + ncmpcpp
Set up MPD as a per-user systemd service, configure ncmpcpp with a spectrum visualiser, and control playback from the terminal on any Linux distro.
Use mise for Tools, Tasks and Env Vars
Replace asdf, direnv, and task runners with a single mise binary. Covers installation, tool versioning, env vars, tasks, and secrets via sops.
True Color, Image Protocols and Modern Terminal Features
Configure TERM, COLORTERM, sixel, Kitty graphics, and iTerm2 inline image protocols correctly across Kitty, WezTerm, foot, Alacritty, and tmux.
Manage Dotfiles with chezmoi
Track, template, and encrypt your dotfiles with chezmoi — then restore any machine to your exact config in one command.
A Sysadmin's Daily Driver Setup
Build a complete sysadmin terminal workflow with tmux, Neovim, fzf, atuin, version-controlled dotfiles, clean multi-server SSH, and audit-ready habits.
Configure WezTerm with Lua
Configure WezTerm entirely in Lua: set fonts, colour schemes, key bindings, split panes and tabs, the built-in mux server, and SSH session integration.
Use kubectl Effectively
Master kubectl contexts, namespace switching, built-in API docs with explain, structured output, live debugging with ephemeral containers, and Kustomize overlays.
Write a Makefile for Anything (Not Just C)
Learn how to write a Makefile for any project—targets, prerequisites, .PHONY, variables, pattern rules, and the classic gotchas explained with real examples.
A Vim Config From Scratch
Build a Neovim config from scratch: sensible defaults, lazy.nvim plugin manager, Treesitter, LSP via Mason, and autocompletion — all explained step by step.
Use yq to Process YAML
Learn to read, filter, transform, and safely edit YAML files in place using mikefarah/yq — the Go-based jq equivalent for YAML.
Use curl Like a Pro
Master curl beyond basic GET requests: inspect and send headers, authenticate with tokens, POST JSON, upload files, manage cookies, and debug with -v.
Shell Script Strict Mode
Learn how set -euo pipefail, IFS, and traps protect bash scripts from silent failures, undefined variables, and leaked temporary files.
rsync Recipes Every Sysadmin Needs
Practical rsync recipes for mirrors, SSH transfers, exclude lists, bandwidth throttling, hard-link snapshots, and safe dry-run verification. Ready to adapt.
Neovim From Scratch with Lua
Build a modern Neovim config from scratch using init.lua, lazy.nvim, Treesitter, nvim-lspconfig, and Mason — step by step with no pre-made distribution.
Mastering tmux (Power-User Guide)
Go beyond the basics with tmux: persistent sessions, pane layouts, vi copy mode, a production tmux.conf, session scripting, and TPM plugins including resurrect.
Mastering jq for JSON on the Command Line
Master jq from field access to map/select, object reshaping, type conversion, and safe shell variable injection for real-world JSON processing on the command line.
Bash Globbing and Extended Glob Patterns
Master Bash globbing beyond * and ?: learn globstar recursive matching, extglob operators, brace expansion, and the gotchas that cause real-world bugs.
Build a Real Command-Line Tool in Shell
Build a proper CLI tool in Bash with strict mode, long/short argument parsing, --help, usage(), and clean packaging via install and a Makefile.
Bash Functions and Variable Scoping
Master Bash function scoping with local variables, source-based libraries, correct use of return codes, and array passing techniques including namerefs.
Bash Arrays and Associative Arrays
Master bash indexed and associative arrays: declaration, element access, looping, mapfile, namerefs, and practical patterns for real scripting work.
How to Write Portable POSIX Shell Scripts
Write shell scripts that run correctly under dash, BusyBox sh, and Bash by avoiding Bashisms, using POSIX constructs, and linting with shellcheck.
How to Write Bash Functions Properly
Learn to write reliable bash functions: safe argument handling, correct return values, proper use of local, error handling with set -e, and clean naming conventions.
How to Use jq for JSON on the Command Line
Learn to filter, transform, and reshape JSON on the command line with jq — covering selectors, map/select, object construction, and real API pipelines.
How to Use fzf, the Fuzzy Finder
Install and configure fzf to fuzzy-search files, shell history, processes, and git branches — with shell integration for Bash, Zsh, and Fish.
Master Vim: A Practical Path Beyond the Basics
Go beyond the basics: master Vim buffers, registers, macros, and the help system, then add only the plugins that genuinely earn their place.
Writing Technical Documentation (the Linux way)
Write and publish Linux technical documentation using Markdown, AsciiDoc, man pages, DocBook, pandoc, and MkDocs—with CI integration and practical examples.
How to Use tmux
Master tmux sessions, windows, panes, detach/reattach, and a practical ~/.tmux.conf so you can manage persistent terminal workflows like a pro.
A Practical Guide to sed and awk
Learn sed and awk through practical examples: substitutions, in-place edits, field splitting, pattern-action programs, and real pipeline use cases.
C Pointers Explained
Understand C pointers from first principles: addresses, dereferencing, pointer arithmetic, arrays, common bugs like null dereferences and dangling pointers, and how to use ASan and Valgrind.