Modern Command Replacements: Upgrading Your CLI
Jul 2, 2026The traditional GNU coreutils (like ls, grep, and cat) have served us well for decades. However, a new generation of command-line tools—mostly written in Rust and Go—are redefining what terminal productivity looks like.
Here is a deep-dive list of modern command replacements you should install, complete with configurations and aliases to integrate them seamlessly into your daily shell.
1. Replace cat with bat
cat simply dumps a file to standard output. bat does the same, but adds syntax highlighting, Git integration, and paging.
- Repository: sharkdp/bat
- Key Advantage: It automatically formats files with syntax highlighting for dozens of programming and configuration languages. It also displays Git diff indicators (
+,-,~) in the gutter.
Configuring bat
You can configure a default theme and style by creating a configuration file. Run bat --config-file to see where it lives (usually ~/.config/bat/config on Linux).
Add the following settings:
# ~/.config/bat/config
# Set the theme (use "bat --list-themes" to see options)
--theme="Dracula"
# Show line numbers and Git status, but no grid headers
--style="numbers,changes"
# Use system pager (like less) only if content overflows the screen
--paging="auto"
2. Replace ls with eza
eza is a modern, actively maintained fork of the popular exa tool.
- Repository: eza-community/eza
- Key Advantage: It uses vibrant colors to distinguish file types, displays Git status inline, renders file icons, and offers a recursive
--treelayout.
Practical Examples
# List details including Git status and icons
eza -lh --icons --git
# List directory tree up to 2 levels deep
eza --tree --level=2 --icons
3. Replace grep with rg (ripgrep)
ripgrep is widely considered one of the fastest search tools in existence.
- Repository: BurntSushi/ripgrep
- Key Advantage: It respects
.gitignorerules by default, automatically skips hidden files/binary files, and runs circles around standardgrepin terms of search speed.
Advanced Search Commands
# Search for "API" case-insensitively in Python files only
rg -i "api" -t py
# Search for "TODO" across all files, including git-ignored and hidden files
rg -uu "TODO"
# Replace text on the fly (dry run)
rg "old_function" --replace "new_function"
4. Replace find with fd
find has a notoriously hard-to-remember syntax. fd is a simple, fast, and user-friendly alternative.
- Repository: sharkdp/fd
- Key Advantage: By default, it performs case-insensitive, colorized pattern matching, ignores
.gitignorefiles, and uses a much simpler command syntax.
Useful Commands & Batch Execution
# Find all markdown files containing "Zellij" in the title
fd -e md
# Search including hidden files (like .github configs)
fd -H config
# Find all zip files and delete them (Execute command)
fd -e zip -x rm {}
🎛️ Integrating Replacements: Recommended Aliases
To make these tools your default shell experience, add the following aliases to your shell configuration file (either ~/.bashrc or ~/.zshrc):
# Append this to ~/.bashrc or ~/.zshrc
# eza aliases replacing ls
if command -v eza >/dev/null 2>&1; then
alias ls="eza --icons"
alias ll="eza -lah --icons --git"
alias la="eza -a --icons"
alias lt="eza --tree --level=2 --icons"
fi
# bat replacing cat
if command -v bat >/dev/null 2>&1; then
alias cat="bat"
fi
Apply your changes immediately using:
source ~/.bashrc # or source ~/.zshrc