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 に置き換える計画を進めている。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 が必要)
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.1.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 に変更
まとめ
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 の代替としての sd もあわせてチェックしてほしい。全体像は CLI ツール完全マップ で確認できる。