翻譯:weakish@leancloud
我打算寫一系列文章,展示下近些年發現的一些很棒的非標準命令列工具,這是第一篇。如果你用命令列,那麼這些工具中大概至少有乙個能讓你的生活更舒心。
z
跳轉
現代瀏覽器位址列可以智慧型模糊搜尋,節省了大量時間。想要刷下推特?只需在位址列輸入「tw」然後回車。
相比之下,在命令列下使用cd
訪問檔案系統,方式就太陳舊了。謝天謝地,z
給命令列帶來了瀏覽器風格的導航。
短暫的學習期之後,z
能讓你從任意位置跳轉到乙個目錄,只需輸入目標目錄名的子字串。z
會跳轉到哪個目錄取決於你提供的字串引數、訪問目錄的頻繁程度、訪問目錄的最近時間。這稱為「頻近度 (frecency)」。
z
不僅提高了速度,還降低了認知負擔。使用cd
時,你需要準確回憶目標目錄在目錄樹的位置,並計算到達目錄的路徑。有了z
,只需知道目錄的名稱。
z
也已經移植到了其他 shell (例如 fish 和 zsh)。類似的專案有autojump
。
安裝z
fzf
快速模糊搜尋器
安裝fzf
後,在命令列的任何地方按下ctrl + t
,就可以開啟互動式模糊搜尋介面,遞迴搜尋當前目錄下的檔案。輸入搜尋項後,上、下鍵選擇結果,回車上屏:
在上面的例子中,我輸入了bat
(還可以是其他任何命令,例如less
、cd
等),接著按下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
asciinema
和svg-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
複製**
安裝asciinema
和svg-term
wrk
測試 http api 效能
wrk
是個方便的小工具,可以測試 api 效能。為了演示它的用法,我在本地的 8001 埠執行了乙個最小化的 python http api 伺服器,它只有乙個端點(/hello
)。用wrk
測試它的效能(5 秒內,使用 12 個執行緒發起 200 個連線):
調整執行緒數、連線數、時長可以測試不同負載下 api 的表現。它不能代替 locust 和 jmeter 這樣的效能測試工具,但很輕量,在許多場景下夠用。
很不幸,基於wrk
的命令列介面發起 post 請求很笨拙:需要用 lua 編寫乙個小指令碼,作為引數傳給命令(詳見文件)。
安裝wrk
exa
替代ls
exa
是ls
的現代替代品,其彩色輸出更為易讀,並提供了更多控制輸出如何呈現的選項。
加上--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...