实用命令行工具推荐

5 minute read

Published:

claude code 和 codex 等命令行工具的兴起使得我的工作日常也逐渐从vscode转移到了cmux等终端命令行工具,但单纯依靠命令行工具的文档来学习和查阅效率较低,因此我整理了以下自用的一些实用的现代命令行工具和 tmux 快捷键,方便日常使用时快速查阅。

安装(MacOS/Linux)

Linux安装需要先安装Linuxbrew,安装方法请参考 https://docs.brew.sh/Homebrew-on-Linux 。

brew install zoxide fd fzf uv tlrc lsd chezmoi jd jq ripgrep yazi neovim fastfetch bat hyperfine dust broot btop procs bandwhich parquet-cli

初始化 shell 集成(追加到 ~/.zshrc):

RC="${ZDOTDIR:-$HOME}/.zshrc"
touch "$RC"
grep -qxF 'export EDITOR="nvim"' "$RC" || echo 'export EDITOR="nvim"' >> "$RC"
grep -qxF 'export VISUAL="$EDITOR"' "$RC" || echo 'export VISUAL="$EDITOR"' >> "$RC"
grep -qxF 'command -v zoxide >/dev/null && eval "$(zoxide init zsh)"' "$RC" || \
  echo 'command -v zoxide >/dev/null && eval "$(zoxide init zsh)"' >> "$RC"
grep -qxF 'command -v fzf >/dev/null && source <(fzf --zsh)' "$RC" || \
  echo 'command -v fzf >/dev/null && source <(fzf --zsh)' >> "$RC"
exec zsh

工具速查

zoxide — 智能 cd

学习访问频率,通过部分路径快速跳转。

命令功能
z foo跳转到访问频率最高的含 “foo” 的目录
zi交互式选择目录
z -回到上一个目录

fd — 现代 find

find 更快、语法更直观,默认尊重 .gitignore

fd foo                    # 搜索含 "foo" 的文件/目录
fd -t f foo               # 仅搜索文件
fd -t d foo               # 仅搜索目录
fd -e md                  # 搜索所有 .md 文件
fd -i foo                 # 不区分大小写
fd '^test'                # 正则:以 "test" 开头
fd -d 2 foo               # 最大深度 2
fd -H foo                 # 包含隐藏文件
fd foo /path/to/dir       # 在指定目录搜索
fd -e py -x python        # 对每个 .py 文件执行 python

fzf — 模糊查找器

通用命令行模糊搜索,可与任何列表输入协作。

快捷键功能
Ctrl+R历史命令模糊搜索
Ctrl+T模糊搜索文件并插入命令行
Alt+C模糊搜索目录并切换
Tab / Shift+Tab多选

结合预览:

fzf --preview 'cat {}'
fd --type f | fzf

环境变量配置:

export FZF_DEFAULT_COMMAND='fd --type f'
export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border'

uv — 极速 Python 包管理

Rust 编写,速度比 pip 快 10-100 倍,统一替代 pip / virtualenv / poetry。

uv venv                   # 创建虚拟环境
uv pip install requests   # 安装包
uv run python script.py   # 隔离环境运行脚本
uv sync                   # 同步虚拟环境
uv lock                   # 生成锁文件

tldr — 简洁命令手册

社区维护的实用示例手册,比 man 更快速上手。

tldr tar          # 查看 tar 常用示例
tldr --update     # 更新本地缓存
tldr --list       # 列出所有可用页面

lsd — 现代 ls

彩色图标输出,支持树状视图,开箱即用。

lsd           # 带图标和颜色列出文件
lsd --tree    # 树状视图

chezmoi — Dotfiles 管理

安全地在多台机器之间同步 shell 配置,支持模板化与加密。

chezmoi init                       # 初始化
chezmoi add ~/.zshrc               # 添加文件到管理
chezmoi edit ~/.zshrc              # 编辑托管文件
chezmoi apply                      # 应用变更到家目录
chezmoi diff                       # 查看差异
chezmoi status                     # 查看变更状态
chezmoi update                     # 拉取远程并应用
chezmoi cd                         # 跳转到源目录
chezmoi init <git-repo-url>        # 新机器初始化

jd — JSON Diff

清晰展示两个 JSON 文件的结构差异。

jd a.json b.json

jq — JSON 处理器

命令行 JSON 解析、过滤与转换的瑞士军刀。

cat data.json | jq '.'            # 格式化输出
jq '.name' data.json              # 提取字段
jq '.items[]' data.json           # 遍历数组

yazi — 终端文件管理器

Rust 编写,异步、支持实时预览。

操作说明
yazi启动
t创建新标签页
/搜索模式
Space标记文件
yy / dd / dD复制 / 移动 / 删除

ripgrep (rg) — 极速 grep

