My List of CLI Gems

Recently I realize I've accumulated quite a few packages and wanted to do some cleaning and organizing.

These are the ones I kept and find useful.

A screenshot of my terminal displaying tmux with 4 panes - each pane running a different tool

Here goes!

Must Haves

(that I don't need to think about)

Utilities

  • fzf - Command-line fuzzy finder written in Go
  • atuin - Improved shell history for zsh, bash, fish and nushell
  • bat - Clone of cat(1) with syntax highlighting and Git integration
  • clipboard - Cut, copy, and paste anything, anywhere, all from the terminal
    • The easiest way to move files around
  • zoxide - shell extension to navigate your file-system faster
  • yazi - Blazing fast terminal file manager written in Rust, based on async I/O
  • eza - Modern, maintained replacement for ls
  • gum - Tool for glamorous shell scripts
  • direnv - Load/unload environment variables based on $PWD
    • I use this at work to automatically switch between dev environments (correct node/go/python versions etc.)
  • tldr - fast and interactive tldr client written with go
  • serpl - a simple terminal UI for search and replace, ala VS Code.
    • An easier way to find and replace. When I need more control I use ripgrep.

Git and GitHub

  • lazygit - A simple terminal UI for git commands, written in Go
  • gh - GitHub command-line tool
  • diff-so-fancy - Good-lookin' diffs with diff-highlight and more
  • tig - Text interface for Git repositories
  • svu - Semantic Version Utility
    • I use this when releasing my CLI tool to bump versions

Process Management

  • tmux - terminal multiplexer
  • sesh - Smart terminal session manager for tmux
  • mprocs - Run multiple commands in parallel
  • lazydocker - Lazier way to manage everything docker
    • I use this when developing my TUI and find broken icons
  • k9s - kubernetes CLI to manage your clusters in style!
  • bpytop - Linux/OSX/FreeBSD resource monitor

I Always Forget about

Utilities

  • artprint - I use this to switch artworks in neovim's start screen
    • artprint --random -t "dlvhdr" --tc 5 --ac 4
  • curlie - better curl
  • entr - run arbitrary commands when files change
  • procs - Modern replacement for ps
    • procs "$1" --no-header | awk -F '│' '{printf $1}{printf "│"}{print $3}' | gum choose --no-limit | awk '{print $1}' | xargs kill -9
  • sd - intuitive find & replace (better sed)
  • mult - run a command multiple times and glance at the outputs
    • Usually for flaky tests
  • charmbracelet/tap/freeze - Generate images of code and terminal output.
  • charmbracelet/tap/vhs - A tool for recording terminal GIFs
  • markscribe - your personal markdown scribe with template-engine and Git(Hub) & RSS powers
  • fd - Simple, fast and user-friendly alternative to find
  • hyperfine - Command-line benchmarking tool
  • timg - terminal image and video viewe
  • glow - Render markdown on the CLI
  • nerdfix - Find/fix obsolete Nerd Font icons

Disk Management

  • dua-cli - view disk space usage and delete unwanted data, fast
    • Run dua i for interactive mode
  • dust - more intuitive version of du in rust
  • kondo - save disk space by cleaning non-essential files from software projects

JSON

  • jnv - JSON navigator and interactive filter leveraging jq
    • Probably the best of the bunch 👑
  • gojq - Pure go implementation of jq
  • fx - terminal JSON viewer
  • jless - command-line pager for JSON data
  • jqp - a TUI playground to experiment and play with jq

Logs

  • humanlog - pretty print and tail logs
  • tl (toolong) - a TUI to view, tail, merge, and search log files

Network

  • openapi-tui - terminal UI to list, browse and run APIs defined with OpenAPI

LLM

  • mods - AI on the command line
    • I have an alias bound to ? to ask it CLI questions
  • tlm - terminal copilot, powered by CodeLLaMa.

Golang

  • air - live reload for Go apps
  • gowatch - watcher for go app that restarts the app when you save a file
    • e.g. when developing my CLI tool: gowatch --args='--pr=https://github.com/neovim/neovim/pull/27082'