My 2019 essential tool list

Software

Every few years I collate a list of the shell tools I use, in the hopes it might be useful to someone. These install on my FreeBSD, NetBSD, macOS, and Debian boxes, unless otherwise stated. Most package names are derived from pkgsrc, but should be similar in others package managers. BSD/MIT licenced packages or similar have a green ♥ because they make me especially happy.

This list does not include fully-fledged ncurses or console applications, like IRC clients or music players. As FedEx would say, those are for another post. Ah man, so good.

Utilities

  • ag: fast grep alternative ️♥
  • ansible: easiest orchestration system
  • aria2: parallel curl/fetch/wget replacement with torrent support
  • checkbashisms: to verify script portability
  • colordiff: nice syntax highlighting for diff
  • colorize: nice syntax highlighting for logs
  • fd: high-performance find alternative ️♥
  • htop: nicer top, especially useful for visualising CPUs
  • lsof: list open files ️♥
  • lzop: ultra fast compression for temporary file transfers
  • oksh: Portable OpenBSD KornShell, my current preferred shell ️♥
  • p7zip: for extracting 7zip files Windows people send me
  • plzip for parallel compression with safe integrity checks
  • sqlite3: alongside other things, I also use for personal DBs
  • sudo: auditable super user interface
  • tmux: detach sessions, like screen ️♥
  • tree: display directories as trees, DOS style
  • watch: periodically run process to review changes

Disks

  • dcfldd: no more piping dd to lv for copying blocks with a progress bar
  • ddrescue: data recovery and robust disk copying
  • fio: flexible IO performance tester
  • iotop: easy disk activity monitor
  • qemu-utils: disk image conversion from the legendary emulator
  • smartmontools: SMART drive monitoring and reporting
  • testdisk: partition analyser and recovery tool

Entirely pointless

  • cmatrix: Matrix emulator (pity that movie didn’t have sequels)
  • cowsay: echoes Copy on Write drive structures… yes, that’s it
  • figlet: cute text banners in a variety of different styles/fonts
  • lolcat: such colour, so rainbow ️♥
  • neofetch: pretty system information ️♥

Writing, blogging, podcasting

  • docbook: still the standard for online technical docs
  • exiftool: reads EXIF data from images
  • eyeD3: for batch processing ID3 tags in MP3s
  • ffmpeg4: video processing Swiss Army Kife
  • go-hugo: fastest static site generator
  • ImageMagick: image processing Swiss Army Knife
  • jpegoptim: lossless [sic] JPEG image optimiser
  • mkdocs: web documentation generator from Markdown ️♥
  • normalize: normalise, incorrectly spelled, across audio files
  • pngcrush: lossless PNG optimiser
  • svgcleaner: correct, minify SVG images
  • tesseract: simple to use image OCR ️♥
  • wn: the WordNet lexical database of English ️♥
  • youtube-dl: download videos from YouTube, Vimeo, etc ️♥

Networking (for a non-networking guy!)

  • 2ping: bi-directional ping testing
  • arping: layer 2 ping (Thomas Habets version)
  • bwm_ng: next-gen bandwidth monitor
  • links: quick console browsing in a pinch; I don’t need elinks
  • mosh: interactive SSH replacement for high-latency connections
  • mtr: traceroute and ping in one tool
  • ncftp: because yes, FTP still exists in 2019
  • nmap: port scanner for firewall testing… yes, that’ll do
  • rsync: still the best sane data transferer
  • sshfs: quick and dirty remote disk mounts over SSH
  • sshuttle: quick and dirty VPN over ssh
  • tcpdump: quick way to inspect NIC traffic without Wireshark ️♥

OS specific

  • debian-goodies: lots of useful apt package tools (Debian)
  • docproj: metapackage for FreeBSD documentation (FreeBSD) ️♥
  • firehol: simple Linux iptables (Debian)
  • iocage: super easy, ZFS-enabled jail interface (FreeBSD) ️♥
  • mactex: everything you need for LaTeX on Mac (macOS)
  • mas: shell interface to the Mac App Store (macOS) ️♥
  • pkgsrc: replaced Homebrew with it, thanks NetBSD! (macOS) ️♥
  • reprepro: apt repository and package generator (Debian)
  • tag: manipulate macOS extended attribute tags (macOS) ️♥

Author bio and support

Me!

Ruben Schade is a technical writer and infrastructure architect in Sydney, Australia who refers to himself in the third person. Hi!

The site is powered by Hugo, FreeBSD, and OpenZFS on OrionVM, everyone’s favourite bespoke cloud infrastructure provider.

If you found this post helpful or entertaining, you can shout me a coffee or send a comment. Thanks ☺️.