Skip to content

Latest commit

 

History

History
87 lines (70 loc) · 10.1 KB

README.md

File metadata and controls

87 lines (70 loc) · 10.1 KB

My Favorite Linux Tools

Many of these are actually cross-platform. For context, I currently use:

  1. At home: Fedora Workstation 40 & Ubuntu 24.04
  2. At work: Ubuntu 22.04.

I am also a heavy user of the default bash shell.

Excellent External Resources

  • dbohdan/structured-text-tools - Much of my day job is concerned with understanding log files we produce. This page gives an invaluable overview of standard tools available for slicing, dicing and comprehending large structured text outputs.
  • The excellent list at ibraheemdev/modern-unix contains more tools I may try in the future.
  • A blog post by Julia Evans has some cool stuff to look at too.

Terminal-based tools

I've marked all tools with icons indicating the primary implmentation language. I really like tools built using modern (relative to, say, C ) languages like Rust , Go (), Python () and Ruby . I obtained the Programming language file Icon icon at IconScout.

Impl Name Ubuntu Fedora Description / Config
autojump apt intall autojump, then see man file for launching in your .bashrc Lets me change working directory to recently used directories via quick pattern match. (A tool I'm watching to replace this whenever I can rely on fzf 0.33 or later packages is zoxide.)
bandwhich Unzip executable from releases tarball to /usr/local/bin Very nice presentation of what programs are consuming bandwith on connections to where. Needs sudo to run.
bat apt install bat (tool is invoked with batcat in this case). dnf install bat Colorful cat with line numbers, paging, and syntax highlighting.
csvlens cargo install csvlens cargo install csvlens Amazing command-line interactive CSV file viewer. (H or ? shows help)
diskonaut cargo install diskonaut same Interactive treemap visualization of disk space usage, right in the console
doggo Unzip executable from releases tarball to /usr/local/bin Pretty dig replacement, for querying DNS from the command-line.
duf 22.04+: apt intall duf dnf install duf Easy-on-the-eyes du/df replacement.
dunk Use Python >= 3.7 and pipx to install to your user executable path. Pretty, colorful side-by-side git diffs achieved by git diff foo bar | dunk.
exa 20.10+: apt install exa (Git support not included) Add bash completion script to your ~/.bash_profile. Useful exag alias in .bash_aliases ls replacement with colorful, columnar output.
fd apt install fd-find dnf install fd-find Colorful, fast find replacement with sensible, opinionated defaults. fdfind is the command on Ubuntu.
fx snap install fx same or go install github.com/antonmedv/fx@latest JSON Viewer that helps with figuring out jq query syntax.
fzf apt install fzf, then look at apt show fzf to find instructions on enabling keybindings and autocompletions. dnf install fzf, then look in /usr/share/doc/fzf for how to enable keybindings. Powerful "command-line fuzzy finder" that is hard to describe adequately. Its Alt-C function has allowed me to augment autojump when jumping into the current tree. Just watch this YouTube video, or read this blog post.
glow dpkg (see below) same Render markdown nicely right in the terminal.
gitui Download binary. Place in ~/.local/bin same same
hexyl dpkg (see below) Colorful hexadecimal binary file viewer.
jnv cargo install jnv same Pure Rust interactive json filtering for subset of jq filters.
mdless gem install --user-install mdless snap install mdless? Pretty print Markdown with color to terminal. I find the --no-pager option useful when looking at small Markdown files
micro apt install micro dnf install micro Nano replacement with syntax highlighting.
nushell Download tarball release file, extract under ~/.local, and update alias
procs snap install procs dnf install procs Colorful, flexible ps replacement.
ripgrep apt install ripgrep dnf install ripgrep Fast, developer-friendly grep-like code searcher.
starship Install Fira Code Nerd Font; Set as font in terminal application; Set as font in VS Code; Follow Quick Install instructions using shell script. same Amazing developer-friendly, colorful, and rich shell prompt. Config: Copy .config/starship.toml to ~/.config
tig apt install tig Fancy git browser. I also like the "git lola" variant given at this blog post
vim apt install vim Like trusty old vi but better, includes syntax highlighting.
zellij snap install --classic zellij dnf install cargo && cargo install zellij Colorful, user-friendly, tmux replacement, that I usually use now. Config: Copy .config/zellij/config.yaml to use Alt-S and Alt-Q instead, which avoids collision with micro editor keys.
zenith dpkg (see below) Colorful top replacement.

dpkg = Find the appropriate non-musl-variant amd64 or armhf .deb release file in the project releases page (generally just add /releases to the GitHub project URL), curl -LO [release-file-url] for the appropriate .deb release file, then sudo dpkg -i [release-file].

snap is included on Ubuntu as its favored containerized application solution. It can be installed on Fedora, and is not supported on WSL. flatpak is in a way, the inverse: it is available by default on Fedora, but must be installed on Ubuntu.

Nowadays, containerized solutions like snap or flatpak are a common and useful way to install software on Linux.

For Python Development

  • uv - Fast replacement for pip, venv, et al, written in Rust.
  • wat - Interactive object introspection with colorful output.

Maybe at some point?

Look promising, but I haven't really tried enough and/or made up my mind yet:

  • I've been nervous about Nix & NixOS, but this tool looks to possibly give me 99% of what I might want from those, anyway, including having a lot of the above tools installed on any new machine easily: https://getfleek.dev/
  • nb - CLI-based notebook that utilizes Git and can sync your notes using a remote git repository.
  • rulex - I love that this "simplified" text matching language can generate non-trivial regexes for numeric ranges for me.
  • chezmoi - Manage dotfiles across machines leveraging Git, written in Go.