起因
cat / ls / find / du / top / df 是 1970 年代的设计,
在终端不支持彩色 + 不假设大字符集时的产物。2020 后有一批 Rust / Go 写
的现代替代,UX 显著好。下面是我桌面 + 服务器都装的 6 个。
1. bat 替代 cat
sudo apt install bat # Debian/Ubuntu (有时命令叫 batcat)
brew install bat # macOS
bat README.md
# 显示行号 + 语法高亮 + git 改动 marker + 自动 less 分页
更进一步:
bat src/*.py # 多文件
bat --diff README.md # 只显示有 git 改动的行
bat -A weird-file # 显示控制字符 / Unicode 不可见
bat --plain | less # 关掉装饰,纯 cat 行为
集成给其它工具用:
export PAGER='bat --plain' # man 命令用 bat 当 pager
alias cat='bat --plain --paging=never' # 替代 cat 但不分页
# 或保留 cat 原行为,bat 命令独立
2. eza(前 exa)替代 ls
brew install eza
cargo install eza
# Debian: 二进制 release
eza -lah # 长格式 + 隐藏 + 友好大小
eza --tree -L 2 # 树状显示
eza -la --git # 加 git 状态列(M / A / ! / ?)
eza -l --sort=size --reverse # 按大小排
eza --icons # 文件类型 icon(需 Nerd Font)
我的 alias:
alias ls='eza --icons --group-directories-first'
alias ll='eza -lah --icons --group-directories-first --git'
alias lt='eza --tree -L 3 --icons'
--group-directories-first 让目录排在前面,比标准 ls 更可读。
3. fd 替代 find
sudo apt install fd-find # 命令叫 fdfind
brew install fd
cargo install fd-find
alias fd=fdfind # Debian 上
# 找文件(自动 fuzzy + 默认尊重 .gitignore + 默认彩色)
fd config
# 在特定目录
fd config ~/projects
# 按扩展名
fd -e py -e pyx
# 找目录
fd -t d build
# 找后执行
fd -e log -x rm # 删所有 .log
fd -e py -x ruff check
比 find 简洁太多:
find . -name '*.py' -not -path './node_modules/*'
# vs
fd -e py # 自动跳过 .gitignore 里的 node_modules
fd 比 find 也快得多(并行)。
4. dust 替代 du
cargo install du-dust
brew install dust
dust # 当前目录大小,树状显示
dust -d 3 # 限制深度
dust ~/projects # 指定目录
输出例:
0B ┌── empty.txt
12M ├── data.json
512M ├─┬ logs
│ └── 2024
1.2G ├─┬ node_modules
│ ├── react ...
2.8G ┌── . (current)
带 ASCII 条形图 + 自动按大小排,秒级看出"哪个目录吃磁盘"。
比 du -h | sort -h 直观 100 倍。
5. duf 替代 df
sudo apt install duf
brew install duf
duf
输出:
╭─────────────────────────────────────────────────────────────────╮
│ 4 local devices │
├─────────────────────────────────────────────────────────────────┤
│ MOUNTED ON SIZE USED AVAIL USE% TYPE FILESYSTEM │
│ / 456.5G 234.2G 198.3G 51% ext4 /dev/nvme0n1p2 │
│ /boot 1.0G 245M 755M 24% ext4 /dev/nvme0n1p1 │
│ /home 912.0G 423.1G 442.1G 46% ext4 /dev/sda2 │
╰─────────────────────────────────────────────────────────────────╯
颜色 + 表格 + 进度条,一眼看出哪个分区危险。
6. btop 替代 top
sudo apt install btop
brew install btop
btop
全屏 TUI,比 top / htop 又好看又信息量大:
- 上方 CPU 每核 + 占用进程
- 中部内存 + swap
- 下方进程列表 + 网络 + 磁盘 IO
- 鼠标 + 键盘都能交互
- 跨平台(Linux / macOS / FreeBSD)
按 m 切换显示模式,+/- 缩放面板,q 退出。
一次性都装上
我的服务器初始化脚本:
sudo apt update
sudo apt install -y bat eza fd-find duf btop ripgrep zoxide fzf
# Debian 上 fd 叫 fdfind,bat 叫 batcat
echo 'alias fd=fdfind' >> ~/.bashrc
echo 'alias bat=batcat' >> ~/.bashrc
# 或一个 cargo 大餐:
cargo install bat eza fd-find du-dust ripgrep starship zoxide
工具对照表
| 老 | 新 | 主要优点 |
|---|---|---|
cat |
bat |
语法高亮、行号、git 改动 |
ls |
eza |
颜色、git、icon、tree |
find |
fd |
简洁、快、尊重 .gitignore |
grep |
rg |
快 10x、跳过 .git、smart-case |
du |
dust |
直观、条形图 |
df |
duf |
表格、颜色 |
top |
btop |
信息更全、好看 |
cd |
z |
模糊跳 |
man |
tldr |
例子优先而非全文档 |
make |
just |
简洁、跨平台 |
tldr 顺便提一下
brew install tldr
tldr tar
# tar
# Archiving utility.
# Create an archive from files:
# tar -cf target.tar file1 file2 file3
# Create a gzipped archive:
# tar -czf target.tar.gz file1 file2 file3
# ...
不需要看 200 行 man,直接给你常用的几条示例。
效果
- 日常 ls/cat 命令视觉信息量翻倍,找东西更快
- "哪个目录占空间" 类问题秒回(dust)
- 服务器 troubleshoot 三件套:
btop+dust+duf一屏诊断 - 新机器 5 分钟初始化完所有工具
- 同事被安利后没人愿意回去用原生 ls
踩过的坑
-
Debian 命令名前缀 fd-find / batcat:跟其它工具冲突历史原因。
alias 一行解决,但脚本里调用要小心,别在脚本里依赖 alias
(脚本默认 non-interactive 不读 alias)。 -
服务器没有 Nerd Font 装不了 icon:
eza --icons显示豆腐块。
服务器上去掉--icons即可(仍有颜色)。 -
bat 默认 pager 是 less:
less -R才能正确显示 ANSI。
export BAT_PAGER='less -R'显式设。 -
fd 不显示隐藏文件:默认尊重
.gitignore+ 隐藏文件。
fd -H显示隐藏;fd -I忽略 ignore 规则;fd -HI全开。 -
btop CPU 占用高:默认刷新 2Hz,加
--update 5改 5Hz 不影响判断
但更稳。
登录后参与评论。