eza(ls代替)・bat(cat代替)・fd(find代替)・zoxide(cd代替)は、Rust製のモダンCLIツール。カラー出力・Git連携・.gitignoreの自動尊重がデフォルトで有効で、従来コマンドより高速かつ直感的に使える。
ls の無彩色な出力。find の長いオプション。cat の素朴すぎる表示。UNIX の古典コマンドは堅牢だが、2026年の対話的な作業には少し物足りない。
ここ数年、Rust で書き直された代替ツールが急速に普及している。カラー出力、Git 連携、.gitignore の自動尊重——こうした「あって当然」の機能が最初から組み込まれているのが特徴だ。
この記事では、特に実用性の高い eza ・bat ・fd ・zoxide の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 に置き換える計画を進めている。Ubuntu 25.10でテスト中で、26.04 LTSでの本格導入が予定されている。Rust 製 CLI ツールは「便利な代替品」から「標準」へと移行しつつある。
eza:lsの進化系
eza は ls のモダンな代替ツールだ。元々は exa というプロジェクトだったが、メンテナンスが停止したためコミュニティフォークとして eza が誕生した。
インストール
winget install eza-community.eza
基本的な使い方
# 詳細一覧(-l: 詳細表示、-a: 隠しファイル含む)
eza -la
# Gitステータス付き詳細表示
eza -la --git
# ツリー表示(2階層まで)
eza --tree --level=2
# アイコン表示(Nerd Font が必要 — https://www.nerdfonts.com/)
eza --icons
# 更新日時順にソート
eza -la --sort=modified
# ディレクトリを先頭に表示
eza --group-directories-first
ls vs eza 比較
| 機能 | ls | eza |
|---|---|---|
| カラー出力 | --color=auto で有効 | デフォルトで有効 |
| Git ステータス | 非対応 | --git で表示 |
| ツリー表示 | tree コマンドが別途必要 | --tree で内蔵 |
| アイコン | 非対応 | --icons で表示 |
| ヘッダー行 | なし | --header で列名表示 |
| ハイパーリンク | 非対応 | --hyperlink でターミナルリンク |
bat:catの進化系
bat は cat にシンタックスハイライト・行番号・Git 差分表示を加えたツールだ。200以上の言語に対応している。
インストール
winget install sharkdp.bat
基本的な使い方
# シンタックスハイライト付きで表示
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 比較
| 機能 | cat | bat |
|---|---|---|
| シンタックスハイライト | なし | 200以上の言語に対応 |
| 行番号 | cat -n | デフォルトで表示 |
| Git 差分 | 非対応 | -d で変更行表示 |
| ページャー | なし(less に別途パイプ) | 内蔵(長いファイルは自動ページング) |
| 不可視文字 | cat -A | bat -A(色付きで見やすい) |
| テーマ | なし | 20以上のテーマを同梱 |
fzf との連携
bat は fzf のプレビューウィンドウと組み合わせると非常に強力だ。
# ファイル選択時にシンタックスハイライト付きプレビュー
fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'
fd:findの進化系
fd は find のシンプルな代替ツールだ。bat と同じ sharkdp 氏が開発している。.gitignore を自動で尊重し、正規表現がデフォルトで使える。
インストール
winget install sharkdp.fd
基本的な使い方
# 正規表現でファイル検索(デフォルトで再帰)
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 比較
| 機能 | find | fd |
|---|---|---|
| 構文 | find . -name "*.js" | fd -e js |
| 正規表現 | -regex オプションが必要 | デフォルトで正規表現 |
.gitignore 尊重 | 非対応 | デフォルトで有効 |
| 隠しファイル | デフォルトで含む | デフォルトで除外(-H で含む) |
| カラー出力 | なし | デフォルトで有効 |
| 速度 | シングルスレッド | マルチスレッドで高速 |
| コマンド実行 | -exec | -x(個別)/ -X(一括) |
fd は ripgrep と設計思想が近い。どちらも .gitignore を自動尊重し、スマートケース(小文字のみなら大文字小文字を無視、大文字が含まれれば区別)を採用している。
zoxide:cdの進化系
zoxide は cd の「学習する」代替ツールだ。あなたが訪れたディレクトリを記憶し、部分的な名前だけで瞬時にジャンプできる。
インストール
winget install ajeetdsouza.zoxide
シェル統合(必須)
zoxide はインストールしただけでは動かない。使っているシェルに統合する設定が必要だ。
bash の場合(~/.bashrc に追加):
eval "$(zoxide init bash)"
zsh の場合(~/.zshrc に追加):
eval "$(zoxide init zsh)"
fish の場合(~/.config/fish/config.fish に追加):
zoxide init fish | source
これで z コマンドと zi コマンドが使えるようになる。
基本的な使い方
# 過去に訪れたディレクトリに部分一致でジャンプ
z proj
# → ~/projects に移動(過去に cd したことがあれば)
# 複数キーワードで絞り込み
z proj content
# → ~/projects/pj-002-content に移動
# インタラクティブ選択(fzf が必要)
zi
# 前のディレクトリに戻る
z -
# 学習済みディレクトリの一覧表示
zoxide query --list
cd vs zoxide 比較
| 機能 | cd | zoxide |
|---|---|---|
| フルパス指定 | 必須 | 部分一致でジャンプ |
| 学習機能 | なし | 頻度と最終アクセスで重み付け |
| インタラクティブ選択 | なし | zi で fzf 連携 |
| 前のディレクトリ | cd - | z - |
| タブ補完 | ファイルシステムから | 学習済みデータから |
その他の注目ツール
eza・bat・fd・zoxide 以外にも、Rust 製の優れた CLI ツールは数多く存在する。
sd:sed 代替
sd は sed の直感的な代替ツールだ。正規表現のエスケープが最小限で済む。
# ファイル内の文字列を置換
sd 'oldtext' 'newtext' file.txt
# 正規表現で置換
sd 'v(\d+)' 'version-$1' changelog.md
# 標準入力から(パイプ利用)
echo 'hello world' | sd 'world' 'Rust'
v1.0.0 で行単位処理がデフォルトになった(breaking change)。以前のバージョンからアップグレードする場合は注意が必要だ。
dust:du 代替
dust はディスク使用量をビジュアルに表示するツールだ。
# カレントディレクトリのディスク使用量を視覚化
dust
# 上位10件だけ表示
dust -n 10
# 特定ディレクトリを指定
dust /var/log
bottom:top 代替
bottom はモダンなシステムモニターだ。CPU・メモリ・ディスク・ネットワークをリアルタイムで可視化する。
# 起動(btm コマンド)
btm
v0.12.3 でマルチバイト UTF-8 文字列のクラッシュが修正された。日本語環境でも安定して動作する。
delta:git diff 代替
delta は Git の diff 出力をシンタックスハイライト付きで表示するツールだ。
# Git の設定に追加(~/.gitconfig)
git config --global core.pager delta
git config --global interactive.diffFilter 'delta --color-only'
設定後は git diff、git log -p、git show の出力が自動的に delta を経由する。
インストール方法(共通)
4つのツールはすべて brew / cargo / winget でインストールできる。
# Homebrew
brew install sd dust bottom git-delta
# cargo
cargo install sd du-dust bottom git-delta
一括インストールとエイリアス設定
ここまで紹介したツールをまとめてセットアップしよう。
Homebrew(macOS / Linux)
brew install eza bat fd zoxide fzf ripgrep sd dust bottom git-delta
cargo(Rust ツールチェーン)
cargo install eza bat fd-find zoxide sd du-dust bottom git-delta
推奨エイリアス設定
以下を ~/.bashrc または ~/.zshrc に追加する。
# ---------- モダンツールエイリアス ----------
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 に変更
FAQ
Rust製ツールで既存のシェルスクリプトは壊れない?
エイリアスはインタラクティブシェルにしか影響しない。~/.bashrc でエイリアスを設定しても、シェルスクリプト内の ls や find は元のコマンドのまま動く。万一の場合は \ls のようにバックスラッシュを付ければエイリアスをバイパスできる。
cargoとHomebrewどちらでインストールすべき?
macOSならHomebrewが楽。バージョン管理と依存関係を一括で処理してくれる。Linuxでディストリのパッケージが古い場合は cargo install で最新版を入れるのがベスト。cargoを使うには事前にRustツールチェーンのインストールが必要だ。
Nerd Fontって何?入れないとダメ?
Nerd Fonts はファイルタイプのアイコンを含むプログラミング向けフォント群だ。eza の --icons フラグを使うときに必要。なくても基本機能には一切影響しない。代表的なフォントは FiraCode Nerd Font や JetBrainsMono Nerd Font。
batのテーマを永続的に変更するには?
環境変数 BAT_THEME を設定する。~/.bashrc に export BAT_THEME="Catppuccin Mocha" を追加すれば、毎回 --theme を指定する必要がない。利用可能なテーマは bat --list-themes で確認できる。
fdはfindの完全な代替になる?
対話的な操作ではほぼ代替できる。ただし -mtime(更新日時条件)や -perm(パーミッション条件)など、findの一部オプションはfdにはない。シェルスクリプト内ではPOSIX準拠のfindを使い、対話操作でfdを使うのがベストな使い分けだ。
zoxideの学習データはどこに保存される?
~/.local/share/zoxide/db.zo に保存される。データベースが不正確になったら zoxide remove <パス> で個別に削除するか、ファイルごと削除してゼロから学習し直せる。
WSL環境でもこれらのツールは使える?
すべて問題なく動作する。WSLはLinux環境なので、Linuxのインストール手順がそのまま使える。Windows TerminalやWSL2と組み合わせれば、カラー出力やアイコン表示もフル対応する。
まとめ
Rust 製 CLI ツールの導入ポイントを振り返ろう。
- eza:
lsにカラー・Git・ツリー・アイコンを追加。ll='eza -la --git'が便利 - bat:
catにシンタックスハイライト・行番号・Git diff を追加。fzf のプレビューにも最適 - fd:
findをシンプルな構文で再設計。.gitignoreを自動尊重し、マルチスレッドで高速 - zoxide:
cdに学習機能を追加。部分一致でディレクトリにジャンプ
Ubuntu では batcat・fdfind というコマンド名になる点だけ注意が必要だ。エイリアスを設定すれば他の環境と同じように使える。
まずは1つだけ試してみるのがおすすめだ。eza か bat から始めると「こんなに違うのか」と実感しやすい。気に入ったら残りも追加していこう。関連ツールの詳細は grep・ripgrep完全ガイド、fzf完全ガイド、エイリアス設定ガイド、sed・awk実践ガイド、CLIツール完全マップ を参照してほしい。