命令行增强工具全景

经典命令的增强版,让终端效率倍增


⚡ 概述

本文整理自 3mile 的博客,原文翻译自 Hacker News 上的 CLI improved 项目。

核心思想: 用增强版工具替换原有命令,通过 alias 无缝迁移,原版工具通过 \command 调用。

\cat                    # 忽略 alias,直接使用原版 cat
command cat             # 忽略函数和 alias

🛠️ 工具对照表

flowchart LR
    subgraph Original[原生命令]
        O1[ls]
        O2[cat]
        O3[ping]
        O4[Ctrl+R]
        O5[top]
        O6[diff]
        O7[find]
        O8[du]
        O9[grep]
    end

    subgraph Enhanced[增强版]
        E1[lsd / exa]
        E2[bat]
        E3[prettyping]
        E4[fzf]
        E5[htop]
        E6[diff-so-fancy]
        E7[fd]
        E8[ncdu]
        E9[ripgrep]
    end

    O1 --> E1
    O2 --> E2
    O3 --> E3
    O4 --> E4
    O5 --> E5
    O6 --> E6
    O7 --> E7
    O8 --> E8
    O9 --> E9

    style E1 fill:#e8f5e9,stroke:#388e3c
    style E2 fill:#e8f5e9,stroke:#388e3c
    style E3 fill:#e8f5e9,stroke:#388e3c
    style E4 fill:#e8f5e9,stroke:#388e3c
    style E5 fill:#e8f5e9,stroke:#388e3c
    style E6 fill:#e8f5e9,stroke:#388e3c
    style E7 fill:#e8f5e9,stroke:#388e3c
    style E8 fill:#e8f5e9,stroke:#388e3c
    style E9 fill:#e8f5e9,stroke:#388e3c

📊 工具速查

原命令增强版功能推荐指数
lslsd / exa彩色输出、图标⭐⭐⭐⭐⭐
catbat代码高亮、行号⭐⭐⭐⭐⭐
pingprettyping彩色实时显示⭐⭐⭐
Ctrl+Rfzf模糊搜索历史⭐⭐⭐⭐⭐
tophtop进程管理⭐⭐⭐⭐
diffdiff-so-fancy高亮 diff⭐⭐⭐⭐
findfd简单语法、高亮⭐⭐⭐⭐⭐
duncdu可视化磁盘分析⭐⭐⭐⭐
grepripgrep超快搜索⭐⭐⭐⭐⭐
cdzoxide / enhancd智能跳转⭐⭐⭐⭐⭐
-jqJSON 处理⭐⭐⭐⭐⭐
-fpp路径快速打开⭐⭐⭐⭐

🎨 zsh 主题增强

Powerlevel10k

Powerlevel9k 的高性能 fork,定制化程度极高。

特点:

  • 性能大幅提升
  • 可定制前缀、后缀、目录格式、形状
  • 配置向导 (wizard) 快速生成主题
  • 可复刻其他经典主题

安装:

# 使用 brew 安装
brew install romkatv/powerlevel10k/powerlevel10k
 
# 在 .zshrc 添加
echo 'source /opt/homebrew/opt/powerlevel10k/powerlevel10k.zsh-theme' >> ~/.zshrc

配置:

# 启动配置向导
p10k configure

📁 lsd — 豪华版 ls

Rust 编写,彩色输出 + 文件图标

# 安装
brew install lsd
 
# 使用
lsd -la
lsd --tree

示例输出:

📁 projects
├── 📄 README.md
├── 📁 src
│   ├── 📄 index.ts
│   └── 📄 app.ts
└── 📄 package.json

推荐别名:

alias ll='lsd -la'
alias lt='lsd --tree'

同类工具:

  • exa: 另一个流行的 Rust ls 替代品
  • colorls: Ruby 编写,需要额外依赖

📝 bat — 有颜色的 cat

cat 的增强版,支持语法高亮、Git 集成、行号

# 安装
brew install bat
 
# 使用
bat file.md
bat -n file.ts    # 显示行号
bat --diff file.md  # 显示 Git diff

特点:

  • 支持所有主流语言语法高亮
  • Git 集成 (显示 + / - 行)
  • 类似 less 的搜索功能
  • 自动分页

推荐别名:

alias cat='bat'

📡 prettyping — 彩色 ping

让 ping 输出实时可视化

# 安装
brew install prettyping
 
# 使用
prettyping 8.8.8.8

效果: 彩色实时柱状图显示延迟,无需记忆参数。


🔍 fzf — 模糊搜索神器

模糊查找文件、命令历史

安装:

brew install fzf
$(brew --prefix)/opt/fzf/install

核心用法:

# 搜索命令历史 (替换 Ctrl+R)
eval "$(fzf --zsh)"
 
# 快速打开文件
vim $(fzf)
 
# 预览选择
fzf --preview 'cat {}'

