7 Rust CLI Tools That Are Replacing Classic Linux Commands in 2026
🎯 Key Takeaways
- Why Rust CLI Tools? The Short Version
- Install All Seven at Once
- The Ubuntu 26.04 Angle: This Is Coming Whether You Choose It or Not
📑 Table of Contents
- Why Rust CLI Tools? The Short Version
- 1. eza — Replaces ls
- 2. bat — Replaces cat
- 3. ripgrep (rg) — Replaces grep -r
- 4. fd — Replaces find
- 5. zoxide — Replaces cd
- 6. atuin — Replaces Shell History (Ctrl+R)
- 7. btop — Replaces top and htop
- Install All Seven at Once
- The Ubuntu 26.04 Angle: This Is Coming Whether You Choose It or Not
Ubuntu 26.04 LTS, releasing in April 2026, is doing something quietly radical: it’s replacing some of the most fundamental Unix command-line tools with Rust rewrites. sudo is being replaced by sudo-rs. Core utilities like ls, cp, mv, and cat are being replaced by their uutils Rust equivalents. The motivation is memory safety — eliminating an entire class of C-based vulnerabilities in the most-used tools on any Linux system.
📑 Table of Contents
- Why Rust CLI Tools? The Short Version
- 1. eza — Replaces ls
- 2. bat — Replaces cat
- 3. ripgrep (rg) — Replaces grep -r
- 4. fd — Replaces find
- 5. zoxide — Replaces cd
- 6. atuin — Replaces Shell History (Ctrl+R)
- 7. btop — Replaces top and htop
- Install All Seven at Once
- The Ubuntu 26.04 Angle: This Is Coming Whether You Choose It or Not
But here’s the thing: the best Rust CLI replacements were worth adopting long before Ubuntu made them defaults. If you spend any serious time in the terminal — and as a Linux sysadmin, you do — these tools aren’t just incrementally better than the classics. Some of them are so much faster and more useful that going back feels like switching from a fibre connection to dial-up.
This guide covers 7 Rust-based CLI tools that are actively replacing their classic counterparts, with real commands and concrete reasons each one earns a place in your daily toolkit.
Why Rust CLI Tools? The Short Version
Rust enforces memory safety at compile time — no buffer overflows, no use-after-free bugs, no null pointer dereferences in well-written Rust code. That’s the security argument. But for sysadmins, the performance argument is equally compelling: Rust tools are typically faster than their C counterparts, often dramatically so, because they’re built with modern CPU features, parallel execution, and efficient I/O in mind from day one.
The tools below are not toy replacements. Most of them are packaged in the default repositories of Ubuntu, Fedora, Debian, and RHEL. Some have hundreds of thousands of GitHub stars. They are in daily use across the industry.
1. eza — Replaces ls
Install:
sudo apt install eza # Ubuntu/Debian
sudo dnf install eza # Fedora/RHEL
What makes it better: eza shows file sizes in human-readable format by default, displays Git status per file, has a built-in tree view, and uses colour to distinguish file types, permissions, and ages without any configuration.
eza -la # long listing, human-readable sizes
eza --tree --level=2 # tree view, 2 levels deep
eza -la --git # git status column per file (staged, modified, etc.)
eza --icons -la # Nerd Font file-type icons (requires patched font)
eza -la --sort=modified # sorted by modification time
The --git flag alone makes this worthwhile on any system where you work with repos. At a glance you can see which files are modified, staged, or untracked without running git status separately.
Drop-in aliases for your .bashrc:
alias ls='eza --group-directories-first'
alias ll='eza -la --git'
alias lt='eza --tree --level=2'
2. bat — Replaces cat
Install:
sudo apt install bat # installs as 'batcat' on Debian/Ubuntu
sudo ln -sf /usr/bin/batcat /usr/local/bin/bat # fix the name
sudo dnf install bat # Fedora: installs as 'bat' directly
What makes it better: bat adds syntax highlighting for hundreds of file types, shows Git diff annotations in the gutter, adds line numbers, and uses a pager for long files — all with zero configuration. Reading a config file or script with bat instead of cat is immediately, visually different.
bat /etc/nginx/nginx.conf # syntax-highlighted config file
bat /etc/fstab # highlighted with line numbers
bat --diff /etc/ssh/sshd_config # shows git diff inline
bat -n /var/log/auth.log # force line numbers, useful for referencing
# Pipe use cases
journalctl -u sshd --since "1 hour ago" | bat -l log # log syntax highlighting
cat /proc/cpuinfo | bat -l ini # force a syntax language
When using bat in scripts where you don’t want the pager, use:
alias cat='bat --paging=never'
3. ripgrep (rg) — Replaces grep -r
Install:
sudo apt install ripgrep
sudo dnf install ripgrep
What makes it better: ripgrep is benchmarked as the fastest grep alternative available, regularly beating GNU grep by 10–50x on large codebases and log directories. It automatically skips .git directories, binary files, and respects .gitignore. It also colourises output, shows line numbers by default, and supports PCRE2 regex.
rg "Failed password" /var/log/auth.log # search a specific file
rg "error" /var/log/ # search all files recursively
rg -t yaml "image:" /etc/ # only search YAML files
rg -l "SELINUX=disabled" /etc/ # list files that contain the match
rg "OOM" /var/log/ --stats # search with match count statistics
rg -i "timeout" /etc/nginx/ # case-insensitive search
rg "error" -A 3 -B 2 /var/log/syslog # 3 lines after, 2 before each match
For sysadmin work, the single biggest win is searching large log directories. On a host with 50 GB of rotated logs, rg completes in 2–3 seconds what takes grep -r 40–60 seconds.
4. fd — Replaces find
Install:
sudo apt install fd-find
# On Debian/Ubuntu the binary is 'fdfind' — add an alias:
alias fd=fdfind
sudo dnf install fd # Fedora: binary is 'fd' directly
What makes it better: fd has a simpler syntax than find, is significantly faster, automatically ignores hidden files and .git directories, colourises output, and supports regex patterns out of the box.
fd ".conf" /etc # find all .conf files under /etc
fd -t f -e log /var/log # files with .log extension only
fd --changed-within 24h /etc # files modified in the last 24 hours
fd "backup" /home --exec ls -lh {} # find and run a command on each result
fd -t d "nginx" / # find directories named nginx
fd "core" /tmp --exec rm {} # find and delete core dump files
Compare the syntax for “find all .conf files modified in the last day”:
# Classic find:
find /etc -name "*.conf" -mtime -1 -type f
# fd:
fd -e conf --changed-within 1d /etc
The fd version is faster to type and to read.
5. zoxide — Replaces cd
Install:
sudo apt install zoxide
# or: cargo install zoxide
Add to ~/.bashrc (or ~/.zshrc):
eval "$(zoxide init bash)"
What makes it better: zoxide learns which directories you visit most often and lets you jump to them with partial names — without typing the full path. It maintains a weighted database of your directory history and matches based on frequency and recency.
z nginx # jumps to /etc/nginx (or wherever you go most with 'nginx' in path)
z proj # jumps to ~/projects/my-main-project
z log # jumps to /var/log or wherever 'log' matches most
zi # opens an interactive fuzzy finder (requires fzf installed)
After a week of use, z replaces the majority of your cd commands with 2–4 character shortcuts. For sysadmins who navigate the same handful of directories dozens of times a day, this is a surprisingly large quality-of-life improvement.
6. atuin — Replaces Shell History (Ctrl+R)
Install:
bash <(curl https://raw.githubusercontent.com/atuinsh/atuin/main/install.sh)
Add to ~/.bashrc:
eval "$(atuin init bash)"
What makes it better: atuin replaces the standard Ctrl+R history search with a full-screen fuzzy finder that shows timestamps, command duration, exit codes, and the host each command was run on. It also supports optional encrypted sync across multiple machines.
atuin stats # show your most-used commands
atuin search "docker" # search history for docker commands
atuin search --exit 1 # find commands that failed (non-zero exit)
atuin search --before "1 week ago" # commands from last week
The --exit 1 filter is particularly useful: when debugging a recurring issue, you can instantly pull up every failed command from the past month rather than scrolling through thousands of successful ones.
The sync feature is optional and uses end-to-end encryption — your history never exists in plaintext on atuin’s servers. But even without sync, the local experience alone justifies the install.
7. btop — Replaces top and htop
Install:
sudo apt install btop
sudo dnf install btop
What makes it better: btop displays CPU, memory, disk I/O, and network usage in a single, colour-coded, mouse-navigable TUI. It’s visually far superior to both top and htop, supports themes, allows filtering and sorting processes interactively, and shows per-core CPU graphs.
btop # launch the monitor
# Mouse clicks work: click column headers to sort, click processes to select
# Press 'k' to kill a selected process with a confirmation prompt
# Press 'f' to filter processes by name
# Press 'h' for the full help screen
For quick CPU/memory checks without a full TUI, btop --utf-force ensures correct rendering on older terminals.
Install All Seven at Once
On Ubuntu/Debian:
sudo apt install -y eza bat ripgrep fd-find zoxide atuin btop
# Fix Debian binary names
sudo ln -sf /usr/bin/batcat /usr/local/bin/bat
echo 'alias fd=fdfind' >> ~/.bashrc
# Initialise zoxide and atuin
echo 'eval "$(zoxide init bash)"' >> ~/.bashrc
echo 'eval "$(atuin init bash)"' >> ~/.bashrc
source ~/.bashrc
On Fedora/RHEL:
sudo dnf install -y eza bat ripgrep fd zoxide btop
# atuin: install via script or cargo
bash <(curl https://raw.githubusercontent.com/atuinsh/atuin/main/install.sh)
echo 'eval "$(zoxide init bash)"' >> ~/.bashrc
echo 'eval "$(atuin init bash)"' >> ~/.bashrc
The Ubuntu 26.04 Angle: This Is Coming Whether You Choose It or Not
With Ubuntu 26.04 LTS planning to ship sudo-rs and uutils/coreutils as defaults, the Rust-based CLI ecosystem is crossing from “enthusiast choice” to “default infrastructure.” Sysadmins managing Ubuntu servers need to be aware that the tools they’ve used for 20 years may behave slightly differently in edge cases — and that the replacements, in most cases, are objectively better.
Adopting these tools now, before the LTS upgrade, means you arrive at Ubuntu 26.04 already comfortable with the new baseline rather than surprised by it. You also get the daily productivity gains in the meantime.
Start with bat and rg — they require zero configuration, drop straight into existing workflows, and deliver immediate visible benefits. Add eza, fd, and btop next. Once those feel natural, zoxide and atuin round out a terminal environment that’s noticeably faster and more pleasant to work in than the one it replaces.
The Unix philosophy hasn’t changed: small tools that do one thing well. These tools just do that one thing considerably better than the originals did.
Was this article helpful?
About Ramesh Sundararamaiah
Red Hat Certified Architect
Expert in Linux system administration, DevOps automation, and cloud infrastructure. Specializing in Red Hat Enterprise Linux, CentOS, Ubuntu, Docker, Ansible, and enterprise IT solutions.