慣性聚合 高效追蹤和閱讀你感興趣的部落格、新聞、科技資訊
閱讀原文 在慣性聚合中打開

推薦訂閱源

博客园 - 司徒正美
V
V2EX
T
Tailwind CSS Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
月光博客
月光博客
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
V
Visual Studio Blog
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

阮一峰的网络日志

科技爱好者周刊(第 396 期):互联网通信的替代方案 科技爱好者周刊(第 396 期):互联网通信的替代方案 - 阮一峰的网络日志 科技爱好者周刊(第 395 期):软件开发的第三种方式 科技爱好者周刊(第 395 期):软件开发的第三种方式 - 阮一峰的网络日志 科技爱好者周刊(第 393 期):脑腐状态 科技爱好者周刊(第 392 期):axios 投毒与好莱坞式骗术 科技爱好者周刊(第 391 期):AI 的贫富分化 科技爱好者周刊(第 390 期):没有语料,大模型就是智障 套壳中国大模型撑起500亿美元估值?扒一扒 Cursor 的"套壳"疑云 科技爱好者周刊(第 389 期):未来如何招聘程序员 科技爱好者周刊(第 388 期):测试是新的护城河 零安装的"云养虾":ArkClaw 使用指南 科技爱好者周刊(第 387 期):你是领先的 科技爱好者周刊(第 386 期):当外卖员接入 AI 字节全家桶 Seed 2.0 + TRAE 玩转 Skill 科技爱好者周刊(第 385 期):马斯克害怕中国车企吗? 智谱旗舰 GLM-5 实测:对比 Opus 4.6 和 GPT-5.3-Codex 科技爱好者周刊(第 384 期):为什么软件股下跌 科技爱好者周刊(第 383 期):你是第几级 AI 编程 Kimi 的一体化,Manus 的分层 科技爱好者周刊(第 382 期):独立软件的黄昏 AI native Workspace 也许是智能体的下一阶段 科技爱好者周刊(第 381 期):中国 AI 大模型领导者在想什么 科技爱好者周刊(第 380 期):为什么人们拥抱"不对称收益" 科技爱好者周刊(第 379 期):《硅谷钢铁侠》摘录 我如何用 AI 处理历史遗留代码:MiniMax M2.1 升级体验 科技爱好者周刊(第 378 期):预测是新的互联网热点 科技爱好者周刊(第 377 期):14万美元的贫困线 科技爱好者周刊(第 376 期):太空数据中心的争议 科技爱好者周刊(第 375 期):一扇门的 Bug 终于有人做了 Subagent,TRAE 国内版 SOLO 模式来了 科技爱好者周刊(第 374 期):6GHz 的问题 VS Code 使用国产大模型 MiniMax M2 教程 科技爱好者周刊(第 373 期):数据模型是新产品的核心 国产大模型接入 Claude Code 教程:以 Doubao-Seed-Code 为例 科技爱好者周刊(第 372 期):软件界面如何设计 大模型比拼:MiniMax M2 vs GLM 4.6 vs Claude Sonnet 4.5 科技爱好者周刊(第 371 期):一个乐观主义者的专访 科技爱好者周刊(第 370 期):正确的代码高亮 错误处理:异常好于状态码 科技爱好者周刊(第 369 期):Tim 与罗永浩的对谈 科技爱好者周刊(第 368 期):不要这样管理软件团队 一天之内,智谱和 Anthropic 都发了最强编程模型 科技爱好者周刊(第 367 期):Nano Banana 的几个妙用 科技爱好者周刊(第 366 期):旧金山疯狂的 AI 广告 科技爱好者周刊(第 365 期):流量变现正在崩塌 科技爱好者周刊(第 364 期):最难还原的魔方 科技爱好者周刊(第 363 期):最好懂的神经网络解释 科技爱好者周刊(第 362 期):GitHub 工程师谈系统设计 科技爱好者周刊(第 361 期):暗网 Tor 安全吗?
命令行常用工具的替代品
阮一峰 · 2022-01-28 · via 阮一峰的网络日志

程序員離不開命令行,許多經典命令是每天必用的,比如lscd

雖然它們很好用,但是由於歷史原因,往往也有一些缺點,比如用法不符合直覺、難以配置,有些速度也不快。

這些年,它們的替代品開始出現,而且越來越多,大家開始嘗試使用現代語言,重新實現這些經典命令。本文總結一下這些替代品,其中有些真的很不錯,值得你在自己的計算機上安裝。

一、exa

exals命令的替代品,可以彩色輸出目錄內容,更容易辨識。


$ exa --long --git

上面命令中,參數--git表示輸出文件的 Git 狀態。

  • N:新文件
  • M:文件有變動
  • I:該文件被忽略

除了平鋪顯示,exa還支持目錄的樹狀顯示。


$ exa --tree --level=2

exa本身是一個二進制文件,不需要安裝,下載後直接使用,速度也相當快。

