一套命令行生產力工具 (共 22 個)
本文由 Python 編程時光整理
來源 | switowski.com/blog/favorite-cli-tools
程序員在搞開發時,終端 CLI 工具的使用必不可少,往往都是生產力工具,所以今天在此給大家推薦一下比較好用的終端工具。先給大家列個推薦清單,如下圖。
高頻 CLI 工具推薦
1、fish shell
毋庸置疑,在終端工具中,Shell 是使用最頻繁也最重要的工具。過去,我曾經使用過 Bash 和 Z Shell,而如今,這個 Fish Shell,也是一個非常優秀的終端 Shell 工具,擁有許多開箱即用的功能,例如語法自動推薦補全、語法高亮顯示或使用快捷鍵在最近訪問的文件夾之間來回切換。
下載地址:https://fishshell.com/
2、Starship
如果必須要從本篇文章中選擇一個我最喜歡的終端工具——那非 Starship 莫屬。Starship 可以適用於任何 Shell。你只需要安裝它,然後在相應的配置文件. bashrc/.zshrc/config.fish 添加一行配置,剩下的工作交給它來完成就好了。
它可以做到:
-
根據你是否在代碼倉庫中添加了新文件、是否修改了文件、是否暫存了文件等情況,用相應的符號表示 git 倉庫的狀態。
-
根據你所在的 Python 項目目錄,展示 Python 的版本號,這也適用於 Go/Node/Rust/Elm 等其他編程語言環境。
-
展示上一個命令執行所用的時間,指令運行時間必須在毫秒級別。
-
如果上一個命令執行失敗,會展示相應的錯誤提示符。
還有不計其數的其他信息可以展示。但是,它能以更加友好的形式智能地給你呈現!比如,如果你不在 git 存儲庫中,它將隱藏 git 信息。如果您不在 Python 項目中,則不會有 Python 版本信息,因爲顯示它沒有什麼意義。它永遠不會給你展示多餘信息,始終保持終端的美觀,優雅和簡約。
下載地址:https://starship.rs/
3、z
“z” 可以讓你快速地在文件目錄之間跳轉。它會記住你訪問的歷史文件夾,經過短暫的學習後,你就可以使用 z path_of_the_folder_name 命令在目錄之間跳轉了。
比如,如果我經常訪問 ~/work/src/projects,我只需要運行 z pro ,就可以立馬跳轉到那裏。z 的原理參考了 frecency 算法——一個基於統計 frequency 和 recency 進行分析的算法。如果它存儲了你不想使用的路徑文件夾,你隨時可以手動將其刪除。它提高了我在常用的不同文件路徑之間頻繁切換的效率,幫我節省了鍵盤擊鍵次數以及大量的路徑記憶。
下載地址:https://github.com/rupa/z
4、fzf
fzf — fuzzy finder,即模糊查找器。它是一種通用工具,可讓你使用模糊搜索來查找文件、歷史命令、進程、git 提交等。你鍵入一些字母,它會嘗試匹配結果列表中任何位置的字母。輸入的字母越多,結果也就越準確。
下載地址:https://github.com/junegunn/fzf
5、fd
上面動圖是 find 命令(左)和 fd 命令(右)的使用對比。
類似於系統自帶的 find 命令,但使用起來更簡單,查找速度更快,並且具有良好的默認設置。
比如你想找一個名爲 “invoice” 的文件,但是不確定文件的擴展名,還是查找一個存放所有 invoice 的目錄,而不單是一個文件。你可以擼起袖子,開始爲 find 命令編寫那些複雜的正則表達式,也可以直接命令行運行 fd invoice。
默認情況下,fd 會忽略隱藏的以及在. gitignore 列出的文件和目錄。大多數時候,這也是我們想要的,但是在極少數特殊情況下,如果需要禁用此功能時,我會給該命令設置一個別名:fda='fd -IH'。
你會發現,fd 命令輸出的顏色配置很漂亮,而且根據基準測試(上述 GIF),它的執行速度甚至比 find 命令的還要快。
下載地址:https://github.com/sharkdp/fd
6、ripgrep
上圖爲 grep(左)與 rg(右)命令執行時的對比。
與上述 fd 指令類似,ripgrep 是 grep 命令的替代方法, 不過 ripgrep 的執行速度更快,而且具有健全的默認配置以及豐富的彩色輸出。
下載地址:https://github.com/BurntSushi/ripgrep
7、htop 和 glances
在 Linux 或 Mac 上顯示進程運行狀態信息最常用工具是我們熟悉的 top,它是每位系統管理員的好幫手。
htop 工具是 top 工具的絕佳替代品。
top 工具是非常基礎的監控工具,提供的功能有限,因此很多人轉去使用 htop。htop 比起 top,優勢很明顯——除了功能更加完善以外,它的色彩搭配也很豐富,整體上使用起來更加友好。
藉助 glances,還可以讓你一目瞭然地快速瞭解系統當前狀態。
glances 是 htop 的補充工具。除了列出所有進程及其 CPU 和內存使用情況之外,它還可以顯示有關係統的其他信息,比如:
-
網絡及磁盤使用情況
-
文件系統已使用的空間和總空間
-
來自不同傳感器(例如電池)的數據
-
以及最近消耗過多資源的進程列表
htop 下載地址:https://hisham.hm/htop/
glances 下載地址:https://nicolargo.github.io/glances/
8、virtualenv 和 virtualfish
Virtualenv 是用於在 Python 中創建虛擬環境的工具。
VirtualFish 則是 Fish Shell 的虛擬環境管理器。它提供了許多命令來執行快速創建、列出或刪除虛擬環境等操作。
virtualenv 下載地址:https://pypi.org/project/virtualenv/
virtualfish 下載地址:https://github.com/justinmayer/virtualfish
9、pyenv、nodenv 和 rbenv
pyenv 可以輕鬆實現 Python 版本的切換。
Pyenv、nodenv 和 rubyenv 是用於管理計算機上不同版本的 Python、Node 和 Ruby 的工具。
假設你要在計算機上安裝兩個版本的 Python。比如,你正在從事兩個不同的 Python 項目,或者因爲特殊情況仍然需要使用 Python2。不同 Python 版本在電腦上管理很複雜。你需要確保不同的項目具有正確版本的軟件依賴包。如果不小心,很容易弄亂這種脆弱的配置。
該工具爲版本管理提供了很多幫助,並將這一噩夢變得易於管理。它可以全局或 “按文件夾” 切換 Python 版本,而且每個版本都是相互隔離的。
pyenv 下載地址:https://github.com/pyenv/pyenv
nodenv 下載地址:https://github.com/nodenv/nodenv
rbenv 下載地址:https://github.com/rbenv/rbenv
10、pipx
Virtualenv 解決了 Python 程序包管理中的許多問題,但是還有一個方案可以解決。如果我想在全局環境下安裝 Python 軟件包(比如它是一個獨立的工具,正如前面提到的 glances 工具),那麼我會遇到全局安裝帶來的問題。在虛擬環境之外安裝軟件包不是一個好主意,將來可能會導致意想不到的問題。另一方面,如果我決定使用虛擬環境,那麼每次我要運行程序時都需要激活該虛擬環境。這也不是最方便的解決方案。
事實證明,pipx 工具可以解決上面提到的問題。它將 Python 軟件依賴包安裝到單獨的環境中(因此不會存在依賴項衝突的問題)。與此同時,這些工具提供的 CLI 命令在全局環境內也可用。因此,我無需激活任何環境——pipx 會幫我完成這個操作!
pipx 下載地址:https://github.com/pipxproject/pipx
11、ctop 和 lazydocker
ctop 的實時監控示例
當你使用 Docker 並對其監控時,這兩個工具會很有幫助。ctop 是 Docker 容器的頂級接口。它可以爲你:
-
展示正在運行和已停止的容器列表。
-
展示統計信息,例如內存、CPU 使用率以及針對每個容器的其他詳細信息窗口(例如綁定的端口等其他信息)。
-
提供快捷菜單,方便快速停止、殺掉指定容器進程或顯示給定容器的日誌。
這比你嘗試從 docker ps 命令中找出所有這些信息要方便多了。
lazydocker 也是一個非常好用的 Docker 工具
lazydocker 它是一個非常成熟的擁有終端 UI 界面的工具,提供了非常豐富的功能用於管理 Docker。
ctop 下載地址:https://github.com/bcicen/ctop
lazydocker 下載地址:https://github.com/jesseduffield/lazydocker
12、Homebrew
如果使用的是 Mac,那就無需再多介紹 Homebrew 了。它是 macOS 上被業界普遍認可的軟件包管理器。
下載地址:https://brew.sh/
13、asciinema
asciinema 是可用於記錄終端會話的工具。但是,與錄製 GIF 不同,它可以讓用戶選擇並複製這些錄製中的代碼!這對於錄製編碼教程來說十分好用。asciinema 錄製的內容,支持直接複製,十分給力。
下載地址:https://asciinema.org/
14、colordiff 和 diff-so-fancy
如果想在終端中使用 diff 操作(比較兩個文件之間的差異),可以放棄使用 diff 命令,而是使用 colordiff。colordiff 輸出可以高亮顯示,因此在查看文件差異內容時要方便得多,而不是在 diff 命令輸出內容下,費力地查看所有的 “<” 和“>”符號來對比文件差異。
如果你覺得還不夠,那麼推薦 diff-so-fancy。它是比 colordiff 更友好的一個差異對比工具。
它通過以下方式進一步改善了文件內容差異展示的外觀:
-
突出顯示每一行中差異的單詞,而不是整行
-
簡化變更文件的標題
-
去除 + 和 - 符號(顏色差異展示就夠了)
-
清楚地指出新行和刪除的空行
colordiff 下載地址:https://www.colordiff.org/
diff-so-fancy 下載地址:https://github.com/so-fancy/diff-so-fancy
15、tree
可以通過 brew install tree 安裝該工具。如果要查看給定目錄的內容,那麼 tree 是執行此操作的必備工具。它能以漂亮的樹狀結構顯示所有子目錄及文件:
$ tree .
.
├── recovery.md
├── README.md
├── archive
├── automator
│ ├── Open\ Iterm2.workflow
│ │ └── Contents
│ │ ├── Info.plist
│ │ ├── QuickLook
│ │ │ └── Thumbnail.png
│ │ └── document.wflow
│ └── Start\ Screen\ Saver.workflow
├── brew-cask.sh
16、bat
類似於在終端中常用的用於顯示文件內容的 cat 命令,但是 bat 效果更佳。
它增加了語法高亮顯示,git gutter 標記(如果適用),自動分頁(如果文件很大)等功能,並且使得輸出的內容閱讀起來更加友好。
bat 下載地址:https://github.com/sharkdp/bat
17、httpie
如果你需要發送一些 HTTP 請求,但發現使用 curl 不夠直觀,那麼可以嘗試一下 httpie。這是一款非常好用的 curl 替代工具。合理的默認配置以及簡潔的語法使它更易於使用,命令返回也是彩色輸出。
httpie 下載地址:https://httpie.org/
18、tldr
簡化版的命令幫助手冊。
“man pages” 展示的信息太全面了,但是很多時候使用 tldr 可以更快地幫你找到特定信息,這纔是用戶真正想要的。
tldr 下載地址:https://tldr.sh/
19、exa
exa 是 ls 命令的一個可替代方案。
它色彩豔麗,還可以顯示 git 狀態等其他信息,自動將文件大小轉換爲方便人們閱讀的單位,並且所有這些都保持與 ls 幾乎相同的執行速度。
exa 下載地址:https://the.exa.website/
20、litecli 和 pgcli
這是 SQLite 和 PostgreSQL CLI 的解決方案。藉助自動提示和語法突出顯示,它們比默認的 sqlite3 和 psql 工具要好用很多。
litecli 下載地址:https://litecli.com/
pgcli 下載地址:https://www.pgcli.com/
21、mas
mas 是一個用於從 App Store 安裝軟件的 CLI 工具。
mas 下載地址:https://github.com/mas-cli/mas
22、ncdu
這是在終端進行磁盤分析時使用的工具,它使用起來簡單快捷。當需要釋放一些硬盤空間時,可以使用這款工具。
ncdu 下載地址:https://dev.yorhel.nl/ncdu
總結
以上推薦工具清單很長,小夥伴們有什麼好用的也可以安利出來,一起交流進步。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/u03k4ROf2MqTdSAjkH4BjQ