優秀的命令列工具整理 (一)

2021-09-11 09:58:32 字數 3676 閱讀 4144

翻譯:weakish@leancloud

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

z跳轉

現代瀏覽器位址列可以智慧型模糊搜尋,節省了大量時間。想要刷下推特?只需在位址列輸入「tw」然後回車。

相比之下,在命令列下使用cd訪問檔案系統,方式就太陳舊了。謝天謝地,z給命令列帶來了瀏覽器風格的導航。

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

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

z也已經移植到了其他 shell (例如 fish 和 zsh)。類似的專案有autojump

安裝z

fzf快速模糊搜尋器

安裝fzf後,在命令列的任何地方按下ctrl + t,就可以開啟互動式模糊搜尋介面,遞迴搜尋當前目錄下的檔案。輸入搜尋項後,上、下鍵選擇結果,回車上屏:

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

安裝fzf

bat帶語法高亮的檔案檢視

bat 助你快速檢視檔案,有語法高亮。bat可以無縫替換cat

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

安裝bat

bench**效能測試

bench是極為有用的測試**效能的工具。它是用 haskell 寫的,從這點上說,算是這篇文章中最酷的。任何可以在終端中執行的命令都可以傳給它(加引號),bench 會重複執行該命令,測量執行時間。測試完成後,bench 會輸出有用的統計資料。

衡量**執行時間,相比系統內建的time命令,bench 更為強大。

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

安裝bench

asciinemasvg-term錄製終端為 svg 動畫

我使用asciinema錄製終端。輸入asciinema rec即可開始錄製。完成後按ctrl+d,選擇本地儲存或上傳 asciinema.org

svg-term可以根據 asciinema 錄製檔案生成 svg 動畫。如果你將錄製檔案上傳到了 asciinema,需要訪問 asciinema 鏈結將其設為公開。

轉換錄製檔案為 svg 動畫,需要提供錄製 id (公開 asciinema 頁面後可以在 url 中找到 id),輸出檔名,還有其他一些可選引數。例如,我使用如下命令將上面例子中的終端錄製 (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

wrk測試 http api 效能

wrk是個方便的小工具,可以測試 api 效能。為了演示它的用法,我在本地的 8001 埠執行了乙個最小化的 python http api 伺服器,它只有乙個端點(/hello)。用wrk測試它的效能(5 秒內,使用 12 個執行緒發起 200 個連線):

調整執行緒數、連線數、時長可以測試不同負載下 api 的表現。它不能代替 locust 和 jmeter 這樣的效能測試工具,但很輕量,在許多場景下夠用。

很不幸,基於wrk的命令列介面發起 post 請求很笨拙:需要用 lua 編寫乙個小指令碼,作為引數傳給命令(詳見文件)。

安裝wrk

exa替代ls

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

加上--git-ignore引數會根據 .gitignore 忽略對應檔案,使用-t引數則能以樹型結構列出目錄。

安裝exa

fd查詢檔案和目錄

通常使用find命令基於正規表示式查詢檔案或目錄。fd是用 rust 編寫的find替代品。使用合理的預設值,提供更方便的介面,速度也更快。

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

複製**安裝fd

rg(ripgrep) 查詢檔案中的字串

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

rg是用 rust 編寫的,vs code 編輯器的搜尋功能其實是通過呼叫 rg 實現的。在效能評測中,rg 一貫超過類似工具。

安裝 ripgrep

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

優秀的命令列工具整理(三)

有了 tig,無需離開命令列,就能互動式地瀏覽 git 倉庫。tig的使用簡單直觀,提供了 stash staging log 等檢視。感謝 renato suero renatosuero 在 dev 上向我推薦tig。pathpicker 是由 facebook 推出的命令列檔案速選庫。下面的動...

命令列工具

在wince6.0 中,在vs2005 的 build 選單中,有乙個 advanced build commands 其中有很多編譯選項 sysgen 相當於執行命令 blddemo q 一般第一次編譯或者是 改變了 catalog 中的item 的時候,就用這個了。clean sysgen 相當...

命令列工具

執行 scws h 可以看到詳細幫助說明。usage scws options i input o output i string file 要切分的字串或檔案,如不指定則程式自動讀取標準輸入,每輸入一行執行一次分詞 o file 切分結果輸出儲存的檔案路徑,若不指定直接輸出到螢幕 c charse...