這才叫程序員的命令行生產(chǎn)力工具!

來(lái)自 infoQ
前段時(shí)間,我寫(xiě)過(guò)一篇我最喜歡的 Mac 應(yīng)用的文章。其實(shí),我大部分的時(shí)間都花費(fèi)在終端的使用上,我覺(jué)得有必要給大家推薦一下比較好用的終端工具。先給大家列個(gè)推薦清單,如下圖。

高頻 CLI 工具推薦
Shell- 毋庸置疑,在終端中,Shell 是使用最頻繁也最重要的工具。過(guò)去,我曾經(jīng)使用過(guò) Bash 和 Z Shell,而如今,我正在使用的是 Fish Shell。這是一個(gè)非常優(yōu)秀的終端 Shell 工具,擁有許多開(kāi)箱即用的功能,例如語(yǔ)法自動(dòng)推薦補(bǔ)全、語(yǔ)法高亮顯示或使用快捷鍵在最近訪問(wèn)的文件夾之間來(lái)回切換。

一方面,它非常適合初學(xué)者使用,因?yàn)槭褂谜邿o(wú)需進(jìn)行任何設(shè)置。另一方面,由于它使用的腳本語(yǔ)法與其他 Shell 有所差異,因此通常用戶(hù)不能把拷貝自網(wǎng)上的腳本直接粘貼使用。你必須將不兼容的命令更改為合法的 Fish 腳本,或者啟動(dòng)一個(gè) Bash 會(huì)話(huà)以運(yùn)行 Bash 腳本。
https://fishshell.com/docs/current/index.html#syntax-overview
我能理解這種更改背后的原因(畢竟 Bash 腳本不是易于用戶(hù)使用的語(yǔ)言),但這種不兼容絲毫沒(méi)有給我?guī)?lái)任何好處。我平時(shí)很少編寫(xiě) Bash / Fish 腳本,所以經(jīng)常遺忘這些語(yǔ)法,因此每次要使用這些腳本時(shí)我總是必須從頭開(kāi)始重新學(xué)習(xí)它。與 Bash 腳本相比,F(xiàn)ish 腳本的資源相對(duì)更少。我通常不會(huì)去閱讀文檔,重復(fù)造輪子,而是從 StackOverflow 復(fù)制粘貼現(xiàn)成的腳本拿來(lái)即用。
雖然前面我提到了 Fish Shell 的幾個(gè)缺點(diǎn),但是我還是會(huì)推薦你去用一下,因?yàn)榍袚Q Shell 工具十分簡(jiǎn)單,所以很值得你去嘗試一下。特別是當(dāng)你懶得自己去配置 Shell,并希望通過(guò)最少的配置就能獲得很好的使用效果的時(shí)候,那就更不要錯(cuò)過(guò)它了。
Fish 插件
你可以自己添加相關(guān)插件來(lái)擴(kuò)展 Fish Shell 的功能。最簡(jiǎn)單的安裝插件的方法就是使用插件管理工具,比如 Fisher、Oh My Fish 或者 fundle。現(xiàn)在,我使用的插件管理工具是 Fisher,我用它安裝管理了三個(gè)插件:
franciscolourenco/done —— 在長(zhǎng)時(shí)間運(yùn)行的腳本完成后發(fā)送通知。
evanlucas/fish-kubectl-completions——1 個(gè)自動(dòng)補(bǔ)全 kubectl (Kubernetes command line tool) 命令的插件。
fzf—— 將 fzf 工具與 Fish 集成在一起的插件。
過(guò)去,我有使用很多的插件(比如 rbenv、pyenv、nodenv、fzf、z),但是我改用其他工具以避免影響我的 Shell 的運(yùn)行速度(這是我過(guò)去使用 Z shell 所得到的一個(gè)教訓(xùn))。
下載地址:https://fishshell.com/
如果必須要從本篇文章中選擇一個(gè)我最喜歡的終端工具 —— 那非 Starship 莫屬。Starship 可以適用于任何 Shell。你只需要安裝它,然后在相應(yīng)的配置文件.bashrc/.zshrc/config.fish 添加一行配置,剩下的工作交給它來(lái)完成就好了。

