工欲善其事,必先利其器。 用现代工具替代传统命令,让终端操作效率翻倍。

终端是开发者的主场。但传统的 lscdcatfind 这些命令,诞生于几十年前的 Unix时代,功能基础、体验原始。

2026 年,我们有了更好的选择:Rust 和 Go 编写的新一代工具,速度更快、体验更好、功能更强。本文介绍六款现代 CLI 工具,帮你打造高效的工作流。

📋 目录

  1. 工具概览
  2. bat - 带翅膀的 cat
  3. eza - 现代化的 ls
  4. fd - 极速文件查找
  5. fzf - 模糊搜索神器
  6. zoxide - 智能目录跳转
  7. yazi - 终端文件管理器
  8. 工具对比矩阵
  9. 组合使用示例
  10. 常见问题
  11. 总结

工具概览

工具 替代命令 核心优势 语言
bat cat 语法高亮 + Git 集成 Rust
eza ls 彩色输出 + Git 状态 + 图标 Rust
fd find 极速 + 智能过滤 Rust
fzf - 模糊搜索 + 交互式选择 Go
zoxide cd/z 智能跳转 + 学习历史 Rust
yazi ranger/lf 异步架构 + 图片预览 Rust
1
2
3
4
5
6
传统工具                    现代替代
cat file.txt → bat file.txt
ls -la → eza -la
find . -name "*.js" → fd .js
cd ~/projects/app → z app
ranger → yazi

bat - 带翅膀的 cat

batcat 的现代替代品,由 sharkdp(ripgrep 作者)开发。项目名「bat」意为「带翅膀的 cat」。

核心特性

1
2
3
# bat vs cat 对比
cat main.rs # 原始文本输出
bat main.rs # 语法高亮 + 行号 + Git 标记
特性 说明
语法高亮 支持 150+ 语言,内置 syntect引擎
Git 集成 显示文件修改标记(左侧边栏)
行号显示 自动显示,可配置样式
自动分页 输出过长时自动调用 pager
非打印字符 -A 选项显示特殊字符

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# macOS
brew install bat

# Arch Linux
pacman -S bat

# Ubuntu/Debian
sudo apt install bat

# Fedora
dnf install bat

# Windows (winget)
winget install sharkdp.bat

⚠️ 注意: Ubuntu/Debian 上可能安装为 batcat,需创建别名:

1
2
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat

实用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 查看代码文件(自动高亮)
bat src/main.rs

# 显示 Git 修改标记
bat --style=changes,numbers config.py

# 只显示行号(无高亮)
bat -n plain.txt

# 查看非打印字符
bat -A binary.log

# 从 stdin 读取(指定语言)
curl -s https://example.com/api.json | bat -l json

# 合并多个文件
bat header.md content.md footer.md > document.md

# 作为 man pager(彩色手册页)
export MANPAGER="bat -plman"
man 2 select

集成其他工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# fzf 预览
fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"

# fd 批量查看
fd -e rs -X bat

# git show 查看历史版本
git show v1.0:main.rs | bat -l rs

# tail -f 实时监控
tail -f /var/log/app.log | bat --paging=never -l log

# 高亮 help 输出
alias bathelp='bat --plain --language=help'
help() {
"$@" --help 2>&1 | bathelp
}

配置文件

1
2
3
4
5
6
7
8
9
# 配置文件位置
~/.config/bat/config

# 示例配置
--theme="TwoDark"
--style="numbers,changes,grid"
--italic-text=always
--pager="less -RF"
--map-syntax "*.conf:json"

主题选择

1
2
3
4
5
6
7
8
9
10
11
12
# 查看所有主题
bat --list-themes

# 实时预览主题
bat --list-themes | fzf --preview="bat --theme={} --color=always main.rs"

# 设置主题
export BAT_THEME="TwoDark"

# 自动适应深/浅色模式
export BAT_THEME_DARK="Monokai Extended"
export BAT_THEME_LIGHT="Monokai Extended Light"

eza - 现代化的 ls

ezaexa 的继任者(exa 已停止维护),用 Rust 编写,提供彩色输出、Git 状态、文件图标等现代特性。

核心特性

特性 说明
彩色输出 文件类型自动配色
Git 状态 显示修改、新增、删除标记
文件图标 Unicode 图标区分文件类型
树形视图 --tree 递归显示目录结构
Hyperlink 终端可点击链接

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# macOS
brew install eza

# Arch Linux
pacman -S eza

# Ubuntu/Debian
sudo apt install eza

# Fedora
dnf install eza

# Nix
nix-env -iA nixpkgs.eza

