043 lines, all of them

Every entry published since launch, searchable by headline or command. No pagination, no load-more, no scroll-jacking. A flat list you can Command-F through.

2026 · October

2026-10-27Turn raw byte counts into human-readable sizes in any command's outputwc -c *.* | numfmt --field=1 --to=iec-i --suffix=B --padding=7dates-math2026-10-26Find out whether a slow command is working or waitingtime du -sh /usrprocesses-jobs2026-10-23Skip the header line of a file before you sort or count ittail -n +2 sales.csvtext-processing2026-10-22Split a line into named variables without losing them to a subshellIFS=, read -r date region product units revenue <<< "$(sed -n 2p sales.csv)"; echo "$region $units"shell-tricks2026-10-21See which commits are on a branch but not on maingit log --oneline main..featuregit2026-10-15Check whether a compressed backup is corrupt before you need itgzip -tv *.gzarchives-compression2026-10-14Find out how much disk a file really uses, not how big it claims to bels -lsh *.imgdisk-system2026-10-13Count from 01 to 12 with the zeros already in placeseq -w 1 12dates-math2026-10-12Check whether a process is still alive without sending it anythingkill -0 4721 && echo alive || echo goneprocesses-jobs2026-10-09See a file's permissions as the number chmod expectsstat -c '%04a %A %U:%G %n' *files-search2026-10-08Check if a remote port is open when netcat is not installedtimeout 3 bash -c '</dev/tcp/bash-hacks.com/443' && echo open || echo closednetworking2026-10-07See which keys can log in to an account without reading base64ssh-keygen -lf ~/.ssh/authorized_keysssh-remote2026-10-06Count who has actually committed to a repository, and how muchgit shortlog -sne --no-merges HEADgit2026-10-05Find out which stage of a pipeline actually failedgrep FATAL server.log | wc -l; echo "${PIPESTATUS[@]}"shell-tricks2026-10-02Pull only the matching records out of a JSON filejq -r '.servers[] | select(.cpu > 60) | [.name, .ip, .cpu] | @tsv' data.jsontext-processing2026-10-01Do decimal math in the shell when $(( )) only gives you integersecho 'scale=3; 2/3' | bcdates-math

2026 · September

2026-09-30Find out which compressor actually wins on your data before you pick onefor c in gzip bzip2 xz; do printf '%-6s %10d\n' $c $($c -9 -c access.log | wc -c); donearchives-compression2026-09-29Read the load average without mistaking it for CPU usageuptimedisk-system2026-09-28See the SSH settings a host will actually use before you connectssh -G devbox | grep -E '^(user|hostname|port|identityfile|proxyjump) 'ssh-remote2026-09-25Line up a CSV into readable columns right in the terminalcolumn -s, -t sales.csvtext-processing2026-09-24Pull the filename, directory, or extension out of a path without basenamep=/var/log/nginx/access.log.2.gz; echo "${p##*/} ${p%/*} ${p%.*} ${p##*.}"shell-tricks2026-09-23Find out who actually wrote a line after a bulk reformatgit blame -w --ignore-revs-file .git-blame-ignore-revs src/auth.jsgit2026-09-22Identify a file by what is inside it, not what it is calledfile *files-search2026-09-21See when a TLS certificate expires without opening a browseropenssl s_client -connect bash-hacks.com:443 -servername bash-hacks.com </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer -datesnetworking2026-09-18See the resource limits every process inherits from your shellulimit -adisk-system2026-09-17Do math on zero-padded numbers without the shell reading them as octalecho $(( 10#$(date +%m) ))dates-math2026-09-16See exactly what rsync will change before it changes anythingrsync -avni --delete site/ backup/ssh-remote2026-09-15Total a column grouped by another one in a single passawk '{n[$7]++; bytes[$7]+=$10} END {for (u in n) printf "%12.0f %6d %s\n", bytes[u], n[u], u}' access.log | sort -rn | headtext-processing2026-09-14Find the process that is quietly eating your memoryps -eo pid,ppid,rss,etimes,pcpu,comm --sort=-rss | head -11processes-jobs2026-09-08Search a project without walking into node_modulesfind . \( -name node_modules -o -name .git \) -prune -o -type f -name '*.ts' -printfiles-search2026-09-07Find out which part of an HTTP request is actually slowcurl -sS -o /dev/null -w "dns %{time_namelookup}\ntcp %{time_connect}\ntls %{time_appconnect}\nttfb %{time_starttransfer}\ntotal %{time_total}\n" https://www.debian.orgnetworking2026-09-04Bring back the commits you lost to a bad resetgit reflog show --date=relative HEADgit2026-09-03Compare the output of two commands without writing a temp filediff <(sort packages-web01.txt) <(sort packages-web02.txt)shell-tricks2026-09-02Turn a Unix timestamp into a readable date in any timezoneTZ=America/New_York date -d @1788373391 +'%F %T %Z'dates-math2026-09-01Reuse SSH connections instead of authenticating every timessh -o ControlMaster=auto -o ControlPath=~/.ssh/sockets/%r@%h-%p -o ControlPersist=600 devboxssh-remote