exa:一個(gè) ls 命令的現(xiàn)代替代品
我敢打賭你使用過 Linux 上的 ls 命令,它是你 學(xué)習(xí) Linux 時(shí)首次接觸到的命令之一。
這個(gè)簡單的 ls
命令列出目錄的內(nèi)容十分方便,但是直到我發(fā)現(xiàn) exa
之前從來沒想過會有命令能替代它。
exa 命令簡介
exa 是一個(gè)命令行工具,可以列出指定路徑(如未指定則是當(dāng)前目錄)的目錄和文件。這也許聽起來很熟悉,因?yàn)檫@就是 ls
命令所做的事情。
exa
被視作從 UNIX 舊時(shí)代延續(xù)至今的古老的 ls
命令的一個(gè)現(xiàn)代替代品。如其所聲稱的那樣,它有比 ls
命令更多的功能、更好的默認(rèn)行為。
exa 功能
以下是一些你應(yīng)該使用 exa
替代 ls
的原因:
exa
像ls
一樣可移植(在所有主流 Linux 發(fā)行版、*BSD 和 macOS 上可用)- 默認(rèn)彩色輸出
exa
不同格式化的“詳細(xì)”輸出也許會吸引 Linux/BSD 新手- 文件查詢是并行進(jìn)行的,這使得
exa
與ls
的性能相當(dāng) - 顯示單個(gè)文件的 git 暫存或未暫存狀態(tài)
exa
的另外一個(gè)不同的地方是它是用 Rust 編寫的。順便說一句,Rust 與 C 語言的執(zhí)行速度相近,但在編譯時(shí)減少了內(nèi)存錯(cuò)誤,使你的軟件可以快速而安全地執(zhí)行。
在 Linux 系統(tǒng)上安裝 exa
exa
最近很流行,因?yàn)樵S多發(fā)行版開始將其包括在其官方軟件庫中。也就是說,你應(yīng)該可以使用你的 [發(fā)行版的包管理器] 來安裝它。
從 Ubuntu 20.10 開始,你可以使用 apt
命令來安裝它:
sudo apt install exa
Arch Linux 已經(jīng)有了它,你只需要 使用 pacman 命令 即可:
sudo pacman -S exa
如果它無法通過你的包管理器安裝,請不要擔(dān)心。畢竟它是一個(gè) Rust 包,你可以很容易地用 Cargo 安裝它。請確保在你使用的任何發(fā)行版 或 Ubuntu 上安裝了 Rust 和 Cargo。
安裝 Rust 和 Cargo 后,使用此命令安裝 exa
:
cargo install exa
使用 exa
exa
有很多命令選項(xiàng),主要是為了更好的格式化輸出和一些提高舒適度的改進(jìn),比如文件的 git 暫存或未暫存狀態(tài)等等。
下面是一些屏幕截圖,展示了 exa
是如何在你的系統(tǒng)上工作的。
簡單地使用 exa
命令將產(chǎn)生類似于 ls
但帶有顏色的輸出。這種彩色的東西可能沒有那么吸引人,因?yàn)橄?Ubuntu 這樣的發(fā)行版至少在桌面版本中已經(jīng)提供了彩色的 ls
輸出。不過,ls
命令本身默認(rèn)沒有彩色輸出。
exa
exa 命令的輸出截圖,沒有任何額外的標(biāo)志
請注意,exa
和 ls
命令的選項(xiàng)不盡相同。例如,雖然 -l
選項(xiàng)在 exa
和 ls
中都給出了長列表,但 -h
選項(xiàng)添加了一個(gè)列標(biāo)題,而不是 ls
的人類可讀選項(xiàng)。
exa -lh
正如我之前提到的,exa 有列標(biāo)題以獲得更好的“詳細(xì)”輸出
我前面說過,exa
已經(jīng)內(nèi)置了 Git 集成。下面的屏幕截圖給出了 –git
標(biāo)志的演示。請注意 test_file
在 git
的 tracked
列中顯示 -N
,因?yàn)樗形刺砑拥酱鎯熘小?/p>
exa --git -lh
演示 git 標(biāo)志如何與 exa 一起工作
下面的例子不是我的貓鍵入的。它是各種選項(xiàng)的組合。exa
有可供你嘗試和探索的很多選項(xiàng)。
exa -abghHliS
一個(gè)非常豐富多彩和詳細(xì)的輸出,具有用戶友好的詳細(xì)輸出
你可以通過在終端中運(yùn)行以下命令來獲取完整的選項(xiàng)列表:
exa --help
但是,如果你想了解 exa
所提供的功能,可以查看其 Git 存儲庫 上的 官方文檔。
值得從 ls 切換到 exa 嗎?
對于類 UNIX 操作系統(tǒng)的新手來說,exa
可能是用戶友好的,它犧牲了在腳本中容易使用的能力,以換取“易用性”和外觀。其中,顯示得更清楚并不是一件壞事。
無論如何,ls
就像通用命令。你可以將 exa
用于個(gè)人用途,但在編寫腳本時(shí),請堅(jiān)持使用 ls
。當(dāng)預(yù)期輸出與任一命令中的實(shí)際輸出不匹配時(shí),ls
和 exa
之間一個(gè) [或多個(gè)] 標(biāo)志的差異可能會讓你發(fā)瘋。
我想知道你對 exa
的看法。你已經(jīng)嘗試過了嗎?你對它的體驗(yàn)如何?