moderntools/README.md
2024-10-17 11:17:06 -04:00

8.6 KiB

Modern Unix Tools

Modern problems require modern solutions.

This is a collection of very useful utilities that I've collected by asking the internet "What modern utilities should be a standard part of a modern unixy distro and why?"

Additions and corrections via raised issue or pull requests are welcome.

Utilities

System use and management

  • There are enough new takes on the venerable top command that they're probably going to need their own category soon.

    • htop, "a cross-platform interactive process viewer".
    • bottom, an htop-like utility that also got some votes.
    • btop++, another 'better top' variant.
    • glances, "An eye on your system."
  • ncdu, friend of htop and a nice disk usage display for the terminal.

  • HTTPie, a CURL-adjacentish command-line HTTP client for testing and debugging web APIs.

  • Xh is related, described as reimplementing a subset of HTTPie's interface with an emphasis on simplicity and speed.

  • glow, a markdown-on-the-command-line tool.

  • Lowdown, also a markdown tool, also interesting.

  • fzf and skim are both interesting CLI "fuzzy finders" (but take a look at 'z' further down this list.)

  • tldr - simplified man pages with practical examples. The world has needed this for a long time.

  • Tree: show you the tree structure of directories, a bit like microdosing on Midnight Commander from back in the day.

  • Broot: better navigation of directory trees.

  • atool, a set of scripts that wrap common compressed-file-format handlers.

  • LazyDocker and LazyGit, CLI improvements for Docker and Git respectively.

  • hwatch and viddy, two alternatives to the venerable and underappreciated "watch" command.

  • Zellij: Described as a "terminal workspace" with accessible defaults, unifying ideas in tmux and preconfigured environments. Repo here.

Data management

A collection of modern data migration, conversion and management tools.

  • Gron, a tool for making JSON greppable.
  • jq and jid are both fantastic tools for inspecting and manipulating JSON.
  • ijq, an "interactive jq".
  • xidel: this looks like jq-for-html, and I'm intrigued.
  • csvkit: if you spend a lot of time working with comma-separated values, accept no substitutes.
  • miller, a CSV multitool.
  • VisiData: a tabular data visualization multitool.
  • duc, also a nice drive-use visualizer.
  • matplotlib: the upgrade over gnuplot you've been waiting for.
  • st, "Simple Statistics", a command-line app that calculates the sum, mean, standard deviation, and a few other things about a set of numbers.
  • Datamash: Gnu, I know, but an interesting command-line-math tool.
  • Dasel, short for Data Selector, like jq/yq but with more supported data formats.
  • nushell: A structured-data pipeline-building shell.
  • rclone, a cloud-storage data-moving multitool, similar to rsync.
  • unison: a file synchronizer, can keep two directories in sync bi-directionally.
  • sq: "jq-style access to structured data sources: SQL databases, or document formats like CSV or Excel. It is the lovechild of sql+jq."
  • xq: A "Command-line XML and HTML beautifier and content extractor", another in the line of tools jq has inspired.

Specialized tools

"Do one thing and do it well."

  • LatexDiff: Like it says on the tin, Diff for Latex.
  • dyff: diff for yaml.
  • axe-core, part of the NPM ecosystem, including the axe-cli command line tool for automatically testing the accessibility of web pages and HTML interfaces.

Revisiting The Classics

A collection of tools best described as "A better $X"

  • ply, described as "bpftrace without the drama."
  • duf a better df.
  • ripgrep, a line-oriented search tool, described as a better grep.
  • sd, a better sed.
  • fd, a better find
  • bat, a better cat.
  • dust, a better du.
  • lsd and eza, new takes on the venerable ls. (Note: this previously referred to exa, rather than eza, but exa has apparently been forked and abandoned.
  • zoxide: an interesting update to, of all things, cd!
  • z: another "better cd", but a very cool frecency-and-regex-matching "faster/smarter cd".
  • ag: the Silver Searcher, a better ack (which was in turn born "a better grep").
  • just: Just, a modernization of the venerable Make.
  • Meli email: An extensible terminal based mail client; a work in progress, but an elegant improvement on Mutt.
  • Aerc: Another email client for the terminal, described as highly efficient and extensible, perfect for the discerning hacker.

Shells, shell customizations and ergonomic improvements

  • fish: Finally, a command line shell for the 90s. Non-posix, but with nice defaults for interactive use right out of the box (very little need for custom configuration and plugins).
    • OhMyFish: Plugin system for fish, for those missing complexity.
    • Fisher: The other plugin manager for fish, compatible with oh-my-fish plugins.
  • zsh: A modernized, modular update to Bash with a lot of new utility built in, as well as its remarkable collection of plugins
    • OhMyZsh + Alacritty: this trifecta of terminal emulator, shell and shell extensions turns out to be a powerful combination.
  • Starship.rs: Cross-shell prompt customization that looks very pretty.
  • atuin: "magical shell history", storing shell history in an SQLite DB and offering fully-encrypted shell-history sync between devices.
  • mcfly: replaces the usual ctrl-r shell-history search handler with a more powerful tool, super cool.
  • tmux, a terminal multiplexer.
  • Some people mentioned screen, the classic tool in this space, but noted that it's getting pretty long in the tooth and tmux is a pure improvement.

Quality-Of-Life command line improvements.

Other collections