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