同類軟件還有 lsd,這裡就不詳細介紹了。

二、broot

broot 可以看作增強版的ls替代品,實際是一個終端裡面的文件管理器。

使用時,可以先列出當前目錄的文件信息。


$ br -sdph

上面命令中,參數含義如下。

  • -s:顯示文件體積
  • -d:顯示文件時間
  • -p:顯示文件權限
  • -h:顯示隱藏文件。

可以看到,它默認以樹狀結構,展開子目錄。

然後,在這個界面中,可以完成各種文件操作。

  • 搜索:輸入搜索詞
  • 複製:輸入:cp <複製後的文件名>
  • 刪除:輸入:rm
  • 改名:輸入:mv <新文件名>
  • 退出:輸入:q

甚至還可以預覽文件:通過上下箭頭選中文件,然後按下右箭頭,就會打開外部關聯程序;按下ctrl + →,則在當前窗口預覽文件。

三、zoxide

zoxide 是 cd 命令的替代品,用來切換目錄。

它的用法與cd完全一樣,進入目錄/tmp就是下面的命令。


$ z /tmp

它的特色是部分匹配,可以只寫路徑的一部分,它自動找到最經常使用的匹配項。

比如,你經常用它進入目錄/tmp,那麼以後只要輸入z t,它就會自動將t匹配為/tmp,從而進入該目錄。


$ z t

四、bat,fx,hexyl

batcat命令的替代品,輸出文本文件的內容,並且帶有cat所沒有的代碼高亮和行號。


$ bat README.md

如果瀏覽的是 JSON 文件,還可以使用 fx 或者 jq


$ fx data.json

如果瀏覽的是二進制文件,使用 hexyl


$ hexyl example.jpg

五、diff-so-fancy

diff-so-fancy 是 git diff 的替代品,使得命令行的 diff 操作具有類似 GitHub 的頁面效果。

安裝後,參考官方文檔,將它配置為 Git 的默認 diff 工具就可以了。以後每次執行git diff,就會輸出它的執行結果。

同類項目還有 delta

六、fd,fzf

fdfind命令的替代品,用於文件名搜索。

它的用法比find更符合直覺。下面例子是搜索目錄/tmp裡面(包括子目錄),所有含有dog的文件名。


# find 的寫法
$ find /tmp -iname '*dog*'

# fd 的寫法
$ fd dog /tmp

上面兩條命令一比較,就會發現fd簡單很多。

fd內部採用正則搜索,如果想使用模糊搜索,比如找出包含三個字符dog的文件名,則需要另外安裝fzf


$ find . -type f | fzf

執行上面命令以後,再輸入dog就可以了。

七、ripgrep

ripgrepgrep命令的替代品,用來搜索文件內容。

它跟grep的用法類似。下面例子是搜索當前目錄裡面,所有內容包含字符串foo的 Markdown 文件。


# grep 的寫法
$ grep foo *.md

# ripgrep 的寫法
$ rg foo *.md

ripgrep的主要優勢在於,默認帶有行號和搜索詞高亮,速度也更快。

同類項目還有 ag

八、McFly

McFlyctrl-r的替代品,用來搜索 Shell 的操作歷史。

安裝以後,只要按下ctrl-r,就會出現一個更好用的搜索界面。

九、choose

choosecut命令的替代品,用來選中指定的欄位。

它的優勢主要是語法更簡單,比如輸出文件的第一列。


# cut 的寫法
$ cat data.txt | cut -d " " -f 1
# or
$ cut -d " " -f 1 data.txt

# choose 的寫法
$ cat data.txt | choose 0
# or
$ choose 0 -i data.txt

更多例子看下圖。

十、duf,ncdu

dufdf命令的替代品,用來顯示磁盤佔用情況。


$ duf

它是彩色的表格輸出,更容易查看。

ncdudu命令的替代品,用來顯示每個目錄佔用的大小。


$ ncdu

你還可以上下移動,選中指定目錄查看。

同類項目還有 dust

十一、htop,procs

htoptop命令的替代品,用來顯示系統的實時狀態。它帶有高亮輸出,並可以切換不同的選項卡。


$ htop

同類項目還有 glancesgtopbottom

procsps命令的替代品,用來高亮顯示進程信息。


$ procs

十二、httpie,dog

httpie 是 curl 的替代品,用來發出 HTTP 請求。

它的特點是語法更簡單,並且服務器的返回內容會格式化高亮顯示。

下面是發出 PUT 請求的例子。


# curl 的寫法
$ curl -X PUT -d hello=world example.com

# httpie 的寫法
$ http PUT example.com hello=world 

同類項目還有 curliexh

dogdig命令的替代品,用來發出 DNS 查詢。它的用法比dig簡單多了。


# 默認查詢 A 記錄
$ dog example.net

# 查詢多個記錄
$ dog example.net A NS MX

(完)