它可以做到:
根據(jù)你是否在代碼倉(cāng)庫(kù)中添加了新文件、是否修改了文件、是否暫存了文件等情況,用相應(yīng)的符號(hào)表示 git 倉(cāng)庫(kù)的狀態(tài)。
根據(jù)你所在的 Python 項(xiàng)目目錄,展示 Python 的版本號(hào),這也適用于 Go/Node/Rust/Elm 等其他編程語(yǔ)言環(huán)境。
展示上一個(gè)命令執(zhí)行所用的時(shí)間,指令運(yùn)行時(shí)間必須在毫秒級(jí)別。
如果上一個(gè)命令執(zhí)行失敗,會(huì)展示相應(yīng)的錯(cuò)誤提示符。

還有不計(jì)其數(shù)的其他信息可以展示。但是,它能以更加友好的形式智能地給你呈現(xiàn)!比如,如果你不在 git 存儲(chǔ)庫(kù)中,它將隱藏 git 信息。如果您不在 Python 項(xiàng)目中,則不會(huì)有 Python 版本信息,因?yàn)轱@示它沒(méi)有什么意義。它永遠(yuǎn)不會(huì)給你展示多余信息,始終保持終端的美觀,優(yōu)雅和簡(jiǎn)約。
Starship 的運(yùn)行速度怎么樣呢?它是用 Rust 編寫(xiě)的,盡管功能如此之多,但仍然比我以前使用的所有提示工具都要快!我對(duì)提示信息非常潔癖,因此我經(jīng)常破解自己的版本。我會(huì)根據(jù)現(xiàn)有的提示找到對(duì)應(yīng)的功能代碼,然后將其粘組合在一起,以確保 Starship 只有我需要的功能以保持其快速運(yùn)行。“外部工具永遠(yuǎn)無(wú)法比我精心制作的提示工具更快!” 這就是我對(duì) Starship 持懷疑態(tài)度的原因。
下載地址:https://starship.rs/
“z” 可以讓你快速地在文件目錄之間跳轉(zhuǎn)。它會(huì)記住你訪問(wèn)的歷史文件夾,經(jīng)過(guò)短暫的學(xué)習(xí)后,你就可以使用 z path_of_the_folder_name 命令在目錄之間跳轉(zhuǎn)了。

比如,如果我經(jīng)常訪問(wèn) ~/work/src/projects,我只需要運(yùn)行 z pro ,就可以立馬跳轉(zhuǎn)到那里。z 的原理參考了 frecency 算法 —— 一個(gè)基于統(tǒng)計(jì) frequency 和 recency 進(jìn)行分析的算法。如果它存儲(chǔ)了你不想使用的路徑文件夾,你隨時(shí)可以手動(dòng)將其刪除。它提高了我在常用的不同文件路徑之間頻繁切換的效率,幫我節(jié)省了鍵盤(pán)擊鍵次數(shù)以及大量的路徑記憶。
下載地址:https://github.com/rupa/z
fzf— fuzzy finder,即模糊查找器。它是一種通用工具,可讓你使用模糊搜索來(lái)查找文件、歷史命令、進(jìn)程、git 提交等。你鍵入一些字母,它會(huì)嘗試匹配結(jié)果列表中任何位置的字母。輸入的字母越多,結(jié)果也就越準(zhǔn)確。你可能在其他的代碼編輯器中有過(guò)這種類(lèi)型的搜索使用體驗(yàn) —— 當(dāng)你想打開(kāi)某個(gè)文件時(shí),只鍵入文件名的一部分而不用輸入完整路徑就能進(jìn)行查找 —— 這就是模糊搜索。

我通過(guò) fish fzf 插件插件使用它,因此我可以搜索命令歷史記錄或快速打開(kāi)文件。這是可以每天為我節(jié)省不少時(shí)間的一個(gè)非常棒的工具。
https://github.com/jethrokuan/fzf
下載地址:https://github.com/junegunn/fzf