尊重 .gitignore,默认跳过隐藏文件和二进制文件,速度极快。

rg foo                      # 递归搜索 "foo"
rg -t py 'import requests'  # 仅搜索 Python 文件
rg -i 'error'               # 不区分大小写
rg -C 3 'TODO'              # 显示前后 3 行上下文
rg -l 'TODO'                # 仅显示匹配文件名
rg -c 'error'               # 统计每文件匹配数
rg -S 'user'                # 智能大小写
rg '^def\s+\w+'             # 正则搜索
rg -l 'foo' | xargs sed -i 's/foo/bar/g'  # 配合 sed 批量替换

dust — 磁盘用量可视化

实测比 du 快约 20 倍左右,直观展示目录磁盘占用。

dust                        # 当前目录
dust path/to/dir            # 指定目录
dust -d 3                   # 最多 3 层深度
dust --number-of-lines 30   # 显示 30 条
dust --reverse              # 从大到小排序
dust --no-percent-bars      # 不显示进度条

hyperfine — 命令行 Benchmark

hyperfine 'make'                                # 基础 benchmark(至少 10 次)
hyperfine 'make target1' 'make target2'         # 对比 benchmark
hyperfine --min-runs 7 'make'                   # 指定最少运行次数
hyperfine --warmup 5 'make'                     # 预热
hyperfine --prepare 'make clean' 'make'         # 每次运行前执行准备命令

bat — 带高亮的 cat

cat 替代品,支持语法高亮和 Git 集成。

bat file.py                          # 高亮显示文件
bat file1 file2 > output             # 合并文件
bat -p --pager never file            # 纯文本输出,不分页
bat --highlight-line 10:20 file      # 高亮第 10-20 行
bat --number file                    # 仅显示行号
bat --language json file.json        # 指定语言高亮
bat --list-languages                 # 列出所有支持语言

bws — Bitwarden Secrets Manager CLI

Bitwarden 是一款开源密码管理器,Secrets Manager 是其面向开发者的子产品,用于集中存储和分发 API Key、数据库密码等敏感凭证。bws 是其命令行客户端。 安全地管理和注入 Bitwarden的 API Key、密码等敏感凭证,避免明文出现在 shell 历史或代码中(非常适合于在不暴露密钥的情况下让AI使用这些凭证)。

安装:

# macOS
brew install bitwarden/tap/bws

# Linux
curl -LO https://github.com/bitwarden/sdk-sm/releases/download/bws-v2.0.0/bws-x86_64-unknown-linux-gnu-2.0.0.zip
unzip bws-*.zip -d /usr/local/bin/ && chmod +x /usr/local/bin/bws

配置 Access Token(在 Bitwarden Web Vault → Secrets Manager → Machine Accounts 创建):

export BWS_ACCESS_TOKEN=""
# 或写入 ~/.zshrc 持久化

常用命令:

bws project list                          # 列出项目(验证连接)
bws secret list                           # 列出 secrets(会显示明文值,慎用)
bws secret get <secret-id>               # 获取指定 secret
bws secret create KEY VALUE PROJECT_ID   # 创建 secret
bws secret edit <secret-id> --value "x"  # 更新 secret
bws run -- 'python script.py'            # 注入所有 secrets 后执行命令
bws run --project-id <id> -- 'npm start' # 仅注入指定项目的 secrets
bws run --no-inherit-env -- './app'      # 使用干净环境执行

bws run 是核心用法:secrets 以环境变量形式注入子进程,调用方(包括 AI)无法看到实际值。

# ✅ 安全:应用内部读取环境变量
bws run -- 'node server.js'

# ❌ 危险:会将 secrets 打印到终端
bws run -- 'env'
bws run -- 'printenv'

安全建议: 不同环境(dev/staging/prod)使用独立 Machine Account;定期轮换 Access Token;遵循最小权限原则。


Tmux 快捷键速查

前缀键默认为 Ctrl+b(下文简写 C-b),可通过 set -g prefix <key> 修改。

会话 / 窗口 / 窗格

快捷键 / 命令功能
tmux new -s <name>创建命名会话
tmux a / tmux a -t <name>连接到(指定)会话
tmux ls列出所有会话
C-b d分离当前会话
C-b s列出并切换会话
C-b c新建窗口
C-b n / C-b p下/上一个窗口
C-b ,重命名当前窗口
C-b % / C-b "垂直/水平分割窗格
C-b 方向键切换窗格
C-b z最大化/恢复窗格
C-b x关闭当前窗格

复制模式(需先设置 setw -g mode-keys vi

| 快捷键 | 功能 | |——–|——| | C-b [ | 进入复制模式 | | v / y | 开始选择 / 复制 | | C-b ] | 粘贴 | | q | 退出复制模式 |

C-b ? 可查看完整快捷键列表。

参考