32blogby StudioMitsu

Rust製CLIツール完全ガイド:eza・bat・fd・zoxide

ls・cat・find・cdのRust製モダン代替を徹底解説。インストールからエイリアス設定・組み合わせまで実践的に紹介。

14 min read
RustCLILinuxezabatfdzoxide
目次

ls の無彩色な出力。find の長いオプション。cat の素朴すぎる表示。UNIX の古典コマンドは堅牢だが、2026年の対話的な作業には少し物足りない。

ここ数年、Rust で書き直された代替ツールが急速に普及している。カラー出力、Git 連携、.gitignore の自動尊重——こうした「あって当然」の機能が最初から組み込まれているのが特徴だ。

この記事では、特に実用性の高い ezabatfdzoxide の4つを中心に、インストールから実践的な使い方、エイリアス設定までを解説する。

なぜRust製CLIツールか

Rust が CLI ツールの言語として選ばれる理由は明確だ。

  • メモリ安全性: ガベージコレクションなしで安全なメモリ管理を実現する。長時間動作するプロセスでもメモリリークの心配がない
  • ゼロコスト抽象化: 高レベルな抽象化を使っても、C/C++ と同等のパフォーマンスが出る
  • シングルバイナリ配布: 依存ライブラリを静的リンクして1つのバイナリにまとめられる。Python や Node.js のようなランタイムが不要
  • クロスプラットフォーム: Linux / macOS / Windows で同じコードベースからビルドできる

Rust 製ツールに共通する特徴もある。

  • .gitignore を自動で尊重する(fd、ripgrep など)
  • カラー出力がデフォルトで有効
  • Unicode を正しく処理する
  • エラーメッセージがわかりやすい

2026年現在、Ubuntu が GNU coreutils を Rust 実装の uutils に置き換える計画を進めている。Rust 製 CLI ツールは「便利な代替品」から「標準」へと移行しつつある。

eza:lsの進化系

ezals のモダンな代替ツールだ。元々は exa というプロジェクトだったが、メンテナンスが停止したためコミュニティフォークとして eza が誕生した。

インストール

powershell
winget install eza-community.eza

基本的な使い方

bash
# 詳細一覧(-l: 詳細表示、-a: 隠しファイル含む)
eza -la

# Gitステータス付き詳細表示
eza -la --git

# ツリー表示(2階層まで)
eza --tree --level=2

# アイコン表示(Nerd Font が必要)
eza --icons

# 更新日時順にソート
eza -la --sort=modified

# ディレクトリを先頭に表示
eza --group-directories-first

ls vs eza 比較

機能lseza
カラー出力--color=auto で有効デフォルトで有効
Git ステータス非対応--git で表示
ツリー表示tree コマンドが別途必要--tree で内蔵
アイコン非対応--icons で表示
ヘッダー行なし--header で列名表示
ハイパーリンク非対応--hyperlink でターミナルリンク

bat:catの進化系

batcat にシンタックスハイライト・行番号・Git 差分表示を加えたツールだ。200以上の言語に対応している。

インストール

powershell
winget install sharkdp.bat

基本的な使い方

bash
# シンタックスハイライト付きで表示
bat file.py

# 行番号のみ表示(ヘッダー・グリッドなし)
bat -n file.py

# Git の変更行のみ表示
bat -d file.py

# 言語を明示的に指定
bat -l json data.txt

# テーマを変更して表示
bat --theme=TwoDark file.rs

# 利用可能なテーマ一覧
bat --list-themes

# 不可視文字を可視化(タブ、改行、スペース)
bat -A file.txt

cat vs bat 比較

機能catbat
シンタックスハイライトなし200以上の言語に対応
行番号cat -nデフォルトで表示
Git 差分非対応-d で変更行表示
ページャーなし(less に別途パイプ)内蔵(長いファイルは自動ページング)
不可視文字cat -Abat -A(色付きで見やすい)
テーマなし20以上のテーマを同梱

fzf との連携

bat は fzf のプレビューウィンドウと組み合わせると非常に強力だ。

bash
# ファイル選択時にシンタックスハイライト付きプレビュー
fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'

fd:findの進化系

fdfind のシンプルな代替ツールだ。bat と同じ sharkdp 氏が開発している。.gitignore を自動で尊重し、正規表現がデフォルトで使える。

インストール

powershell
winget install sharkdp.fd

基本的な使い方

bash
# 正規表現でファイル検索(デフォルトで再帰)
fd "\.mdx$"

# 拡張子で絞り込み
fd -e js

# ディレクトリのみ検索
fd -t d

# 大文字小文字を区別して検索
fd -t f -s "README"

# 隠しファイルも検索対象に含める
fd -H "\.env"

# 見つけたファイルにコマンドを実行(各ファイルに対して個別実行)
fd -e json -x jq '.version'

# 見つけたファイルを一括削除(全ファイルをまとめて渡す)
fd -e tmp -X rm

find vs fd 比較

機能findfd
構文find . -name "*.js"fd -e js
正規表現-regex オプションが必要デフォルトで正規表現
.gitignore 尊重非対応デフォルトで有効
隠しファイルデフォルトで含むデフォルトで除外(-H で含む)
カラー出力なしデフォルトで有効
速度シングルスレッドマルチスレッドで高速
コマンド実行-exec-x(個別)/ -X(一括)