上面動(dòng)圖是 find 命令(左)和 fd 命令(右)的使用對(duì)比。
類(lèi)似于系統(tǒng)自帶的 find 命令,但使用起來(lái)更簡(jiǎn)單,查找速度更快,并且具有良好的默認(rèn)設(shè)置。
不管你想找到一個(gè)名為 “invoice” 的文件,但是不確定文件的擴(kuò)展名,還是查找一個(gè)存放所有 invoice 的目錄,而不單是一個(gè)文件。你可以擼起袖子,開(kāi)始為 find 命令編寫(xiě)那些復(fù)雜的正則表達(dá)式,也可以直接命令行運(yùn)行 fd invoice。反正對(duì)我來(lái)說(shuō),我只選擇最簡(jiǎn)單的那個(gè)。
默認(rèn)情況下,fd 會(huì)忽略隱藏的以及在.gitignore 列出的文件和目錄。大多數(shù)時(shí)候,這也是我們想要的,但是在極少數(shù)特殊情況下,如果需要禁用此功能時(shí),我會(huì)給該命令設(shè)置一個(gè)別名:fda='fd -IH'。
你會(huì)發(fā)現(xiàn),fd 命令輸出的顏色配置很漂亮,而且根據(jù)基準(zhǔn)測(cè)試(上述 GIF),它的執(zhí)行速度甚至比 find 命令的還要快。
下載地址:https://github.com/sharkdp/fd

上圖為 grep(左)與 rg(右)命令執(zhí)行時(shí)的對(duì)比。
與上述 fd 指令類(lèi)似,ripgrep 是 grep 命令的替代方法, 不過(guò) ripgrep 的執(zhí)行速度更快,而且具有健全的默認(rèn)配置以及豐富的彩色輸出。
它同樣會(huì)跳過(guò)被.gitignore 忽略以及隱藏的文件,因此如果有特殊需要,我們可以設(shè)置指令別名:rga ='rg -uuu'。它會(huì)禁用所有智能篩選,并使 ripgrep 的表現(xiàn)與標(biāo)準(zhǔn)的 grep 指令一致。
下載地址:https://github.com/BurntSushi/ripgrep
在 Linux 或 Mac 上顯示進(jìn)程運(yùn)行狀態(tài)信息最常用工具是我們熟悉的 top,它是每位系統(tǒng)管理員的好幫手。而且,即使是像我一樣主要從事網(wǎng)絡(luò)開(kāi)發(fā),查看計(jì)算機(jī)的運(yùn)行狀況也很有用。你知道,只是看一下當(dāng)前到底是 Docker 進(jìn)程還是 Chrome 進(jìn)程吃掉了你所有的 RAM,應(yīng)該如何做嗎?

htop 工具是 top 工具的絕佳替代品。
top 工具是非常基礎(chǔ)的監(jiān)控工具,提供的功能有限,因此很多人轉(zhuǎn)去使用 htop。htop 比起 top,優(yōu)勢(shì)很明顯 —— 除了功能更加完善以外,它的色彩搭配也很豐富,整體上使用起來(lái)更加友好。

借助 glances,還可以讓你一目了然地快速了解系統(tǒng)當(dāng)前狀態(tài)。
glances 是 htop 的補(bǔ)充工具。除了列出所有進(jìn)程及其 CPU 和內(nèi)存使用情況之外,它還可以顯示有關(guān)系統(tǒng)的其他信息,比如:
網(wǎng)絡(luò)及磁盤(pán)使用情況
文件系統(tǒng)已使用的空間和總空間
來(lái)自不同傳感器(例如電池)的數(shù)據(jù)
以及最近消耗過(guò)多資源的進(jìn)程列表
我選擇使用 htop 來(lái)篩選和終止進(jìn)程,因?yàn)閷?duì)我來(lái)講,效率提高了不少,我也使用 glances 可以快速瀏覽一下計(jì)算機(jī)的運(yùn)行狀況。它提供 API 接口、Web UI 以及支持各種導(dǎo)出格式,因此你可以將系統(tǒng)監(jiān)視提高到一個(gè)新 Level。因此我在這里強(qiáng)烈推薦一波!
htop 下載地址:https://hisham.hm/htop/
glances 下載地址:
https://nicolargo.github.io/glances/
Virtualenv 是用于在 Python 中創(chuàng)建虛擬環(huán)境的工具(比起內(nèi)置的 venv 模塊,我更喜歡 Virtualenv)。

VirtualFish 是 Fish Shell 的虛擬環(huán)境管理器(如果你不使用 Fish Shell,請(qǐng)查看 virtualenvwrapper)。它提供了許多命令來(lái)執(zhí)行快速創(chuàng)建、列出或刪除虛擬環(huán)境等操作。
virtualenv 下載地址:
https://pypi.org/project/virtualenv/
virtualfish 下載地址:
https://github.com/justinmayer/virtualfish
pyenv 可以輕松實(shí)現(xiàn) Python 版本的切換。