实用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 基本用法(替代 ls)
eza # 简洁列表
eza -la # 详细列表 + 隐藏文件

# 显示 Git 状态
eza --git # Git 状态标记
eza --git-status # 详细 Git 信息

# 文件图标
eza --icons # Unicode图标
eza --icons=auto # 自动判断是否显示

# 树形视图
eza --tree # 递归显示
eza --tree --level=2 # 限制层级
eza -T --git # 树形 + Git

# 按时间排序
eza -la --sort=modified # 按修改时间
eza -la --sort=created # 按创建时间
eza -la --sort=size # 按大小

# 组合使用
eza -la --git --icons --sort=modified

Git 状态标记

标记 说明
- 已修改,未暂存
M 已暂存,未提交
+ 新文件,未跟踪
! 已删除

配置别名

1
2
3
4
5
# ~/.zshrc 或 ~/.bashrc
alias ls='eza'
alias ll='eza -la --icons --git'
alias lt='eza --tree --level=2 --icons'
alias l='eza -la --icons --git --group-directories-first'

fd - 极速文件查找

fdfind 的现代替代品,速度更快、语法更简单、智能过滤。

核心特性

特性 说明
极速搜索 多线程并行,比 find 快10x+
智能过滤 自动跳过 .git、node_modules
彩色输出 不同文件类型自动配色
正则支持 支持正则表达式模式
并行执行 -x 并行执行命令

安装

1
2
3
4
5
6
7
8
9
10
11
12
# macOS
brew install fd

# Arch Linux
pacman -S fd

# Ubuntu/Debian
sudo apt install fd-find
# 注意:可能需要 alias fd=fdfind

# Fedora
dnf install fd-find

实用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 基本搜索
fd pattern # 搜索文件名包含 pattern
fd .js # 搜索所有 .js 文件
fd -e rs main # 搜索 rs 文件中包含 main

# 按类型搜索
fd -t f # 只搜索文件
fd -t d # 只搜索目录
fd -t x # 只搜索可执行文件
fd -t l # 只搜索符号链接

# 按扩展名
fd -e py # Python 文件
fd -e js -e ts # JS 和 TS 文件

# 按大小/时间
fd -S +10M # 大于 10MB
fd --changed-within 1d # 1天内修改
fd --changed-before 1w # 1周前修改

# 隐藏文件
fd -H pattern # 包含隐藏文件
fd -I pattern # 忽略 .gitignore

# 正则模式
fd -x 'test_.*\.py' # 正则匹配

# 并行执行命令
fd -e jpg -x rm # 删除所有 jpg
fd -e rs -x bat # 用 bat 查看所有 rs 文件
fd -t f -X chmod 644 # 批量修改权限

# 排除特定目录
fd -E node_modules pattern
fd --exclude .git pattern

fd vs find对比

1
2
3
4
5
# find 语法(复杂)
find . -name "*.js" -type f -not -path "./node_modules/*"

# fd 语法(简洁)
fd -e js -E node_modules
维度 find fd
语法复杂度
默认过滤 智能
速度 快 10x+
彩色输出 需配置 默认
并行执行 -exec -x

fzf - 模糊搜索神器

fzf 是通用的模糊搜索工具,可与任何命令集成,提供交互式选择界面。

核心特性

特性 说明
模糊匹配 智能匹配,无需精确输入
交互式选择 可用键盘实时筛选
高度可定制 布局、颜色、键绑定全可配置
广泛集成 shell、vim、tmux等
预览窗口 实时预览选中内容

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# macOS
brew install fzf
# 安装 shell 集成
$(brew --prefix)/opt/fzf/install

# Arch Linux
pacman -S fzf

# Ubuntu/Debian
sudo apt install fzf

# 手动安装
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

实用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 基本用法
fzf # 从 stdin 选择
fzf -f pattern # 直接过滤

# 搜索文件
fd | fzf # 用 fd 提供文件列表
fd -t f | fzf # 只搜索文件

# 带预览窗口
fzf --preview 'bat --color=always {}'
fzf --preview-window=right:50% # 右侧50%宽度

# 搜索命令历史
history | fzf # 搜索历史命令

# 搜索环境变量
printenv | fzf # 搜索环境变量

# 搜索进程
ps aux | fzf # 交互式选择进程

# 搜索 Git 分支
git branch | fzf # 选择分支

# 组合 fd + bat
fd -e rs | fzf --preview 'bat --color=always --style=numbers {}'

# 使用 Ctrl-T/Ctrl-R/Ctrl-Alt-J(shell 集成)
# Ctrl-T 搜索文件
# Ctrl-R 搜索历史
# Alt-C 搜索目录(zoxide集成)

