作為開發人員,我們在終端機上花費了大量時間。有很多有用的 CLI 工具,它們可以讓您在命令行中的生活更輕鬆、更快速,而且通常更有趣。

這篇文章概述了 50 個必備的好用 CLI 工具。

原文出處:https://dev.to/lissy93/cli-tools-you-cant-live-without-57f6


工具

thefuck - 自動更正錯誤輸入的命令

thefuck 是您一旦嘗試過就離不開的實用程式之一。每當您輸入錯誤的命令並出現錯誤時,只需執行 fuck,它就會自動更正它。使用向上/向下選擇一個更正,或者只執行 fuck --yeah 立即執行最有可能的。

他媽的示例用法


zoxide - 輕鬆導航 (更好的 cd)

z 讓您可以跳轉到任何目錄,而無需記住或指定其完整路徑。它會記住您存取過的目錄,因此您可以快速跳轉——您甚至不需要鍵入完整的文件夾名稱。它還具有互動式選項,使用“fzf”,因此您可以即時過濾目錄結果

zoxide-example-usage


tldr - 社區維護的文件 (更好的 man)

tldr 是社區維護的手冊頁的巨大集合。與傳統的手冊頁不同,它們進行了總結,包含有用的用法範例,並且配色良好,便於閱讀

tldr-example-usage