Pyenv、nodenv 和 rubyenv 是用于管理計(jì)算機(jī)上不同版本的 Python、Node 和 Ruby 的工具。
假設(shè)你要在計(jì)算機(jī)上安裝兩個(gè)版本的 Python。比如,你正在從事兩個(gè)不同的 Python 項(xiàng)目,或者因?yàn)樘厥馇闆r仍然需要使用 Python2。不同 Python 版本在電腦上管理很復(fù)雜。你需要確保不同的項(xiàng)目具有正確版本的軟件依賴(lài)包。如果你不小心的話(huà),很容易弄亂這種脆弱的配置并被其他軟件包使用的二進(jìn)制文件所覆蓋。
該工具為版本管理提供了很多幫助,并將這一噩夢(mèng)變得易于管理。它可以全局或 “按文件夾” 切換 Python 版本,而且每個(gè)版本都是相互隔離的。
我最近找到了一種名為 asdf 的工具,該工具可以將 pyenv、nodenv、rbenv 及其他 env 進(jìn)行統(tǒng)一管理。它提供了幾乎所有編程語(yǔ)言的版本管理,下次我需要為編程語(yǔ)言設(shè)置版本管理器時(shí),一定會(huì)嘗試使用一下。
pyenv 下載地址:https://github.com/pyenv/pyenv
nodenv 下載地址:https://github.com/nodenv/nodenv
rbenv 下載地址:https://github.com/rbenv/rbenv
Virtualenv 解決了 Python 程序包管理中的許多問(wèn)題,但是還有一個(gè)方案可以解決。如果我想在全局環(huán)境下安裝 Python 軟件包(比如它是一個(gè)獨(dú)立的工具,正如前面提到的 glances 工具),那么我會(huì)遇到全局安裝帶來(lái)的問(wèn)題。在虛擬環(huán)境之外安裝軟件包不是一個(gè)好主意,將來(lái)可能會(huì)導(dǎo)致意想不到的問(wèn)題。另一方面,如果我決定使用虛擬環(huán)境,那么每次我要運(yùn)行程序時(shí)都需要激活該虛擬環(huán)境。這也不是最方便的解決方案。

事實(shí)證明,pipx 工具可以解決上面提到的問(wèn)題。它將 Python 軟件依賴(lài)包安裝到單獨(dú)的環(huán)境中(因此不會(huì)存在依賴(lài)項(xiàng)沖突的問(wèn)題)。與此同時(shí),這些工具提供的 CLI 命令在全局環(huán)境內(nèi)也可用。因此,我無(wú)需激活任何環(huán)境 ——pipx 會(huì)幫我完成這個(gè)操作!
如果你想了解有關(guān) Python 工具的更多信息并想了解如何使用它們,我為 PyCon 2020 會(huì)議制作了一個(gè)名為 “現(xiàn)代 Python 開(kāi)發(fā)人員工具包” 的視頻。

這是一個(gè)長(zhǎng)達(dá)兩個(gè)小時(shí)的視頻教程,內(nèi)容涉及如何設(shè)置 Python 開(kāi)發(fā)環(huán)境,要使用的工具以及如何從頭開(kāi)始制作 TODO 應(yīng)用程序(包括測(cè)試和文檔)。你可以在 YouTube 上進(jìn)行觀看。
https://www.youtube.com/watch?v=WkUBx3g2QfQ
pipx 下載地址:
https://github.com/pipxproject/pipx

ctop 的實(shí)時(shí)監(jiān)控示例
當(dāng)你使用 Docker 并對(duì)其監(jiān)控時(shí),這兩個(gè)工具會(huì)很有幫助。ctop 是 Docker 容器的頂級(jí)接口。它可以為你:
展示正在運(yùn)行和已停止的容器列表。
展示統(tǒng)計(jì)信息,例如內(nèi)存、CPU 使用率以及針對(duì)每個(gè)容器的其他詳細(xì)信息窗口(例如綁定的端口等其他信息)。
提供快捷菜單,方便快速停止、殺掉指定容器進(jìn)程或顯示給定容器的日志。
這比你嘗試從 docker ps 命令中找出所有這些信息要方便多了。

