macOS 命令行提效工具推荐:我的 Brew 工具箱

macOS 命令行提效工具推荐:我的 Brew 工具箱

用了 Mac 这么久,我逐渐把系统自带的命令行工具换成了更现代的替代品。这篇笔记记录了我通过 Homebrew 安装的提效工具,每个都是精挑细选留下来的。


为什么要换掉系统自带的工具?

macOS 自带的命令行工具大多是上古时期的 BSD 版本,功能够用但体验一般。而这几年 Rust 社区涌现了一批现代化的替代品,它们的共同特点是:

  • 更快:Rust 写的,性能好
  • 更好看:支持语法高亮、图标、颜色
  • 更智能:更好的默认配置,更人性化的交互

下面按用途分类介绍我安装的工具。


文件查看类

bat —— 替代 cat

cat 只能输出纯文本,bat 则带语法高亮、行号、Git 集成。

安装

1
brew install bat

日常使用

1
2
3
4
5
6
7
8
9
10
11
# 查看文件(自动语法高亮)
bat README.md

# 查看多个文件
bat src/*.py

# 显示不可打印字符
bat -A config.yml

# 只显示行号,不要其他装饰
bat --style=numbers file.txt

我在 .zshrc 里设置了别名:

1
alias cat="bat"

现在输入 cat 实际上调用的是 bat,无缝替换。

效果对比

cat 看代码是这样的:

1
2
def hello():
print("Hello, World!")

bat 看代码是这样的(想象一下有语法高亮和行号):

1
2
1 │ def hello():
2 │ print("Hello, World!")

eza —— 替代 ls

ls 的输出太朴素了,eza 支持图标、颜色、Git 状态显示。

安装

1
brew install eza

日常使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 列表模式,显示详细信息
eza -l

# 显示隐藏文件
eza -la

# 显示图标和 Git 状态
eza -la --icons --git

# 树状显示
eza --tree --level=2

# 按修改时间排序
eza -l --sort=modified

我的别名配置:

1
2
3
4
alias ls="eza"
alias ll="eza -l"
alias la="eza -la"
alias lt="eza --tree"

效果:文件夹、不同类型的文件都有不同的图标和颜色,一眼就能区分。Git 仓库里还能看到文件的修改状态。


jless —— JSON 交互查看器

查看 JSON 文件的神器,支持折叠、搜索、语法高亮。

安装

1
brew install jless

日常使用

1
2
3
4
5
# 查看 JSON 文件
jless data.json

# 从管道读取
curl https://api.example.com/data | jless

交互操作

  • j/k:上下移动
  • h/l:折叠/展开
  • /:搜索
  • q:退出

我设置了别名:

1
alias js="jless"

比起 cat xxx.json | python -m json.tooljless 方便太多了。


dust —— 替代 du

分析磁盘占用,比 du 直观得多。

安装

1
brew install dust

日常使用

1
2
3
4
5
6
7
8
9
10
11
# 分析当前目录
dust

# 分析指定目录
dust /path/to/dir

# 只显示前 10 个
dust -n 10

# 显示隐藏文件
dust -H

效果:用条形图显示每个文件夹的占用比例,大文件一目了然。清理磁盘时特别有用。


文件搜索类

fd —— 替代 find

find 的语法太反人类了,fd 简洁得多。

安装

1
brew install fd

日常使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 搜索文件名包含 test 的文件
fd test

# 搜索特定扩展名
fd -e py

# 搜索特定类型(文件/目录)
fd -t f test # 只找文件
fd -t d test # 只找目录

# 排除某些目录
fd -E node_modules -E .git test

# 执行命令
fd -e py -x wc -l # 统计所有 Python 文件的行数

对比

find 找 Python 文件:

1
find . -name "*.py" -type f

fd 找 Python 文件:

1
fd -e py

简洁太多了。


ripgrep (rg) —— 替代 grep

搜索文件内容的神器,速度极快,默认忽略 .gitignore 里的文件。

安装

1
brew install ripgrep

日常使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 搜索字符串
rg "error"

# 不区分大小写
rg -i "error"

# 搜索包含隐藏文件
rg --hidden "config"

# 只显示文件名
rg -l "TODO"

# 显示上下文
rg -C 3 "error" # 前后各 3 行

# 指定文件类型
rg -t py "import"

# 正则表达式
rg "def \w+\("

我的别名配置:

1
2
3
4
alias rgi="rg -i"           # 不区分大小写
alias rgh="rg --hidden" # 包含隐藏文件
alias rgf="rg -l" # 只显示文件名
alias rgc="rg -C 3" # 显示上下文

速度对比:在大型代码库里搜索,rggrep 快 10 倍以上。


fzf —— 模糊搜索

交互式模糊搜索工具,可以和其他命令组合使用。

安装

1
brew install fzf

日常使用

1
2
3
4
5
6
7
8
9
10
11
# 搜索文件并用 vim 打开
vim $(fzf)

# 搜索历史命令
history | fzf

# 和 fd 组合
fd -t f | fzf

# 预览文件内容
fzf --preview 'bat --color=always {}'

Shell 集成

.zshrc 里加载 fzf:

1
source <(fzf --zsh)

加载后:

  • Ctrl + R:搜索历史命令
  • Ctrl + T:搜索文件
  • Alt + C:搜索目录并 cd

这三个快捷键我每天都在用,特别是 Ctrl + R 搜索历史命令。


Git 增强类

lazygit —— Git TUI 界面

终端里的 Git 图形界面,操作 Git 不用记命令。

安装

1
brew install lazygit

日常使用

1
2
3
4
# 启动
lazygit
# 或者用我的别名
lg

界面布局

  • 左侧:文件状态、分支列表、提交历史
  • 右侧:diff 预览

常用操作

  • space:暂存/取消暂存文件
  • c:提交
  • p:推送
  • P:拉取
  • b:切换分支
  • n:新建分支
  • ?:查看帮助

比起敲命令,用 lazygit 操作 Git 直观多了,特别是处理合并冲突的时候。


git-delta —— 美化 Git diff

git diff 的输出更好看,支持语法高亮、并排显示。

安装

1
brew install git-delta

配置

~/.gitconfig 里添加:

1
2
3
4
5
6
7
8
9
10
[core]
pager = delta

[interactive]
diffFilter = delta --color-only

[delta]
navigate = true
line-numbers = true
side-by-side = true

效果

  • line-numbers:显示行号
  • side-by-side:并排显示新旧代码
  • navigate:可以用 n/N 跳转到下一个/上一个修改

配置好后,git diffgit showgit log -p 的输出都会变好看。


gh —— GitHub CLI

GitHub 官方命令行工具,不用打开浏览器就能操作 GitHub。

安装

1
brew install gh

日常使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 登录
gh auth login

# 克隆仓库
gh repo clone owner/repo

# 创建 PR
gh pr create

# 查看 PR 列表
gh pr list

# 查看 Issue
gh issue list

# 创建 Issue
gh issue create

# 在浏览器打开当前仓库
gh browse

我最常用的是 gh pr create,在终端里就能创建 Pull Request,不用切到浏览器。


系统监控类

btop —— 替代 top/htop

颜值最高的系统监控工具,CPU、内存、网络、磁盘一目了然。

安装

1
brew install btop

日常使用

1
btop

界面

  • CPU 使用率(每个核心单独显示)
  • 内存使用情况
  • 网络流量
  • 磁盘 I/O
  • 进程列表

操作

  • f:过滤进程
  • k:杀死进程
  • s:排序
  • q:退出

htop 还好看,信息也更全面。


命令行增强类

starship —— 美化终端提示符

跨 Shell 的提示符美化工具,支持 Git 状态、语言版本等信息显示。

安装

1
brew install starship

配置

.zshrc 里添加:

1
eval "$(starship init zsh)"

效果:提示符会显示:

  • 当前目录
  • Git 分支和状态
  • Python/Node/Rust 等语言版本
  • 命令执行时间
  • 错误状态

我用的是默认配置,已经很好看了。如果想自定义,可以创建 ~/.config/starship.toml


zoxide —— 智能 cd

记住你去过的目录,下次用关键词就能跳转。

安装

1
brew install zoxide

配置

.zshrc 里添加:

1
eval "$(zoxide init zsh)"

日常使用

1
2
3
4
5
6
7
8
9
# 第一次需要先 cd 到目录,让 zoxide 记住
cd /Volumes/DataDisk/Projects/my-project

# 之后用关键词就能跳转
z my-project
z proj # 模糊匹配也行

# 交互式选择
zi

用了 zoxide 之后,我几乎不用输入完整路径了,输入几个关键字母就能跳转到目标目录。


thefuck —— 命令纠错

打错命令时,输入 fuck 自动纠正。

安装

1
brew install thefuck

配置

.zshrc 里添加:

1
eval $(thefuck --alias)

日常使用

1
2
3
4
5
6
7
# 打错命令
$ git pussh
git: 'pussh' is not a git command.

# 输入 fuck,自动纠正
$ fuck
git push [enter/↑/↓/ctrl+c]

虽然名字有点粗俗,但确实好用。也可以改成别的别名:

1
eval $(thefuck --alias fk)

tldr —— 替代 man

man 手册太长了,tldr 只显示最常用的例子。

安装

1
brew install tldr

日常使用

1
2
3
4
5
# 查看 tar 命令的常用例子
tldr tar

# 查看 git commit 的用法
tldr git commit

效果:只显示 5-10 个最常用的命令示例,比翻 man 手册快多了。


xh —— 替代 curl

更友好的 HTTP 请求工具,语法比 curl 简洁。

安装

1
brew install xh

日常使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# GET 请求
xh httpbin.org/get

# POST 请求
xh POST httpbin.org/post name=test

# 带 Header
xh httpbin.org/get Authorization:"Bearer token"

# 只看响应头
xh --headers httpbin.org/get

# 下载文件
xh --download example.com/file.zip

我的别名配置:

1
2
3
4
alias http="xh"
alias get="xh get"
alias post="xh post"
alias header="xh --headers"

语法比 curl 直观多了,响应也会自动格式化和语法高亮。


版本管理类

mise —— 统一版本管理器

一个工具管理所有语言的版本,替代 nvm、pyenv、rbenv 等。

安装

1
brew install mise

配置

.zshrc 里添加(放在最后):

1
eval "$(mise activate zsh)"

我的配置文件 ~/.config/mise/config.toml

1
2
3
4
5
6
7
8
[tools]
node = "22"
python = "3.13"
java = "graalvm-community-21.0.2"
rust = "latest"
deno = "latest"
maven = "latest"
uv = "latest"

日常使用

1
2
3
4
5
6
7
8
9
10
11
12
# 查看已安装的版本
mise list

# 安装新版本
mise install node@20

# 切换版本
mise use node@20

# 项目级别配置
cd my-project
mise use node@18 # 会创建 .mise.toml

我当前安装的版本

语言/工具版本
Node.js22.22.0
Python3.13.11
JavaGraalVM CE 21.0.2
Rust1.93.0
Deno2.6.7
Maven3.9.12
uv0.9.28

用 mise 统一管理后,不用装一堆 xxenv 工具了,一个搞定所有。


Zsh 插件管理

antidote —— Zsh 插件管理器

轻量级的 Zsh 插件管理器,比 oh-my-zsh 快。

安装

1
brew install antidote

配置

创建 ~/.zsh_plugins.txt

1
2
3
zsh-users/zsh-syntax-highlighting
zsh-users/zsh-autosuggestions
zsh-users/zsh-completions

.zshrc 里加载:

1
2
source $(brew --prefix)/share/antidote/antidote.zsh
antidote load ~/.zsh_plugins.txt

我安装的插件

  • zsh-syntax-highlighting:命令语法高亮,打错了会变红
  • zsh-autosuggestions:根据历史记录显示建议,按右箭头补全
  • zsh-completions:增强的 Tab 补全

这三个插件是 Zsh 必装的,体验提升很大。


其他工具

pass —— 密码管理

命令行密码管理器,用 GPG 加密。

安装

1
brew install pass

我把密码库放在外置硬盘:

1
export PASSWORD_STORE_DIR="/Volumes/DataDisk/MySecretDrive"

duti —— 默认应用设置

设置文件类型的默认打开应用。

安装

1
brew install duti

使用

1
2
# 设置 .md 文件用 VSCode 打开
duti -s com.microsoft.VSCode .md all

总结

这些工具我用了很长时间,每个都是精挑细选留下来的。它们的共同特点是:

  1. 更快:大多是 Rust 写的,性能好
  2. 更好看:支持颜色、图标、语法高亮
  3. 更智能:更好的默认配置

如果你也想升级命令行体验,建议从这几个开始:

  1. bat + eza:日常查看文件
  2. fd + rg:搜索文件和内容
  3. fzf:模糊搜索
  4. zoxide:智能跳转
  5. starship:美化提示符

装上这几个,命令行体验就会有质的提升。