fd は ripgrep と設計思想が近い。どちらも .gitignore を自動尊重し、スマートケース(小文字のみなら大文字小文字を無視、大文字が含まれれば区別)を採用している。

zoxide:cdの進化系

zoxidecd の「学習する」代替ツールだ。あなたが訪れたディレクトリを記憶し、部分的な名前だけで瞬時にジャンプできる。

インストール

powershell
winget install ajeetdsouza.zoxide

シェル統合(必須)

zoxide はインストールしただけでは動かない。使っているシェルに統合する設定が必要だ。

bash の場合(~/.bashrc に追加):

bash
eval "$(zoxide init bash)"

zsh の場合(~/.zshrc に追加):

bash
eval "$(zoxide init zsh)"

fish の場合(~/.config/fish/config.fish に追加):

fish
zoxide init fish | source

これで z コマンドと zi コマンドが使えるようになる。

基本的な使い方

bash
# 過去に訪れたディレクトリに部分一致でジャンプ
z proj
# → ~/projects に移動(過去に cd したことがあれば)

# 複数キーワードで絞り込み
z proj content
# → ~/projects/pj-002-content に移動

# インタラクティブ選択(fzf が必要)
zi

# 前のディレクトリに戻る
z -

# 学習済みディレクトリの一覧表示
zoxide query --list

cd vs zoxide 比較

機能cdzoxide
フルパス指定必須部分一致でジャンプ
学習機能なし頻度と最終アクセスで重み付け
インタラクティブ選択なしzi で fzf 連携
前のディレクトリcd -z -
タブ補完ファイルシステムから学習済みデータから

その他の注目ツール

eza・bat・fd・zoxide 以外にも、Rust 製の優れた CLI ツールは数多く存在する。

sd:sed 代替

sdsed の直感的な代替ツールだ。正規表現のエスケープが最小限で済む。

bash
# ファイル内の文字列を置換
sd 'oldtext' 'newtext' file.txt

# 正規表現で置換
sd 'v(\d+)' 'version-$1' changelog.md

# 標準入力から(パイプ利用)
echo 'hello world' | sd 'world' 'Rust'

v1.1.0 で行単位処理がデフォルトになった(breaking change)。以前のバージョンからアップグレードする場合は注意が必要だ。

dust:du 代替

dust はディスク使用量をビジュアルに表示するツールだ。

bash
# カレントディレクトリのディスク使用量を視覚化
dust

# 上位10件だけ表示
dust -n 10

# 特定ディレクトリを指定
dust /var/log

bottom:top 代替

bottom はモダンなシステムモニターだ。CPU・メモリ・ディスク・ネットワークをリアルタイムで可視化する。

bash
# 起動(btm コマンド)
btm

v0.12.3 でマルチバイト UTF-8 文字列のクラッシュが修正された。日本語環境でも安定して動作する。

delta:git diff 代替

delta は Git の diff 出力をシンタックスハイライト付きで表示するツールだ。

bash
# Git の設定に追加(~/.gitconfig)
git config --global core.pager delta
git config --global interactive.diffFilter 'delta --color-only'

設定後は git diffgit log -pgit show の出力が自動的に delta を経由する。

インストール方法(共通)

4つのツールはすべて brew / cargo / winget でインストールできる。

bash
# Homebrew
brew install sd dust bottom git-delta

# cargo
cargo install sd du-dust bottom git-delta

一括インストールとエイリアス設定

ここまで紹介したツールをまとめてセットアップしよう。

Homebrew(macOS / Linux)

bash
brew install eza bat fd zoxide fzf ripgrep sd dust bottom git-delta

cargo(Rust ツールチェーン)

bash
cargo install eza bat fd-find zoxide sd du-dust bottom git-delta

推奨エイリアス設定

以下を ~/.bashrc または ~/.zshrc に追加する。

bash
# ---------- モダンツールエイリアス ----------
alias ls='eza'
alias ll='eza -la --git'
alias lt='eza --tree --level=2'
alias cat='bat --paging=never'
alias find='fd'

# ---------- Ubuntu の場合はこちら ----------
# alias bat='batcat'
# alias fd='fdfind'

# ---------- zoxide 統合 ----------
eval "$(zoxide init bash)"  # zsh の場合は bash を zsh に変更

まとめ

Rust 製 CLI ツールの導入ポイントを振り返ろう。

  • eza: ls にカラー・Git・ツリー・アイコンを追加。ll='eza -la --git' が便利
  • bat: cat にシンタックスハイライト・行番号・Git diff を追加。fzf のプレビューにも最適
  • fd: find をシンプルな構文で再設計。.gitignore を自動尊重し、マルチスレッドで高速
  • zoxide: cd に学習機能を追加。部分一致でディレクトリにジャンプ

Ubuntu では batcatfdfind というコマンド名になる点だけ注意が必要だ。エイリアスを設定すれば他の環境と同じように使える。

まずは1つだけ試してみるのがおすすめだ。個人的には ezabat から始めると「こんなに違うのか」と実感しやすい。気に入ったら残りも追加していこう。

関連記事として、grep の代替 ripgrepfzf との連携テクニックsed の代替としての sd もあわせてチェックしてほしい。全体像は CLI ツール完全マップ で確認できる。