lazydocker 是我最喜歡的 Docker 工具
如果你認(rèn)為 ctop 很酷,請(qǐng)你嘗試使用 lazydocker 后再做決定!它是一個(gè)非常成熟的擁有終端 UI 界面的工具,提供了非常豐富的功能用于管理 Docker。這是我最喜歡的 Docker 管理工具!
ctop 下載地址:https://github.com/bcicen/ctop
lazydocker 下載地址:
https://github.com/jesseduffield/lazydocker
低頻 CLI 工具推薦
除了幾乎每天都在使用的工具以外,我多年來(lái)還收集了一些給力的工具,這些工具對(duì)于一些特定需求非常好用。比如有的終端工具可以用來(lái)將終端操作記錄成 GIF(并且可以讓你在 GIF 中暫停和復(fù)制文本!),還有的終端工具可以用于列出目錄結(jié)構(gòu)、連接數(shù)據(jù)庫(kù)等,下面我會(huì)一一介紹。

如果你使用的是 Mac,那我就無(wú)需再介紹 Homebrew 了。它是 macOS 上被業(yè)界普遍認(rèn)可的軟件包管理器。對(duì)了,它還有一個(gè)稱(chēng)為 Cakebrew 的 GUI 版本軟件,如果感興趣你可以嘗試一下。
下載地址:https://brew.sh/

asciinema 是可用于記錄終端會(huì)話(huà)的工具。但是,與錄制 GIF 不同,它可以讓用戶(hù)選擇并復(fù)制這些錄制中的代碼!
這對(duì)于錄制編碼教程來(lái)說(shuō)十分好用。你應(yīng)該遇到那種尷尬的情況 —— 當(dāng)你準(zhǔn)備跟著視頻教程在終端中敲巨長(zhǎng)的命令,但是講師并為你提供這個(gè)代碼段,你不得不花費(fèi)很長(zhǎng)的時(shí)間去整理這些冗長(zhǎng)的命令。asciinema 錄制的內(nèi)容,支持直接復(fù)制,十分給力。
下載地址:https://asciinema.org/

我很少在終端中使用 diff 操作(比較兩個(gè)文件之間的差異),但是如果你需要執(zhí)行這個(gè)操作,可以放棄使用 diff 命令,而是使用 colordiff。colordiff 輸出可以高亮顯示,因此在查看文件差異內(nèi)容時(shí)要方便得多,而不是在 diff 命令輸出內(nèi)容下,費(fèi)力地查看所有的 “<” 和 “>” 符號(hào)來(lái)對(duì)比文件差異。
如果你覺(jué)得還不夠,那么我推薦給你 diff-so-fancy。它是比 colordiff 更友好的一個(gè)差異對(duì)比工具。

它通過(guò)以下方式進(jìn)一步改善了文件內(nèi)容差異展示的外觀:
突出顯示每一行中差異的單詞,而不是整行
簡(jiǎn)化變更文件的標(biāo)題
去除 + 和 - 符號(hào)(顏色差異展示就夠了)
清楚地指出新行和刪除的空行
colordiff 下載地址:https://www.colordiff.org/
diff-so-fancy 下載地址:https://github.com/so-fancy/diff-so-fancy
你可以通過(guò) brew install tree 安裝該工具。如果要查看給定目錄的內(nèi)容,那么 tree 是執(zhí)行此操作的必備工具。它能以漂亮的樹(shù)狀結(jié)構(gòu)顯示所有子目錄及文件:
$ 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

類(lèi)似于在終端中常用的用于顯示文件內(nèi)容的 cat 命令,但是 bat 效果更佳。
它增加了語(yǔ)法高亮顯示,git gutter 標(biāo)記(如果適用),自動(dòng)分頁(yè)(如果文件很大)等功能,并且使得輸出的內(nèi)容閱讀起來(lái)更加友好。
bat 下載地址:https://github.com/sharkdp/bat

