優(yōu)秀的命令行工具整理 (一)

原文作者: Darren Burns
翻譯:weakish@LeanCloud
原文鏈接:https://url.leanapp.cn/darren

我打算寫一系列文章,展示下近些年發(fā)現(xiàn)的一些很棒的非標準命令行工具,這是第一篇。如果你用命令行,那么這些工具中大概至少有一個能讓你的生活更舒心。

z 跳轉

現(xiàn)代瀏覽器地址欄可以智能模糊搜索,節(jié)省了大量時間。想要刷下推特?只需在地址欄輸入「tw」然后回車。

相比之下,在命令行下使用 cd 訪問文件系統(tǒng),方式就太陳舊了。謝天謝地,z 給命令行帶來了瀏覽器風格的導航。

image

短暫的學習期之后,z 能讓你從任意位置跳轉到一個目錄,只需輸入目標目錄名的子字符串。z 會跳轉到哪個目錄取決于你提供的字符串參數(shù)、訪問目錄的頻繁程度、訪問目錄的最近時間。這稱為「頻近度 (frecency)」。

z 不僅提高了速度,還降低了認知負擔。使用 cd 時,你需要準確回憶目標目錄在目錄樹的位置,并計算到達目錄的路徑。有了 z,只需知道目錄的名稱。

z 也已經(jīng)移植到了其他 shell (例如 fish 和 zsh)。類似的項目有 autojump。

安裝 z
  • 在 macOS 上使用 Homebrew 安裝 bash版本:brew install z
  • 在 macOS 上使用 Fisher 安裝fish 版本:fisher add jethrokuan/z

fzf 快速模糊搜尋器

安裝 fzf 后,在命令行的任何地方按下 Ctrl + T,就可以開啟交互式模糊搜索界面,遞歸搜索當前目錄下的文件。輸入搜索項后,上、下鍵選擇結果,回車上屏:

image

在上面的例子中,我輸入了 bat(還可以是其他任何命令,例如 less、cd 等),接著按下 Ctrl + T。接著輸入 five,回車,插入路徑 src/five.rs 至光標所在處,而不必先輸入 src,再按 tab 鍵,再輸入 fi,再按 tab 鍵——路徑很長或者不好記的時候,這樣很麻煩。

安裝 fzf
  • macOS (Homebrew): brew install fzf
  • fish 綁定: fisher add jethrokuan/fzf

bat 帶語法高亮的文件查看

bat 助你快速查看文件,有語法高亮。bat 可以無縫替換 cat。

image

如果輸出過大(如上面的例子所示),bat 會將輸出傳給 less,自動分頁。

安裝 bat
  • macOS (Homebrew): brew install bat

bench 代碼性能測試

bench 是極為有用的測試代碼性能的工具。它是用 Haskell 寫的,從這點上說,算是這篇文章中最酷的。任何可以在終端中運行的命令都可以傳給它(加引號),bench 會重復運行該命令,測量執(zhí)行時間。測試完成后,bench 會輸出有用的統(tǒng)計數(shù)據(jù)。

image

衡量代碼執(zhí)行時間,相比系統(tǒng)內(nèi)置的 time 命令,bench 更為強大。

類似的工具有 hyperfine ,是用 Rust 編寫的。

安裝 bench
  • macOS (Homebrew): brew install bench

asciinemasvg-term錄制終端為 SVG 動畫

這篇文章中的終端剪輯實際上是 SVG 動畫!使用 SVG 而不是視頻文件有不小的優(yōu)勢:

  • 任意縮放 ??
  • 可以像其他圖像一樣嵌入 Markdown 文件 ??
  • 文件較小 ??
  • SVG 動畫比視頻酷太多 ??

我使用 asciinema 錄制終端。輸入 asciinema rec 即可開始錄制。完成后按 Ctrl+D,選擇本地保存或上傳 asciinema.org

image

svg-term 可以根據(jù) asciinema 錄制文件生成 SVG 動畫。如果你將錄制文件上傳到了 asciinema,需要訪問 asciinema 鏈接將其設為公開。

轉換錄制文件為 SVG 動畫,需要提供錄制 ID (公開 asciinema 頁面后可以在 URL 中找到 ID),輸出文件名,還有其他一些可選參數(shù)。例如,我使用如下命令將上面例子中的終端錄制 (https://asciinema.org/a/219486) 轉換為 SVG 文件:

svg-term --cast=219486 --out ~/somewhere/out.svg --padding 18 --height 8 --width 80

或者,如果你不想把錄制文件上傳到 asciinema,你也可以直接使用 svg-term 轉換本地錄制文件(感謝 svg-term-cli 的作者 Mario Nebl 指出這一點):

asciinema rec cast.json
cat cast.json | svg-term-cli
安裝 asciinemasvg-term
  • 在 macOS 上安裝 asciinemabrew install asciinema
  • 在 macOS 上安裝 svg-termnpm install -g svg-term-cli

wrk 測試 HTTP API 性能

wrk 是個方便的小工具,可以測試 API 性能。為了演示它的用法,我在本地的 8001 端口運行了一個最小化的 Python HTTP API 服務器,它只有一個端點(/hello)。用 wrk 測試它的性能(5 秒內(nèi),使用 12 個線程發(fā)起 200 個連接):

image

調(diào)整線程數(shù)、連接數(shù)、時長可以測試不同負載下 API 的表現(xiàn)。它不能代替 Locust 和 JMeter 這樣的性能測試工具,但很輕量,在許多場景下夠用。

很不幸,基于 wrk 的命令行接口發(fā)起 POST 請求很笨拙:需要用 Lua 編寫一個小腳本,作為參數(shù)傳給命令(詳見文檔)。

安裝 wrk

  • macOS (Homebrew): brew install wrk

exa 替代 ls

exals 的現(xiàn)代替代品,其彩色輸出更為易讀,并提供了更多控制輸出如何呈現(xiàn)的選項。

image

加上 --git-ignore 參數(shù)會根據(jù) .gitignore 忽略對應文件,使用 -T 參數(shù)則能以樹型結構列出目錄。

安裝 exa

  • macOS (Homebrew): brew install exa

fd 查找文件和目錄

通常使用 find 命令基于正則表達式查找文件或目錄。fd 是用 Rust 編寫的 find 替代品。使用合理的默認值,提供更方便的界面,速度也更快。

image

fd 遵循 .gitignore 文件,也支持并行命令執(zhí)行。并行命令執(zhí)行可以在搜索返回的每個文件和目錄上(并行)執(zhí)行命令。fd 文檔中的一個例子是找出所有 .jpg 文件,并行轉換為 .png 文件(使用 convert 命令):

fd -e jpg -x convert {} {.}.png
安裝 fd
  • macOS (Homebrew): brew install fd

rg (ripgrep) 查找文件中的字符串

rg 是 grep 的替代品,它比 grep 快很多。

[站外圖片上傳中...(image-7b50b9-1547555604932)]

rg 是用 Rust 編寫的,VS Code 編輯器的搜索功能其實是通過調(diào)用 rg 實現(xiàn)的。在性能評測中,rg 一貫超過類似工具。

安裝 ripgrep
  • macOS (Homebrew): brew install ripgrep

結語

我希望你在這篇文章中發(fā)現(xiàn)了有用的工具!我打算讓這篇文章成為及時更新的工具庫,收羅有用的替代性命令行工具,所以我可能會時不時更新這篇文章。

如果你對更多類似內(nèi)容感興趣,歡迎在 Twitter 上關注我。

LeanCloud,領先的 BaaS 提供商,為移動開發(fā)提供強有力的后端支持。
了解更多: www.leancloud.cn

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容