Shell 集成

1
2
3
4
5
6
7
8
9
10
11
# 安装后自动生成以下快捷键:
# Ctrl-T 文件搜索
# Ctrl-R 命令历史搜索
# Alt-C 目录跳转

# 自定义快捷键绑定
export FZF_CTRL_T_OPTS="--preview 'bat --color=always {}'"
export FZF_CTRL_R_OPTS="--sort"

# 布局配置
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"

高级用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 多选模式
fzf -m # 可选多个文件

# 分屏布局
fzf --height 50% --layout=reverse

# 边框样式
fzf --border --border-rounded

# 颜色主题
fzf --color=bg+:#3b4252,bg:#1e1e2e

# 使用 fd 作为默认输入
export FZF_DEFAULT_COMMAND="fd --type f"
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"

zoxide - 智能目录跳转

zoxidecdz 的智能替代品,基于 frecency(频率 + 近期)算法,自动学习你的目录习惯。

核心特性

特性 说明
智能跳转 输入部分名称即可跳转
自动学习 记录访问历史,权重自动调整
frecency算法 频率 + 时间双重权重
多目录匹配 模糊匹配多个候选
跨平台 Linux/macOS/Windows

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# macOS
brew install zoxide

# Arch Linux
pacman -S zoxide

# Ubuntu/Debian
sudo apt install zoxide

# Fedora
dnf install zoxide

# Windows (winget)
winget install ajeetdsouza.zoxide

# Nix
nix-env -iA nixpkgs.zoxide

Shell 初始化

1
2
3
4
5
6
7
8
9
10
11
# Bash (~/.bashrc)
eval "$(zoxide init bash)"

# Zsh (~/.zshrc)
eval "$(zoxide init zsh)"

# Fish (~/.config/fish/config.fish)
zoxide init fish | source

# PowerShell
Invoke-Expression (& { (zoxide init powershell | Out-String) })

实用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 记录目录(访问时自动记录)
z ~/projects/myapp
z /var/log

# 智能跳转
z myapp # 跳转到包含 "myapp" 的目录
z pro # 跳转到 projects
z log # 跳转到 /var/log

# 显示候选列表
zi # 交互式选择(fzf 集成)
z -l # 列出历史目录

# 添加目录(不跳转)
zoxide add ~/new-project

# 删除记录
zoxide remove ~/old-project

# 查询分数
zoxide query myapp

# 交互式选择(需要 fzf)
zi # 用 fzf 选择目录

frecency 算法

1
2
3
4
5
6
7
frecency = frequency × recency

frequency: 访问次数
recency: 最近访问时间权重

访问 100 次,最后一次是昨天 → 高权重
访问 1 次,最后一次是去年 → 低权重

配置选项

1
2
3
4
5
6
7
# 初始化选项
eval "$(zoxide init zsh --cmd cd)" # 用 cd 作为命令名

# 自定义别名
alias z='zoxide'
alias zi='zoxide -i'
alias za='zoxide add'

yazi - 终端文件管理器

Yazi(鸭子)是用 Rust 编写的终端文件管理器,全异步架构,速度极快。已有详细指南,此处简要介绍。

核心特性

特性 说明
全异步架构 所有 I/O 操作异步执行
图片预览 支持 Kitty、iTerm2、Sixel协议
代码高亮 内置语法高亮,无需 bat
插件系统 Lua 插件扩展
任务管理 复制/移动进度显示

安装

1
2
3
4
5
6
7
8
# macOS
brew install yazi ffmpeg 7zip jq poppler fd ripgrep fzf zoxide

# Arch Linux
pacman -S yazi ffmpeg 7zip jq poppler fd ripgrep fzf zoxide

# 启动
yazi

与其他工具集成

1
2
3
4
5
# Yazi 内置集成:
# / → fd 文件搜索
# s → rg 内容搜索
# f → fzf 快速跳转
# z → zoxide 目录跳转

完整指南见:Yazi 终端文件管理器使用指南


工具对比矩阵

传统 vs 现代

传统命令 现代替代 速度提升 主要优势
cat bat - 高亮 + Git + 分页
ls eza 2x 彩色 + Git + 图标
find fd 10x+ 智能过滤 + 简洁语法
cd zoxide - 智能跳转 + 学习历史
- fzf - 模糊搜索 + 交互选择
ranger yazi 5x 异步 + 图片预览

功能对比

工具 Git 集成 彩色输出 智能过滤 可定制 学习曲线
bat -
eza -
fd -
fzf -
zoxide - -
yazi

组合使用示例

