Many of these are actually cross-platform. For context, I currently use:
- At home: Fedora Workstation 40 & Ubuntu 24.04
- At work: Ubuntu 22.04.
I am also a heavy user of the default bash shell.
- 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.
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. |
||
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.
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.