Same job, better defaults
Most classic Unix tools (cat, ls, find, grep, du, df) have modern Rust/Go rewrites with sane defaults: color, gitignore-aware, human-readable. They don't replace the originals — the originals are always there — but for daily interactive use they're life-changing.
The lineup
bat← cat. Syntax highlighting, line numbers, paging.eza(formerly exa) ← ls. Color, git status, tree mode built in.fd← find. Friendly syntax (fd 'name'), respects .gitignore by default.ripgrep(rg) ← grep. 5–10× faster, ignores binaries / .gitignore / .git.dust← du. Tree of disk usage, sorted, colored.duf← df. Cleaner mount table.
Install in one shot
brew install bat eza fd ripgrep dust dufThe two killers — rg and fd
rg TODO --type py # every TODO in Python files
rg -l 'class Foo' src/ # files containing the pattern
rg -A 3 'def main' # 3 lines after each match
fd '\.test\.ts$' # find TS test files
fd -e jpg -x convert {} {.}.png # convert every jpg to pngDon't alias them on top of the originals
Tempting to alias cat=bat, but scripts that pipe to cat may not understand bat's pager. Use the new names. Keep the originals working unchanged.