配合 zoxide:

# 在 .zshrc 中添加
eval "$(zoxide init zsh)"
alias z='zoxide_jump'
# 或使用 fzf 选择
unalias z
z() {
    cd "$(zoxide query --interactive)" || return
}

🔄 htop — 增强版 top

# 安装
brew install htop
 
# 使用
sudo htop

常用快捷键:

功能
P按 CPU 排序
M按内存排序
T树形显示
kKill 进程
t切换表头
q退出

🎨 diff-so-fancy — 高亮 diff

# 安装
brew install diff-so-fancy
 
# 使用
git diff --color=never | diff-so-fancy
 
# 配置 Git 全局使用
git config --global core.pager "diff-so-fancy | --color"
git config --global color.diff-so-fancy true

效果: GitHub 风格的 diff 高亮。


🔎 fd — 简单好用的 find

Rust 编写,语法简洁、输出美观

# 安装
brew install fd
 
# 使用
fd pattern              # 搜索当前目录
fd -H pattern           # 包含隐藏文件
fd -e md pattern        # 只搜索 .md 文件
fd --type d pattern     # 只搜索目录

对比 find:

# find 语法复杂
find . -name "*.md" -type f
 
# fd 简洁直观
fd -e md -t f

📊 ncdu — 可视化磁盘分析

# 安装
brew install ncdu
 
# 使用
ncdu                    # 分析当前目录
ncdu /home             # 分析指定目录

推荐别名 (来自原文):

alias du="ncdu --color dark -rr -x --exclude .git --exclude node_modules"

🔍 ripgrep (rg) — 超快 grep

Rust 编写,比 grep 快 10-100 倍

# 安装
brew install ripgrep
 
# 使用
rg pattern              # 搜索
rg -i pattern          # 忽略大小写
rg -g "*.md" pattern  # 只搜索 md 文件
rg --files | rg pattern  # 先找文件再搜索

特点:

  • 智能大小写
  • 自动忽略 .gitignore 文件
  • 支持正则
  • 多线程快速搜索

💎 jq — JSON 命令行处理器

# 安装
brew install jq
 
# 使用
cat data.json | jq '.'              # 格式化输出
cat data.json | jq '.key'           # 提取字段
cat data.json | jq '.items[]'       # 数组展开
cat data.json | jq 'map(select(.age > 20))'  # 过滤

特点:

  • 替代复杂的 sed/awk/grep 组合
  • 语法类似 JMESPath
  • 官方教程简单易学

同类工具:

  • csvkit: 处理 CSV 文件

🚀 z — 智能目录跳转

zoxide 功能类似,根据访问历史 fuzzy 跳转

安装:

# 安装
brew install z
 
# 在 .zshrc 添加
. /usr/local/etc/profile.d/z.sh

使用:

z pattern        # 跳转到匹配目录
z -i pattern    # 交互式选择

如果使用 zoxide,可以跳过此工具。两者功能重叠,zoxide 性能更好且跨平台。


📂 fpp — 路径快速打开

从管道输入中识别文件路径,一键打开

# 安装
brew install fpp
 
# 使用
git status | fpp        # 从 git status 打开文件
ls -la | fpp           # 从列表中选择文件
grep -r "pattern" . | fpp  # 从搜索结果打开

典型场景: 在终端看到文件路径,用快捷键直接用 vim/VS Code 打开。


🔧 一键安装脚本

#!/bin/bash
# 命令行增强工具一键安装 (macOS)
 
brew install \
    zsh \
    romkatv/powerlevel10k/powerlevel10k \
    lsd \
    bat \
    prettyping \
    fzf \
    htop \
    diff-so-fancy \
    fd \
    ncdu \
    ripgrep \
    jq \
    fpp \
    exa \
    zoxide
 
# 安装 fzf shell 集成
$(brew --prefix)/opt/fzf/install
 
echo "✅ 安装完成!请重新加载终端配置"

📋 推荐的 alias 配置

# ~/.zshrc 或 ~/.bashrc
 
# ls 系列
alias ll='lsd -la'
alias lt='lsd --tree'
alias ls='lsd'
 
# cat -> bat
alias cat='bat'
 
# find -> fd
alias find='fd'
 
# grep -> rg
alias grep='rg'
 
# du -> ncdu
alias du='ncdu --color dark -rr -x --exclude .git --exclude node_modules'
 
# git diff
alias diff='diff-so-fancy'

🔗 相关资源


💡 使用建议

  1. 渐进替换: 不要一次性替换所有命令,逐个习惯后再加
  2. alias 优先: 用 alias 替换原命令,保持工作流一致
  3. 保留原版: 用 \command 调用原版,应对特殊场景
  4. 配合 zoxide: 目录跳转用 zoxide,已有 zoxide 文档

这些工具共同的目标:让命令行操作更高效、更美观