工欲善其事,必先利其器。 用现代工具替代传统命令,让终端操作效率翻倍。
终端是开发者的主场。但传统的 ls、cd、cat、find 这些命令,诞生于几十年前的 Unix时代,功能基础、体验原始。
2026 年,我们有了更好的选择:Rust 和 Go 编写的新一代工具,速度更快、体验更好、功能更强。本文介绍六款现代 CLI 工具,帮你打造高效的工作流。
📋 目录
- 工具概览
- bat - 带翅膀的 cat
- eza - 现代化的 ls
- fd - 极速文件查找
- fzf - 模糊搜索神器
- zoxide - 智能目录跳转
- yazi - 终端文件管理器
- 工具对比矩阵
- 组合使用示例
- 常见问题
- 总结
工具概览
| 工具 |
替代命令 |
核心优势 |
语言 |
| 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
bat 是 cat 的现代替代品,由 sharkdp(ripgrep 作者)开发。项目名「bat」意为「带翅膀的 cat」。
核心特性
1 2 3
| cat main.rs bat main.rs
|
| 特性 |
说明 |
| 语法高亮 |
支持 150+ 语言,内置 syntect引擎 |
| Git 集成 |
显示文件修改标记(左侧边栏) |
| 行号显示 |
自动显示,可配置样式 |
| 自动分页 |
输出过长时自动调用 pager |
| 非打印字符 |
-A 选项显示特殊字符 |
安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| brew install bat
pacman -S bat
sudo apt install bat
dnf install bat
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
bat --style=changes,numbers config.py
bat -n plain.txt
bat -A binary.log
curl -s https://example.com/api.json | bat -l json
bat header.md content.md footer.md > document.md
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 --preview "bat --color=always --style=numbers --line-range=:500 {}"
fd -e rs -X bat
git show v1.0:main.rs | bat -l rs
tail -f /var/log/app.log | bat --paging=never -l log
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
eza 是 exa 的继任者(exa 已停止维护),用 Rust 编写,提供彩色输出、Git 状态、文件图标等现代特性。
核心特性
| 特性 |
说明 |
| 彩色输出 |
文件类型自动配色 |
| Git 状态 |
显示修改、新增、删除标记 |
| 文件图标 |
Unicode 图标区分文件类型 |
| 树形视图 |
--tree 递归显示目录结构 |
| Hyperlink |
终端可点击链接 |
安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| brew install eza
pacman -S eza
sudo apt install eza
dnf install eza
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
| eza eza -la
eza --git eza --git-status
eza --icons eza --icons=auto
eza --tree eza --tree --level=2 eza -T --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
| 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 - 极速文件查找
fd 是 find 的现代替代品,速度更快、语法更简单、智能过滤。
核心特性
| 特性 |
说明 |
| 极速搜索 |
多线程并行,比 find 快10x+ |
| 智能过滤 |
自动跳过 .git、node_modules |
| 彩色输出 |
不同文件类型自动配色 |
| 正则支持 |
支持正则表达式模式 |
| 并行执行 |
-x 并行执行命令 |
安装
1 2 3 4 5 6 7 8 9 10 11 12
| brew install fd
pacman -S fd
sudo apt install fd-find
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 fd .js fd -e rs main
fd -t f fd -t d fd -t x fd -t l
fd -e py fd -e js -e ts
fd -S +10M fd --changed-within 1d fd --changed-before 1w
fd -H pattern fd -I pattern
fd -x 'test_.*\.py'
fd -e jpg -x rm fd -e rs -x bat fd -t f -X chmod 644
fd -E node_modules pattern fd --exclude .git pattern
|
fd vs find对比
1 2 3 4 5
| find . -name "*.js" -type f -not -path "./node_modules/*"
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
| brew install fzf
$(brew --prefix)/opt/fzf/install
pacman -S fzf
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 fzf -f pattern
fd | fzf fd -t f | fzf
fzf --preview 'bat --color=always {}' fzf --preview-window=right:50%
history | fzf
printenv | fzf
ps aux | fzf
git branch | fzf
fd -e rs | fzf --preview 'bat --color=always --style=numbers {}'
|
Shell 集成
1 2 3 4 5 6 7 8 9 10 11
|
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
export FZF_DEFAULT_COMMAND="fd --type f" export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
zoxide - 智能目录跳转
zoxide 是 cd 和 z 的智能替代品,基于 frecency(频率 + 近期)算法,自动学习你的目录习惯。
核心特性
| 特性 |
说明 |
| 智能跳转 |
输入部分名称即可跳转 |
| 自动学习 |
记录访问历史,权重自动调整 |
| frecency算法 |
频率 + 时间双重权重 |
| 多目录匹配 |
模糊匹配多个候选 |
| 跨平台 |
Linux/macOS/Windows |
安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| brew install zoxide
pacman -S zoxide
sudo apt install zoxide
dnf install zoxide
winget install ajeetdsouza.zoxide
nix-env -iA nixpkgs.zoxide
|
Shell 初始化
1 2 3 4 5 6 7 8 9 10 11
| eval "$(zoxide init bash)"
eval "$(zoxide init zsh)"
zoxide init fish | source
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 z pro z log
zi z -l
zoxide add ~/new-project
zoxide remove ~/old-project
zoxide query myapp
zi
|
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)"
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
| brew install yazi ffmpeg 7zip jq poppler fd ripgrep fzf zoxide
pacman -S yazi ffmpeg 7zip jq poppler fd ripgrep fzf zoxide
yazi
|
与其他工具集成
完整指南见: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 -e rs | fzf --preview 'bat --color=always {}'
fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'
|
2. 目录跳转 + 文件管理
3. 搜索 + 执行
1 2 3 4 5 6
| 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
| 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
|
alias cat='bat' export MANPAGER="bat -plman"
alias ls='eza --icons' alias ll='eza -la --icons --git' alias lt='eza --tree --level=2 --icons'
alias find='fd'
eval "$(zoxide init zsh)" alias cd='z'
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
| brew install bat eza fd fzf zoxide yazi ripgrep
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'
|
或用 command 跳过别名:
1 2
| command cat file.txt command ls -la
|
Q: bat 的输出会被管道影响吗?
A: 会自动调整。管道输出时,bat 自动切换为纯文本模式:
1 2 3 4 5 6 7 8
| bat main.rs
bat main.rs | grep "fn main"
bat --color=always main.rs | fzf
|
Q: fd 如何处理中文文件名?
A: 完美支持。fd 和其他 Rust 工具对 Unicode 支持完善:
Q: zoxide 会记录所有目录吗?
A: 只记录你访问的目录。敏感目录不会被记录:
1 2 3 4 5
| zoxide remove ~/secrets
zoxide query --clear
|
Q: fzf 预览窗口加载慢?
A: 限制预览行数:
1 2 3 4 5
| 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 |
终端文件管理器,异步架构 |
⭐⭐⭐⭐ |
最终建议
- 全部安装 — 包管理器一键安装,无依赖冲突
- 配置别名 — 替代传统命令,潜移默化提升效率
- 组合使用 — fd + fzf + bat 形成搜索-选择-查看流
- Yazi 集成 — 内置所有工具,统一入口
延伸阅读
💡 提示: 这些工具都是 Rust 或 Go 编写,性能强悍。全部安装后,配置别名替代传统命令,效率提升立竿见影。
Comments