Featured image of post 在 Linux 使用 eza 取代 ls 檢視目錄 - 現代化檔案列表工具

在 Linux 使用 eza 取代 ls 檢視目錄 - 現代化檔案列表工具

eza 是一個用 Rust 語言寫的現代化檔案列表工具,可以完全取代傳統的 ls 指令。支援顏色、圖示、樹狀結構、Git 狀態、檔案大小、權限等豐富功能,讓檔案管理更加直觀高效。

最後更新
約 1751 字

什麼是 eza?

eza 是一個用 Rust 語言開發的現代化檔案列表工具,設計用來完全取代傳統的 ls 指令。它不僅保留了 ls 的所有基本功能,還加入了許多現代化的改進,讓檔案管理變得更加直觀和高效。

主要特色

  • 豐富的視覺效果:支援顏色、圖示、樹狀結構顯示
  • Git 整合:自動顯示 Git 狀態(新增、修改、刪除的檔案)
  • 詳細資訊:檔案大小、類型、權限、擁有者、群組、修改日期
  • 高效能:Rust 語言開發,執行速度快,記憶體使用少
  • 跨平台:支援 Linux、macOS、Windows
  • 單一執行檔:無需複雜的依賴關係

為什麼要使用 eza?

傳統的 ls 指令雖然功能完整,但在現代開發環境中顯得過於簡樸。eza 提供了:

  1. 更好的可讀性:顏色和圖示讓檔案類型一目了然
  2. Git 狀態顯示:開發者可以快速了解專案狀態
  3. 更豐富的資訊:一次顯示更多有用的檔案資訊
  4. 現代化設計:符合現代終端機使用者的需求

eza demo

安裝

方法一:使用套件管理器

Debian 和 Ubuntu

eza 可以從 deb.gierens.de 獲取。GPG 公鑰位於此倉庫中的 deb.asc 下。

首先,確保你有 gpg 指令,如果沒有,可以通過以下方式安裝:

1
2
sudo apt update
sudo apt install -y gpg

然後通過以下方式安裝 eza

1
2
3
4
5
6
sudo mkdir -p /etc/apt/keyrings
wget -qO- https://raw.githubusercontent.com/eza-community/eza/main/deb.asc | sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | sudo tee /etc/apt/sources.list.d/gierens.list
sudo chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
sudo apt update
sudo apt install -y eza

Arch Linux

1
sudo pacman -S eza

Fedora

1
sudo dnf install eza

macOS (使用 Homebrew)

1
brew install eza

方法二:使用 Cargo (Rust 套件管理器)

如果你已經安裝了 Rust 和 Cargo:

1
cargo install eza

方法三:下載預編譯二進制檔案

GitHub Releases 下載適合你系統的預編譯版本:

1
2
3
4
5
# 下載最新版本 (以 Linux x86_64 為例)
wget https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.zip
unzip eza_x86_64-unknown-linux-gnu.zip
sudo mv eza /usr/local/bin/
sudo chmod +x /usr/local/bin/eza

基本使用

取代 ls 指令

最簡單的方式是建立一個 alias 來取代 ls

1
alias ls='eza -lhM --icons --git --hyperlink --time-style long-iso'

將此 alias 加入你的 shell 配置檔案(如 ~/.bashrc~/.zshrc~/.config/fish/config.fish):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 對於 bash
echo "alias ls='eza -lhM --icons --git --hyperlink --time-style long-iso'" >> ~/.bashrc
source ~/.bashrc

# 對於 zsh
echo "alias ls='eza -lhM --icons --git --hyperlink --time-style long-iso'" >> ~/.zshrc
source ~/.zshrc

# 對於 fish
echo "alias ls='eza -lhM --icons --git --hyperlink --time-style long-iso'" >> ~/.config/fish/config.fish

常用參數說明

  • -l:長格式顯示(詳細資訊)
  • -h:人類可讀的檔案大小
  • -M:顯示修改時間
  • --icons:顯示檔案類型圖示
  • --git:顯示 Git 狀態
  • --hyperlink:支援超連結
  • --time-style long-iso:使用 ISO 格式的時間顯示

進階使用

樹狀結構顯示

