Skip to content
shellhacks.dev

Topics

Check out the topics that interest you.

Bash

Quoting, arrays, traps, parameter expansion and the other corners of Bash that decide whether a script works or only seems to.

Shell Scripting

POSIX sh, zsh and the portability gaps between them, for scripts that behave the same on a laptop, a server and a CI runner.

Linux

The Linux side of a developer's day: processes, files, permissions, services and what to check when a box misbehaves.

Command Line

Everyday terminal tools like grep, find, xargs and jq, shown with real examples you can paste and adapt.

Automation

Turn the chore you did three times this week into a script, a scheduled job or a small tool that runs without you.

Git

Branches, rebases, recovering lost commits and the hooks that make Git enforce your team's habits for you.

Docker

Images, Compose and the shell around them, from slimmer builds to debugging a container that exits immediately.

Python

Python for glue work: file handling, subprocesses and CLIs, plus how to tell when a shell script has outgrown itself.

Go

Small Go programs that ship as a single binary, for the day a fragile script deserves to be replaced.

DevOps

Deploys, releases, rollbacks and server upkeep, from the first rsync to a pipeline you trust on a Friday.

Text Processing

Cut, sort, sed and awk pipelines for reshaping logs, CSVs and config files without opening an editor.

Regular Expressions

Pattern matching across grep, sed, PCRE and Python, and the dialect differences that make the same expression fail.

SSH and Networking

SSH keys and tunnels, curl, DNS lookups and port checks, for when a connection will not come up.

Cron and Scheduling

Cron and systemd timers done properly: quiet on success, loud on failure and safe to run twice.

CI/CD

Pipelines that build, test and deploy, and the shell steps inside them that tend to break first.

Security

Secrets handling, file permissions, injection and least privilege, aimed at people who write the scripts and own the servers.

Debugging

Tracing a misbehaving script or program to its cause with set -x, strace, logs and a careful read of the error.

Testing

Bats, ShellCheck and plain assertions for scripts and code, so a change does not need a prayer.

Performance

Profiling, benchmarking and the fixes that survive a second measurement, for slow scripts and slow systems.

Databases

Dumps, restores, ad-hoc queries and safe data moves for MySQL, PostgreSQL and SQLite from the terminal.

Tooling

Editors, terminals, dotfiles, package managers and build tools: the setup around your code that saves time every day.

Software Design

Structuring scripts and projects so they stay readable at ten times the size, and the trade-offs behind each choice.

APIs

Calling, testing and debugging HTTP APIs with curl and jq, and wiring them into scripts that cope with failure.

Tags