scc - 計算程式碼行數(更好的cloc

scc 為您提供了針對特定目錄以每種語言編寫的程式碼行數的細分。它還顯示了一些有趣的統計資料,例如估計的開發成本和復雜性訊息。它的速度非常快,非常準確,並且支持多種語言

scc-example-usage


exa - 列出文件 (更好的 ls)

exa 是基於 Rust 的現代替代 ls 命令,用於列出文件。它可以顯示文件類型圖標、顏色、文件/文件夾訊息,並有多種輸出格式——樹、網格或列表

exa-example-usage


duf - 硬碟使用量 (更好的 df)

duf 非常適合顯示有關已安裝硬碟的訊息和檢查可用空間。它產生清晰多彩的輸出,並包括用於排序和自定義結果的選項。

duf-示例用法


aria2 - 下載實用程式 (更好的 wget

aria2 是一種輕量級、多協議、用於 HTTP/HTTPS、FTP、SFTP、BitTorrent 和 Metalink 的恢復下載實用程序,支持通過 RPC 接口進行控制。它的功能豐富令人難以置信,並且有大量的[選項](https://aria2.github.io/manual/en/ html/aria2c.html)。還有 ziahamza/webui-aria2 - 一個不錯的網路介面搭配。

aria2c-example-usage


bat - 讀取文件(更好的cat)

batcat 的複製品,但具有語法高亮顯示和 git 集成。它是用 Rust 編寫的,性能非常好,並且有多個用於自定義輸出和主題的選項。支持自動管道和文件連接

bat-example-usage


diff-so-fancy - 文件比較(更好的diff)

diff-so-fancy 為比較字串、文件、目錄和 git 更改提供了更好看的差異。更改突出顯示使發現更改變得更加容易,並且您可以自定義輸出佈局和顏色

diff-so-fancy-example-usage


entr - 觀察變化

entr 允許您在文件更改時執行任意命令。您可以傳遞一個文件、目錄、符號連結或正則表達式來指定它應該監視哪些文件。它對於自動重建專案、響應日誌、自動化測試等非常有用。與類似專案不同,它使用 kqueue(2) 或 inotify(7) 來避免輪詢,並提高性能

entr-example-usage


exiftool - 讀取+寫入元資料

ExifTool 是一個方便的實用程序,用於讀取、寫入、剝離和建立各種文件類型的元訊息。再次分享照片時不要不小心洩露您的位置!

exiftool-example-usage


fdupes - 重複文件查找器

jdupes 用於辨識和/或刪除指定目錄中的重複文件。當您有兩個或更多相同的文件時,它對於釋放硬碟空間很有用

fdupes-example-usage


fzf - 模糊文件查找器(更好的find)

fzf 是一個非常強大且易於使用的模糊文件查找器和過濾工具。它允許您跨文件搜尋字串或模式。 fzf 也有可用於大多數 shell 和 IDE 的插件,用於在搜尋時顯示即時結果。這篇由 Alexey Samoshkin 撰寫的 文章 重點介紹了它的一些用例。

fzf-示例用法


hyperfine - 命令基準測試

hyperfine 可以輕鬆準確地對任意命令或腳本進行基準測試和比較。它負責預熱執行、清除緩存以獲得準確的結果並防止來自其他程序的干擾。它還可以將結果導出為原始資料並生成圖表。

hyperfine-example-usage


just - 現代命令執行器(更好的make)

justmake 類似,但增加了一些不錯的功能。它讓您可以將專案命令分組到副本中,這些副本可以輕鬆列出和執行。支持別名、位置參數、不同的 shell、dot env 集成、字串插入以及幾乎所有您可能需要的東西


jq - JSON 處理器

jq 類似於 sed,但對於 JSON - 您可以使用它輕鬆地切片、過濾、映射和轉換結構化資料。它可用於編寫複雜的查詢以提取或操作 JSON 資料。還有一個 jq playground,您可以用來試用,或通過即時回饋制定查詢


most - 多窗口滾動尋呼機(更好的 less)

most 是一個尋呼機,用於讀取長文件或命令輸出。 most 支持多窗口並且可以選擇不換行


procs - 進程查看器(更好的 ps)

procs 是一個易於導航的流程查看器,它具有彩色突出顯示,使流程的排序和搜尋變得容易,具有樹視圖和實時更新

procs-example-usage


rip - 刪除工具(更好的 rm)

rip 是一種安全、符合人體工程學且高性能的刪除工具。它讓您直觀地刪除文件和目錄,並輕鬆恢復已刪除的文件

rip-example-usage


ripgrep - 在文件中搜尋 (更好的 grep)

ripgrep 是一種面向行的搜尋工具,可遞歸地在當前目錄中搜尋正則表達式模式。它可以忽略 .gitignore 的內容並跳過二進製文件。它能夠在壓縮檔案中搜尋,或只搜尋特定的擴展名,並使用各種編碼方法理解文件

ripgrep-example-usage


rsync - 快速、增量文件傳輸

rsync 讓您可以在本地複制大文件,或將大文件複製到遠程主機或外部驅動器或從遠程主機或外部驅動器複製。它可用於保持多個位置的文件同步,非常適合建立、更新和恢復備份


sd - 查找並替換(更好的sed)

sd 是一種簡單、快速且直觀的查找和替換工具,基於字串文字。它可以在文件、整個目錄或任何管道文本上執行

sd-示例用法


tre - 目錄層次結構(更好的tree)

tre 輸出當前目錄或指定目錄的樹形文件列表,並帶有顏色。使用“-e”選項執行時,它會為每個專案編號,並建立一個臨時別名,您可以使用該別名快速跳轉到該位置

tre-example-usage


xsel - 存取剪貼板

xsel 讓您通過命令行讀取和寫入 X 選擇剪貼板。它對於將命令輸出通過管道傳輸到剪貼板或將復制的資料傳輸到命令中很有用


CLI 監控和性能應用程式

bandwhich - 頻寬利用率監視器

即時顯示頻寬使用情況、連接訊息、傳出主機和 DNS 查詢

bandwhich-example-usage


ctop - 容器指標和監控

類似於 top,但用於監控正在執行的(Docker 和 runC)容器的資源使用情況。它顯示實時 CPU、內存和網絡帶寬以及每個容器的名稱、狀態和 ID。還有一個內置的日誌查看器和管理(停止、啟動、執行等)容器的選項

ctop-example-usage


bpytop - 資源監控(更好的htop)

bpytop 是一種快速、交互式、可視化的資源監視器。它顯示了最熱門的執行進程、最近的 CPU、內存、磁盤和網絡歷史記錄。您可以從界面中導航、排序和搜尋——還支持自定義顏色主題

bpytop-example-usage


glances - 資源監視器 + 網絡和 API

glances 是另一個資源監視器,但具有不同的功能集。它包括一個完全響應的 Web 視圖、一個 REST API 和歷史監控。它易於擴展,並且可以與其他服務集成

掃視示例用法


gping - 交互式 ping 工具 (更好的 ping

gping 可以在多個主機上執行 ping 測試,同時以實時圖形顯示結果。當與 --cmd 標誌一起使用時,它還可以用於監視執行時間

gping 示例用法


dua-cli - 磁盤使用分析器和監視器 (更好的 du)

dua-cli 讓您以交互方式查看每個已安裝驅動器的已用和可用磁盤空間,並輕鬆釋放存儲空間

dua-cli-usage-example


speedtest-cli - 命令行速度測試實用程序

speedtest-cli 只是執行網路速度測試,通過 speedtest.net - 但直接從終端 :)

speedtest-cli-example-usage


dog - DNS 查找客戶端(更好的dig

dog 是一個易於使用的 DNS 查找客戶端,支持 DoT 和 DoH,漂亮的彩色輸出和發出 JSON 的選項

dog-example-usage


CLI 生產力應用程式

上網衝浪、播放音樂、查看電子郵件、管理日曆、閱讀新聞等等,無需離開終端!

browsh - CLI 網路瀏覽器

browsh 是一個完全交互的、實時的、現代的基於文本的瀏覽器,呈現給 TTY 和瀏覽器。它同時支持鼠標和鍵盤導航,並且對於純基於終端的應用程式來說功能豐富得令人吃驚。它還緩解了困擾現代瀏覽器的電池耗盡問題,並且通過對 MoSH 的支持,由於帶寬減少,您可以體驗更快的加載時間

browsh-example-usage


books - 書籤管理器

buku 是一個基於終端的書籤管理器,具有大量的配置、存儲和使用選項。還有一個可選的 web UI瀏覽器插件, 用於在終端外存取您的書籤

buku-example-usage


cmus - 音樂瀏覽器/播放器

cmus 是終端音樂播放器,由鍵盤快捷鍵控制。它支持廣泛的音頻格式和編解碼器,並允許將曲目組織到播放列表中並應用播放設置

cmus-example-usage


cointop - 跟踪加密價格

cointop 顯示當前的加密貨幣價格,並跟踪您的投資組合的價格歷史。支持價格提醒、歷史圖表、貨幣換算、模糊搜尋等。您可以通過網絡 cointop.sh 或執行 ssh cointop.sh 來嘗試演示

cointop-example-usage


ddgr - 從終端搜尋網頁

ddgr 類似於 googler,但適用於 DuckDuckGo。它快速、乾淨、簡單,支持即時回答、搜尋完成、搜尋 bangs 和高級搜尋。它默認尊重您的隱私,也有 HTTPS 代理支持,並與 Tor 一起工作

dggr-example-usage


micro - 程式碼編輯器(更好的nano)

micro 是一款易於使用、快速且可擴展的程式碼編輯器,支持鼠標。由於它被打包成一個二進製文件,安裝就像curl https://getmic.ro | 安裝一樣簡單。慶典


khal - 日曆客戶端

khal 是一個終端日曆應用程式,它顯示即將發生的事件、月份和議程視圖。您可以將它與任何 CalDAV 日曆同步,並直接加入、編輯和刪除事件

khal-example-usage


mutt - 電子郵件客戶端

mut 是一個經典的、基於終端的郵件客戶端,用於發送、閱讀和管理電子郵件。它支持所有主流電子郵件協議和郵箱格式,允許附件、密件抄送/抄送、線程、郵件列表和傳遞狀態通知

mutt-example-usage


newsboat - RSS / ATOM 新聞閱讀器

newsboat 是一個 RSS 提要閱讀器和聚合器,用於直接從終端閱讀新聞、博客和後續更新

newsboat-example-usage


rclone - 管理雲存儲

rclone 是一個方便的實用程序,用於將文件和文件夾同步到各種雲存儲提供商。它可以直接從命令行呼叫,也可以輕鬆集成到腳本中以替代繁重的桌面同步應用程式


taskwarrior - Todo + 任務管理

task 是一個 CLI 任務管理/待辦事項應用程式。它既簡單又不引人注目,但也非常強大和可擴展,內置高級組織和查詢功能。還有很多(700+!)額外的插件 用於擴展它的功能和與第三方服務的集成

任務戰士示例用法


tuir - Reddit 的終端用戶界面

tuir 是一個很好的選擇,如果你想看起來像在工作,同時實際瀏覽 Reddit!它具有直觀的鍵綁定、自定義主題,還可以呈現圖像和多媒體內容。還有 haxor 用於黑客新聞

tuir-example-usage


CLI 開發套件

httpie - HTTP/API測試測試客戶端

httpie 是一個 HTTP 客戶端,用於測試、除錯和使用 API。它支持您所期望的一切——HTTPS、代理、身份驗證、自定義標頭、持久會話、JSON 解析。具有表達語法和彩色輸出的用法很簡單。與其他 HTTP 客戶端(Postman、Hopscotch、Insomnia 等)一樣,HTTPie 也包含一個 Web UI

httpie-示例用法


lazydocker - 完整的 Docker 管理應用程式

lazydocker 是一個 Docker 管理應用程式,可讓您查看所有容器和圖像、管理它們的狀態、讀取日誌、檢查資源使用情況、重新啟動/重建、分析層、修剪未使用的容器、圖像和卷等等。它使您無需記住、鍵入和連結多個 Docker 命令。

lazy-docker-example-usage


lazygit - 完整的 Git 管理應用程式

lazygit 是一個可視化的 git 客戶端,在命令行上。輕鬆加入、提交和推送文件、解決衝突、比較差異、管理日誌以及執行壓縮和倒帶等複雜操作。一切都有鍵綁定,顏色,而且很容易配置和擴展

lazy-git-example-usage


kdash - Kubernetes 儀表板應用程式

kdash 是一個一體化的 Kubernetes 管理工具。查看節點指標、觀察資源、流容器日誌、分析上下文和管理節點、pod 和命名空間


gdp-dashboard - 可視化 GDP 除錯器

gdp-dashboard 向 GNU 除錯器加入了一個可視元素,用於除錯 C 和 C++ 程序。輕鬆分析內存、單步執行斷點和查看寄存器

gdp-dashboard-example-usage


CLI 外部服務

ngrok - 共享本地主機的反向代理

ngrok 安全* 將您的本地主機暴露在唯一 URL 後面的網路上。這使您可以與遠程同事實時共享您的工作。使用非常簡單,但它也有很多高級功能,例如身份驗證、webhooks、防火牆、流量檢查、自定義/通配符域等等

ngrok-示例用法


tmate - 通過網路共享終端會話

tmate 讓您立即與世界其他地方的人分享實時終端會話。跨系統工作,支持存取控制/授權,可自託管,具備Tmux的所有特性


asciinema - 錄製+分享終端會話

asciinema 對於輕鬆記錄、共享和嵌入終端會話非常有用。非常適合展示您建置的內容,或展示教程的命令行步驟。與屏幕錄製視頻不同,用戶可以復制粘貼內容、動態更改主題和控製播放


navi - 交互式備忘單

navi 允許您瀏覽備忘單並執行命令。參數的建議值動態顯示在列表中。減少輸入,減少錯誤,讓自己不必記住數千條命令。它集成了 tldrcheat.sh 以獲取內容,但您也可以導入其他備忘單,甚至編寫自己的備忘單


transfer.sh - 快速文件共享

transfer 使上傳和共享文件變得非常簡單,直接從命令行即可。它是免費的,支持加密,為您提供唯一的 URL,也可以自行託管。

我寫了一個 Bash 輔助函數來讓使用更容易一些,你可以在這裡找到它 或嘗試一下通過執行bash <(curl -L -s https://alicia.url.lol/transfer)

transfer-sh-example-usage


surge - 在幾秒鐘內部署一個站點

surge 是一個免費的靜態託管服務提供商,您可以通過一個命令直接從終端部署到它,只需在您的 dist 目錄中執行 surge!它支持自定義域、自動 SSL 憑證、pushState 支持、跨域資源支持——而且是免費的!

surge-sh-example-usage


wttr.in - 查看天氣

wttr.in 是一項以命令行中易於理解的格式顯示天氣的服務。只需執行“curl wttr.in”或“curl wttr.in/London”來嘗試一下。有 URL 參數來自定義返回的資料以及格式

wrrt-in-example-usage


CLI 樂趣

cowsay - 讓 ASCII 牛說出你的訊息

cowsay 是一個可配置的會說話的奶牛。它基於 Tony Monroe 的原創

cowsay-example-usage


figlet - 將文本輸出為大型 ASCII 藝術文本

figlet 將文本輸出為 ASCII 藝術

figlet-example-usage


lolcat - 使控制台輸出彩虹色

lolcat 使任何傳遞給它的文本變成彩虹色

lolcat-example-usage


neofetch - 顯示系統資料和 ditstro 訊息

neofetch 打印發行版和系統訊息(這樣你就可以靈活地在 r/unixporn 上使用 Arch btw)

neofetch-example-usage

例如,我使用 cowsayfigletlolcatneofetch 來建立一個自定義的基於時間的 MOTD,在用戶首次登錄時顯示給他們。它以他們的名字問候他們,顯示伺服器訊息和時間、日期、天氣和 IP。 這裡是源程式碼

歡迎


安裝和管理

我們大多數人都有一套核心的 CLI 應用程式和我們所依賴的實用程序。設置一台新機器並單獨安裝每個程序很快就會讓人厭煩。因此,安裝和更新終端應用程式的任務非常適合自動化。 此處 是我編寫的一些示例腳本,可以輕鬆將其放入您的點文件或獨立執行以確保您永遠不會錯過一個應用程式。

對於 MacOS 用戶,最簡單的方法是使用 Homebrew。只需建立一個 Brewfile(使用 touch ~/.Brewfile),然後列出您的每個應用程式,然後執行 brew bundle。您可以通過將其放入 Git 存儲庫來備份您的包列表。這是一個示例,讓您入門:https://github.com/Lissy93/Brewfile

在 Linux 上,您通常希望使用本機包管理器(例如 pacmanapt)。例如,這裡有一個腳本 用於在 Arch Linux 系統上安裝上述應用程式

Linux 上的桌面應用程式可以通過 Flatpak 以類似的方式進行管理。同樣,這是一個示例腳本 :)


結論

...就是這樣 - 一個方便的 CLI 應用程式列表,以及一種在您的系統中安裝和保持它們最新的方法。

希望其中一些對你們中的一些人有用:)


共有 0 則留言