1
2
3
4
5
6
7
8
# 顯示目錄樹狀結構
eza --tree

# 限制樹狀結構深度
eza --tree --level=3

# 只顯示目錄
eza --tree --only-dirs

Git 狀態顯示

1
2
3
4
5
6
7
8
# 顯示 Git 狀態
eza --git

# 顯示 Git 狀態和詳細資訊
eza -l --git

# 顯示 Git 狀態和圖示
eza --git --icons

檔案過濾和排序

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 只顯示檔案(不顯示目錄)
eza --only-files

# 只顯示目錄
eza --only-dirs

# 按檔案大小排序
eza -l --sort=size

# 按修改時間排序(最新的在前)
eza -l --sort=modified

# 按檔案名稱排序
eza -l --sort=name

顏色和圖示

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 強制顯示顏色
eza --color=always

# 禁用顏色
eza --color=never

# 顯示圖示
eza --icons

# 使用不同的圖示主題
eza --icons=unicode

檔案大小和時間格式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 人類可讀的檔案大小
eza -h

# 顯示檔案大小(位元組)
eza -s

# 自訂時間格式
eza --time-style=relative
eza --time-style=long-iso
eza --time-style=full-iso

實用範例

開發者常用配置

1
2
3
4
5
6
# 適合開發者的 alias
alias ll='eza -l --git --icons --time-style=relative'
alias la='eza -la --git --icons --time-style=relative'
alias lt='eza --tree --level=2 --git --icons'
alias lf='eza --only-files --git --icons'
alias ld='eza --only-dirs --icons'

系統管理員配置

1
2
3
4
5
# 適合系統管理員的 alias
alias ls='eza -l --git --icons --time-style=long-iso --group-directories-first'
alias ll='eza -la --git --icons --time-style=long-iso --group-directories-first'
alias lx='eza -l --git --icons --time-style=long-iso --sort=extension'
alias lz='eza -l --git --icons --time-style=long-iso --sort=size'

檔案搜尋和過濾

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 搜尋特定類型的檔案
eza --only-files | grep "\.txt$"

# 顯示隱藏檔案
eza -la

# 不顯示隱藏檔案
eza -l

# 顯示特定權限的檔案
eza -l | grep "^d"  # 只顯示目錄
eza -l | grep "^-"  # 只顯示一般檔案

與其他工具的整合

與 fzf 整合

1
2
# 使用 eza 和 fzf 進行檔案選擇
alias fzf='fzf --preview "eza -l --git --icons {}"'

與 ripgrep 整合

1
2
# 在搜尋結果中顯示檔案資訊
alias rg='rg --color=always | while read line; do echo "$line" | head -1 | xargs eza -l --git --icons; done'

效能優化

大型目錄處理

1
2
3
4
5
# 對於包含大量檔案的目錄,可以禁用某些功能來提升效能
alias ls-fast='eza -l --no-git --no-icons'

# 只顯示檔案名稱(最快)
alias ls-simple='eza --no-git --no-icons --no-time'

故障排除

常見問題

  1. 圖示不顯示

    1
    2
    3
    
    # 確保終端機支援 Unicode 和圖示字型
    echo $TERM
    # 安裝 Nerd Fonts 字型
    
  2. 顏色不顯示

    1
    2
    3
    4
    
    # 檢查終端機是否支援顏色
    echo $TERM
    # 強制啟用顏色
    eza --color=always
    
  3. Git 狀態不顯示

    1
    2
    3
    4
    
    # 確保在 Git 倉庫中
    git status
    # 檢查 Git 是否正確安裝
    git --version
    

總結

eza 是一個功能強大的現代化檔案列表工具,它不僅保留了 ls 的所有基本功能,還加入了許多實用的改進。通過適當的配置,它可以大幅提升你的命令列工作效率。

主要優勢:

  • 更好的視覺效果和可讀性
  • Git 狀態整合
  • 豐富的顯示選項
  • 高效能執行
  • 易於配置和使用

建議從基本的 alias 開始,然後根據你的需求逐步添加更多功能。無論是日常檔案管理還是開發工作,eza 都能提供更好的體驗。


使用 Hugo 建立
主題 StackJimmy 設計