bat / eza / fd / dust / btop:把 6 个常用命令一次性现代化

起因

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

踩过的坑

  1. Debian 命令名前缀 fd-find / batcat:跟其它工具冲突历史原因。
    alias 一行解决,但脚本里调用要小心,别在脚本里依赖 alias
    (脚本默认 non-interactive 不读 alias)。

  2. 服务器没有 Nerd Font 装不了 iconeza --icons 显示豆腐块。
    服务器上去掉 --icons 即可(仍有颜色)。

  3. bat 默认 pager 是 lessless -R 才能正确显示 ANSI。
    export BAT_PAGER='less -R' 显式设。

  4. fd 不显示隐藏文件:默认尊重 .gitignore + 隐藏文件。
    fd -H 显示隐藏;fd -I 忽略 ignore 规则;fd -HI 全开。

  5. btop CPU 占用高:默认刷新 2Hz,加 --update 5 改 5Hz 不影响判断
    但更稳。

精确评价 共 0 人评价
可复现性
可复现 · 0 不可复现 · 0
文风
文风流畅 · 0 文风晦涩 · 0
立场
支持 · 0 反对 · 0

登录后即可对本帖作出评价。

评论区 0 条 · 所有人可在此交流

登录后参与评论。

还没有评论,来说两句。