我最喜歡的五個命令行工具,你最喜歡哪個?
將這五個 CLI 工具添加到您的工具箱中,以改進您的軟件開發(fā)工作流程。
譯自My 5 Favorite Command Line Tools,作者 Pratik Patel。
無論你是Linux 命令行的新手,還是已經(jīng)使用它多年(甚至幾十年?),我都想向你展示我最喜歡的五個命令行界面 (CLI) 工具:SDKMAN、eza、ffmpeg、pueue 和 find。讀完這篇文章后,你會變得更加高效,并感覺自己像個 CLI 搖滾明星。
打開一個終端,讓我們來了解這些工具吧!
1. 用于管理 JDK 的 SDKMAN
SDKMAN 代表“軟件開發(fā)工具包管理器”,它是一個用于管理多個 SDK 并輕松地在它們之間切換的工具。讓我們用它來安裝和管理 Java 開發(fā)工具包 (JDK)。
要安裝它,只需按照SDKMAN 安裝頁面上的簡單說明操作即可,無論你是在 Linux、MacOS 還是 Windows 上。我將安裝免費的 Azul Zulu 構(gòu)建,它是 Azul 完全免費的 OpenJDK 構(gòu)建。
你可以通過在命令行中鍵入以下內(nèi)容來列出所有可用的 JDK:
sdk list java
這將產(chǎn)生類似于以下的輸出:
圖片
由于Java 23 剛剛發(fā)布,讓我們安裝它吧!使用 SDKMAN 很簡單,只需發(fā)出以下命令:
sdk install java 23-zulu
圖片
瞧,你現(xiàn)在已經(jīng)安裝了 Java 23。你可以使用命令java -version來檢查它是否已安裝并且是默認(rèn)構(gòu)建:
圖片
你可能想要安裝舊版本的 Java,這也很容易。例如,你想安裝 Java 17?在控制臺中輸入以下內(nèi)容:
sdk install java 17.0.12-zulu
它會詢問你是否要將其設(shè)置為默認(rèn)值——這取決于你。你可以通過發(fā)出以下命令輕松地在運行時切換版本;它將命令中指定的 JDK 設(shè)置為將在該 shell 會話中使用的 JDK:
sdk use java 17.0.12-zulu
圖片
2. 更好的 ls:eza
ls命令非常適合列出文件,但我更喜歡使用eza,因為它會對輸出進行顏色編碼,并且了解符號鏈接和Git等內(nèi)容。
例如,你可以指定一個樹深度,它將輸出到該深度的所有文件:
eza -l –TL3
圖片
通常,我想先看到頂部的目錄,然后看到目錄中的文件。你可以使用eza來做到這一點:
eza -al --group-directories-first
圖片
我經(jīng)常使用它,所以我為它創(chuàng)建了一個別名:
alias ll="eza -al --group-directories-first"
所以現(xiàn)在我只需鍵入ll,它就會格式化和排序輸出,以便我更快地找到東西。
3. A/V 瑞士軍刀:ffmpeg
ffmpeg工具是一個用于處理音頻和視頻文件的綜合命令。它可以做任何事情:調(diào)整視頻文件大小、將視頻文件的音頻輸出到 MP3、從不同的視頻格式轉(zhuǎn)換,等等。關(guān)于ffmpeg有些很棒的教程和書籍,但我想向你展示一個如何將 1080p 視頻文件調(diào)整為 480p 的示例。
ffmpeg -i ./AltantaTimeLapse.mp4 -vf scale=-1:480 -c:v libx264 -crf 0 -preset veryslow -c:a copy AltantaTimeLapse-480.mp4
scale選項告訴ffmpeg調(diào)整大小并保留縱橫比(因為我只提供了一個維度:scale=-1:480)。它還告訴 ffmpeg 復(fù)制音頻,因為我不需要更改它。
以下是我的桌面上原始視頻文件和縮小后的視頻文件,以便你看到區(qū)別:
圖片
如果你想了解更多信息,我推薦這篇深入的ffmpeg 教程。
4. 使用 Pueue 進行多步驟作業(yè)處理
pueue命令是“處理隊列”的縮寫——或者正如其網(wǎng)站所說,“Pueue 是一個命令行任務(wù)管理工具,用于順序和并行執(zhí)行長時間運行的任務(wù)。”當(dāng)你不想坐在電腦前運行一系列需要很長時間才能完成的命令時,它是一個非常有用的命令。或者,它也可以作為一種自動執(zhí)行大量命令的方式,這樣你就可以去喝杯咖啡休息一下。
我們剛剛使用ffmpeg處理了一個視頻文件,這將需要一些時間(并且根據(jù)視頻的長度或分辨率,它可能需要很長時間)。讓我們用pueue來做這些事情,這樣我們就不用一直盯著我們的任務(wù)了:
- 處理文件(調(diào)整大?。?/li>
- 使用find命令將它們移動到一個名為 Finished 的文件夾中。
使用你的系統(tǒng)包管理器安裝pueue,然后確保它的守護進程正在運行:
pueued –d
圖片
現(xiàn)在將ffmpeg命令排隊:
pueue add -- ffmpeg -i ./AtlantaTimeLapse.mp4 -vf scale=-1:480 -c:v libx264 -crf 0 -preset veryslow -c:a copy AtlantaTimeLapse-480.mp4
還要將將文件移動到名為 Finished 的文件夾中的命令排隊:
pueue add -- find . -type f -name "*480p*" -exec mv {} finished/
輸入命令 pueue 查看隊列中的內(nèi)容及其狀態(tài):
圖片
5. 不要使用 Hunt 命令;使用 Find 命令
Unix find 命令在您查找文件時是一個可以節(jié)省大量時間的強大工具。您甚至可以用它對找到的文件運行一個命令。您可以按類型、名稱、屬性等等找到文件。我們在上面使用 find 命令來移動已處理的文件:
find . -type f -name "*480p*" -exec mv {} finished/
.表示從這個目錄開始查找文件。
讓我們來看一下這些選項。
- 僅查找文件(不查找目錄):-type f
- 在文件名中查找?guī)в?480p 的文件:-name "480p"
- 對找到的文件執(zhí)行命令:-exec mv {} finished
exec 標(biāo)志表示:“對 find 命令找到的每一項執(zhí)行 mv 命令?!眥} 用于替換找到的文件或目錄。選項非常多,我推薦使用本教程來入門。
結(jié)論
我們已經(jīng)逐步介紹了我在開發(fā)軟件時日常工作中發(fā)現(xiàn)的五個寶貴的命令行工具。我希望您能夠在您的工具箱中添加一些新的工具!