Loading blogs…
Tools4 min read
ripgrep, fd, bat, eza, fzf, zoxide and more — faster, friendlier replacements for grep, find, cat and ls, with install commands and config.
Full-stack engineer, New Delhi
The classic Unix tools are brilliant, but many were designed in the 1970s. A new generation — mostly written in Rust and Go — keeps the same ideas while being faster, colourful and sensible by default. These are the ones that earned a permanent place on my machines.
Install them all on Arch in one go:
sudo pacman -S ripgrep fd bat eza fzf zoxide btop dust jq git-delta tldr lazygit(On Ubuntu/Debian most are in apt too; note that fd is fd-find and bat is batcat there.)
rg) — instead of grepRecursively searches the current folder, respects .gitignore, skips binaries, and is extremely fast.
rg "useEffect" # search everything
rg -t ts "TODO" # only TypeScript files
rg -l "api_key" # just list matching files
rg -C 2 "panic" # with 2 lines of contextSimple syntax, sensible defaults, also respects .gitignore.
fd config # names containing "config"
fd -e md # all Markdown files
fd -H -t d node_modules # include hidden, only directoriesSyntax highlighting, line numbers and git change markers. It also makes a great pager for man pages:
export MANPAGER="sh -c 'col -bx | bat -l man -p'"Colours, icons, git status and a tree view built in.
alias ls='eza --group-directories-first'
alias ll='eza -lah --git --group-directories-first'
alias tree='eza --tree --level=2'The single biggest productivity boost on this list. It turns any list into an interactive fuzzy search. Enable the shell integration and you get:
Ctrl+R — fuzzy history searchCtrl+T — fuzzy-pick a file and paste its pathAlt+C — fuzzy cd into a subfolder# ~/.bashrc (or: source <(fzf --zsh) in ~/.zshrc)
eval "$(fzf --bash)"
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git'Pipe anything into it: git branch | fzf | xargs git checkout.
It remembers where you go. Type part of a folder name and it jumps to the best match.
eval "$(zoxide init bash --cmd cd)" # replace cd itself
cd dhruv # → ~/code/dhruvagrawat.com, if that's where you usually go
cdi # interactive picker with fzfA beautiful resource monitor with CPU, memory, disks, network and processes on one screen, fully mouse-driven.
Shows at a glance which folders are eating your disk, as a tree with bars. Just run dust in any directory.
Essential for working with APIs:
curl -s https://api.github.com/repos/torvalds/linux | jq '.stargazers_count'
cat package.json | jq '.dependencies | keys'Syntax-highlighted, side-by-side diffs everywhere git shows them:
# ~/.gitconfig
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
side-by-side = truetldr tar shows the five commands you actually wanted, instead of the full manual.
Stage individual lines, rebase interactively, resolve conflicts and browse history with single keystrokes. It's the one tool I show people that makes them install it on the spot.
I alias ls and cat but not grep or find: scripts, Stack Overflow answers and servers all assume the originals. Learn both — use the modern ones interactively, keep the classics for scripts.
Next step: keep all these aliases and configs in one place with dotfiles managed by GNU Stow.
Tools
Keep your .bashrc, .zshrc, git, Neovim and terminal configs in one git repo and symlink them anywhere with GNU Stow — set up a new Linux machine in minutes.
Terminal
Keyboard shortcuts, history tricks, brace expansion, xargs and more — practical Bash and Zsh tricks that make you much faster in the terminal.
Linux
Use ed25519 keys, ~/.ssh/config shortcuts, jump hosts and port forwarding like a pro — then harden your server's SSH daemon.