1. 文件查找 + 查看流程

1
2
3
4
5
# fd 找文件 → fzf 选择 → bat 查看
fd -e rs | fzf --preview 'bat --color=always {}'

# 直接用 fzf 预览
fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'

2. 目录跳转 + 文件管理

1
2
3
4
5
# zoxide 跳转 → yazi 管理
z myapp && yazi

# 或在 yazi 内用 zoxide
# 按 z 键,输入 myapp,跳转

3. 搜索 + 执行

1
2
3
4
5
6
# fd 找文件 → fzf 选择 → 执行
fd -t f | fzf | xargs bat

# 并行执行
fd -e jpg -x rm
fd -e py -x pytest

4. Git 工作流

1
2
3
4
5
6
7
8
9
# 查看 Git 状态文件
eza --git --icons

# 搜索修改文件
fd --changed-within 1d --type f

# 查看修改内容
git show HEAD:main.rs | bat -l rs
git diff | batdiff

5. Shell 配置推荐

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# ~/.zshrc 或 ~/.bashrc

# bat
alias cat='bat'
export MANPAGER="bat -plman"

# eza
alias ls='eza --icons'
alias ll='eza -la --icons --git'
alias lt='eza --tree --level=2 --icons'

# fd(替代 find)
alias find='fd'

# zoxide
eval "$(zoxide init zsh)"
alias cd='z'

# fzf 集成
export FZF_DEFAULT_COMMAND="fd --type f"
export FZF_CTRL_T_OPTS="--preview 'bat --color=always {}'"
export FZF_ALT_C_OPTS="--preview 'eza --tree --level=1 {}'"

常见问题

Q: 这些工具都需要安装,会不会太麻烦?

A: 一次安装,长期受益。推荐用包管理器批量安装:

1
2
3
4
5
# macOS
brew install bat eza fd fzf zoxide yazi ripgrep

# Arch Linux
pacman -S bat eza fd fzf zoxide yazi ripgrep

Q: 传统命令在某些场景仍需要,怎么办?

A: 可以共存。关键场景(如SSH服务器)可用传统命令:

1
2
3
4
5
6
# 本地用现代工具
alias cat='bat'
alias ls='eza'

# 服务器用原命令(别名只在本地生效)
ssh server 'cat /var/log/app.log' # 使用原 cat

或用 command 跳过别名:

1
2
command cat file.txt  # 使用原 cat
command ls -la # 使用原 ls

Q: bat 的输出会被管道影响吗?

A: 会自动调整。管道输出时,bat 自动切换为纯文本模式:

1
2
3
4
5
6
7
8
# 交互模式:高亮输出
bat main.rs

# 管道模式:纯文本输出
bat main.rs | grep "fn main"

# 强制高亮(用于 fzf 预览)
bat --color=always main.rs | fzf

Q: fd 如何处理中文文件名?

A: 完美支持。fd 和其他 Rust 工具对 Unicode 支持完善:

1
2
fd "文档"            # 搜索中文文件名
fd -e py "测试" # 搜索测试相关文件

Q: zoxide 会记录所有目录吗?

A: 只记录你访问的目录。敏感目录不会被记录:

1
2
3
4
5
# 删除特定记录
zoxide remove ~/secrets

# 清空所有记录
zoxide query --clear

Q: fzf 预览窗口加载慢?

A: 限制预览行数:

1
2
3
4
5
# 只预览前 500 行
fzf --preview 'bat --color=always --line-range=:500 {}'

# 限制窗口大小
fzf --preview-window=right:40%:wrap

总结

六款现代 CLI 工具,各司其职:

工具 一句话总结 推荐指数
bat 带翅膀的 cat,高亮 + Git ⭐⭐⭐⭐⭐
eza 彩色 ls,图标 + Git ⭐⭐⭐⭐⭐
fd 极速 find,智能过滤 ⭐⭐⭐⭐⭐
fzf 模糊搜索神器,交互式选择 ⭐⭐⭐⭐⭐
zoxide 智能跳转,学习你的习惯 ⭐⭐⭐⭐⭐
yazi 终端文件管理器,异步架构 ⭐⭐⭐⭐

最终建议

  1. 全部安装 — 包管理器一键安装,无依赖冲突
  2. 配置别名 — 替代传统命令,潜移默化提升效率
  3. 组合使用 — fd + fzf + bat 形成搜索-选择-查看流
  4. Yazi 集成 — 内置所有工具,统一入口

延伸阅读


💡 提示: 这些工具都是 Rust 或 Go 编写,性能强悍。全部安装后,配置别名替代传统命令,效率提升立竿见影。