如果你需要發(fā)送一些 HTTP 請(qǐng)求,但發(fā)現(xiàn)使用curl不夠直觀,那么請(qǐng)嘗試一下httpie。這是一款非常好用的curl替代工具。合理的默認(rèn)配置以及簡(jiǎn)潔的語(yǔ)法使它更易于使用,命令返回也是彩色輸出,甚至支持為不同類(lèi)型的身份驗(yàn)證安裝相應(yīng)的插件。
httpie 下載地址:https://httpie.org/
簡(jiǎn)化版的命令幫助手冊(cè)。“man pages” 包含了 Linux 軟件的手冊(cè),這些手冊(cè)解釋了如何使用給定的命令。你可以嘗試運(yùn)行 man cat 或 man grep 來(lái)查看相關(guān)命令的幫助手冊(cè)。它們描述的非常詳細(xì),有時(shí)可能難以掌握。因此,tldr 社區(qū)的目的,就是將每個(gè)命令的幫助手冊(cè)進(jìn)行簡(jiǎn)化,方便用戶(hù)查閱。
tldr 適用于幾乎所有的受歡迎的軟件。正如我提到的,這是社區(qū)的努力和功勞,雖然不太可能包含所有的軟件的簡(jiǎn)化幫助手冊(cè)。但是當(dāng)某個(gè)幫助手冊(cè)被納入管理并起作用時(shí),它提供的信息通常就是你要查找的內(nèi)容。
比如,如果你要?jiǎng)?chuàng)建一些文件的 gzip 壓縮存檔,man tar 可以為你提供可能的參數(shù)選擇。而 tldr tar 會(huì)列出一些我們常見(jiàn)的示例 —— 如圖所示,第二個(gè)示例正是你要執(zhí)行的操作:

“man pages” 展示的信息太全面了,但是很多時(shí)候使用 tldr 可以更快地幫你找到特定信息,這才是用戶(hù)真正想要的。
tldr 下載地址:https://tldr.sh/

exa 是 ls 命令的一個(gè)可替代方案。
它色彩艷麗,還可以顯示 git 狀態(tài)等其他信息,自動(dòng)將文件大小轉(zhuǎn)換為方便人們閱讀的單位,并且所有這些都保持與 ls 幾乎相同的執(zhí)行速度。雖然我很喜歡這個(gè)工具并推薦給你們,但由于某種原因,我仍然堅(jiān)持使用 ls。
exa 下載地址:https://the.exa.website/

這是我首選的 SQLite 和 PostgreSQL CLI 的解決方案。借助自動(dòng)提示和語(yǔ)法突出顯示,它們比默認(rèn)的 sqlite3 和 psql 工具要好用很多。
litecli 下載地址:https://litecli.com/
pgcli 下載地址:https://www.pgcli.com/

mas 是一個(gè)用于從 App Store 安裝軟件的 CLI 工具。我目前為止,我僅僅使用過(guò)它一次 —— 設(shè)置我的 Macbook 電腦軟件。將來(lái),我也將使用它來(lái)設(shè)置我的下一臺(tái) Macbook。mas 可讓你自動(dòng)在 macOS 中安裝軟件。它解放了你大量的點(diǎn)擊操作。而且,鑒于你正在閱讀這篇有關(guān) CLI 工具的文章,所以我大膽地認(rèn)為,大家都和我一樣,不喜歡無(wú)聊的單擊操作。
我在 “災(zāi)難修復(fù)” 腳本中保留了從 App Store 安裝的應(yīng)用程序列表。如果我的電腦真的發(fā)生了什么意外情況,我希望能夠以最小的代價(jià)重新安裝所有內(nèi)容。
mas 下載地址:https://github.com/mas-cli/mas

這是在終端進(jìn)行磁盤(pán)分析時(shí)使用的工具,它使用起來(lái)簡(jiǎn)單快捷。當(dāng)我需要釋放一些硬盤(pán)空間時(shí),會(huì)默認(rèn)使用這款工具。
ncdu 下載地址:https://dev.yorhel.nl/ncdu
以上推薦工具清單確實(shí)很長(zhǎng),但是我希望有一些工具真的能夠帶給你方便,提高你的生產(chǎn)力。fd、ripgrep 或 httpie 等工具可能是你以前熟悉的工具的改進(jìn)版本。這些工具的改進(jìn)版本除了更易于使用之外,它們還提供更友好的輸出,執(zhí)行速度甚至更快。所以,我們要多多嘗試并接受新的事物,不要僅僅因?yàn)榇蠹叶荚谑褂门f工具而只局限在舊工具的使用上。事物都是在向前發(fā)展的,窮則變,變則通,通則久。大家一起共勉。
原文鏈接:
https://switowski.com/blog/favorite-cli-tools#mas
