32blogby Studio Mitsu

開発者のためのCLIツール完全マップ

ファイル操作からテキスト検索、ダウンロード、シェルカスタマイズまで。開発者が知っておくべきCLIツールを古典とモダンの対比で整理した。

by omitsu14 min read
目次

開発者が覚えるべきCLIツールは、ファイル操作(ls/eza)、テキスト検索(grep/ripgrep)、ダウンロード(wget/curl)、シェル設定(alias/fzf)、開発ワークフロー(tmux/git)の5カテゴリに分かれる。この記事では古典ツールとRust製モダン代替を対比しながら、全カテゴリを一覧で整理した。

ターミナルを開いたとき、使えるコマンドが lscd だけという時期は誰にでもある。でも CLI の世界には、知っているだけで作業効率が劇的に変わるツールが大量にある。

ファイル操作・ナビゲーション

ターミナル作業の基本。ファイルの一覧表示、移動、コピー、削除はここから始まる。

古典: ls / cd / cp / mv / rm

GNU coreutils(最新 9.10、2026年2月)に含まれる基本コマンド群。どの Linux ディストリビューションにも最初から入っている。

bash
ls -alh          # 詳細一覧(サイズを人間が読める形式で)
cd ~/projects    # ディレクトリ移動
cp -r src/ dst/  # ディレクトリごとコピー
mv old.txt new.txt  # リネーム / 移動
rm -rf build/    # ディレクトリ削除(慎重に)

モダン代替: eza + zoxide

eza(v0.23.4)は ls の Rust 製代替。カラー表示、Git ステータス統合、ツリー表示が標準装備。

bash
eza -la --git          # Git ステータス付き一覧
eza --tree --level=2   # ツリー表示(2階層まで)

zoxide(v0.9.9)は cd の代替。過去に移動したディレクトリを覚えていて、パスの一部を入力するだけでジャンプできる。

bash
z proj     # ~/projects に飛ぶ(過去に cd したことがあれば)
zi         # インタラクティブに選択
powershell
# WSL 内で Linux と同じ手順
# または PowerShell で直接:
winget install eza-community.eza
winget install ajeetdsouza.zoxide

テキスト検索・加工

ログの検索、設定ファイルの書き換え、JSON の加工。テキスト処理はエンジニアの日常だ。

古典: grep / sed / awk

bash
grep -rn "TODO" src/           # ディレクトリ再帰検索(行番号付き)
sed -i 's/old/new/g' file.txt  # ファイル内の文字列を一括置換
awk '{print $1, $3}' data.tsv  # 1列目と3列目を抽出

grep は最も使用頻度が高いコマンドの一つだが、大規模コードベースでは速度が気になることがある。

→ 詳細: grep完全ガイド:基本からripgrepまで / sed・awk実践ガイド

モダン代替: ripgrep + fd + bat + jq

ripgrep(v15.1.0)は grep の Rust 製代替。.gitignore を自動で尊重し、大規模リポジトリでも高速。

bash
rg "TODO" --type js          # JSファイルのみ検索
rg "function \w+" -c         # マッチ数をカウント

fd(v10.4.2)は find の代替。シンプルな構文で、デフォルトで .gitignore を尊重する。

bash
fd "\.mdx$" content/         # .mdx ファイルを検索
fd -e json -x jq '.version' # JSON ファイルを見つけて jq で処理

bat(v0.26.1)は cat の代替。シンタックスハイライト、行番号、Git diff 統合。

bash
bat src/index.ts             # ハイライト付きで表示
bat -d file.txt              # Git diff のみ表示

jq(v1.8.1)は JSON のスイスアーミーナイフ。API レスポンスの加工に必須。

bash
curl -s https://api.github.com/repos/jqlang/jq | jq '.stargazers_count'
cat package.json | jq '.dependencies | keys'

→ 詳細: jqコマンド完全ガイド / Rust製CLIツール完全ガイド

powershell
# WSL 内なら Linux と同じ手順
# PowerShell なら:
winget install BurntSushi.ripgrep.MSVC
winget install sharkdp.fd
winget install sharkdp.bat
winget install jqlang.jq

ダウンロード・通信

ファイルの取得、API の呼び出し、リモートサーバーとの通信。

wget — バッチダウンロードの定番

再帰ダウンロード、中断再開、サイトミラーリングに強い。サーバー上でファイルを取得するときの第一選択。

bash
wget -c https://example.com/large.iso    # 中断再開
wget -i urls.txt -P ~/downloads/         # URLリストから一括DL
wget --mirror --convert-links https://example.com/  # サイトミラー

最新バージョン: wget 1.25.0 / wget2 2.2.1。wget2 には CVE-2025-69194(CVSS 8.8、パス・トラバーサル)の修正が含まれるため、使っている場合はアップデートすること。

→ 詳細: wgetコマンド完全ガイド

curl — API 操作の万能ツール

wget がダウンロード特化なら、curl は HTTP 通信全般の万能ツール。API の呼び出し、レスポンスヘッダーの確認、ファイルアップロードまでこなす。

bash
curl -s https://api.example.com/data | jq '.'   # API を叩いて JSON 整形
curl -I https://example.com                       # ヘッダーのみ取得
curl -X POST -d '{"key":"value"}' -H "Content-Type: application/json" https://api.example.com

最新バージョン: curl 8.19.0(2026年3月)。curl --version で確認しよう。

→ 詳細: curlコマンド完全ガイド


シェルカスタマイズ

alias — コマンドのショートカット

毎回打つ長いコマンドを短縮する。シェルの効率化はここから始まる。

bash
alias gs='git status'
alias dc='docker compose'
alias ll='ls -alh --color=auto'

→ 詳細: aliasコマンド完全ガイド

シェル選び: bash vs zsh vs fish

シェル特徴
bashどこにでもある。スクリプト互換性が最も高い
zshbash 互換 + 補完が強力。macOS のデフォルト
fish設定不要で補完・ハイライトが効く。bash 非互換

zsh を使うなら oh-my-zsh の git プラグインだけで 150 以上のエイリアスが追加される。

fzf — あいまい検索で何でも見つける

fzf(v0.70.0)はインタラクティブなあいまい検索ツール。ファイル選択、コマンド履歴検索、Git ブランチ切り替えなど何にでも使える。

bash
# ファイルをあいまい検索して vim で開く
vim $(fzf)

# コマンド履歴を検索(Ctrl+R の強化版)
# fzf インストール後、Ctrl+R で自動的に使われる

→ 詳細: fzf完全ガイド

powershell
# WSL 内なら Linux と同じ
winget install junegunn.fzf

開発ワークフロー

tmux — ターミナルの多重化

tmux(v3.6a)は1つのターミナル内で複数のペイン・ウィンドウを管理するツール。SSH 接続中にセッションを維持できるため、サーバー作業に必須。

bash
tmux new -s work           # "work" という名前でセッション開始
# Ctrl+b % — 画面を左右に分割
# Ctrl+b " — 画面を上下に分割
# Ctrl+b d — セッションからデタッチ
tmux attach -t work        # セッションに再接続

→ 詳細: tmux完全ガイド

powershell
# WSL 内で Linux と同じ手順
# ネイティブ Windows には非対応

ssh / rsync — リモートサーバー操作

bash
ssh user@server             # リモート接続
ssh -L 8080:localhost:3000 user@server  # ポートフォワーディング
rsync -avz ./dist/ user@server:/var/www/  # 差分のみ転送

→ 詳細: ssh・rsync実践ガイド

Git — バージョン管理

Git 自体は説明不要だが、CLI での操作を高速化するツールがある。

bash
# lazygit — ターミナル内の Git TUI
# delta — git diff をシンタックスハイライト付きで表示
git diff | delta

モダン代替ツール(Rust 世代)

従来の GNU ツールを Rust で書き直したプロジェクトが急増している。Ubuntu 25.10 では GNU coreutils を Rust 実装(uutils)に置き換え、26.04 LTS への採用も視野に入っている。

古典モダン代替言語主な改善点
lsezaRustカラー・Git 統合・ツリー
catbatRustハイライト・行番号・ページャ
grepripgrepRust速度・.gitignore 対応
findfdRustシンプル構文・高速
cdzoxideRust学習型ジャンプ
sedsdRust正規表現がシンプル
dudustRustビジュアルなディスク使用量
topbottomRustモダンなシステムモニター

全部入れる必要はない。まず ripgrep + fd + bat の 3 つを試してみると、古典ツールとの違いを体感できる。各ツールのインストール手順はこの記事の各セクションに OS 別で記載している。

→ 詳細: Rust製CLIツール完全ガイド


よくある質問

CLIツールを覚える順番は?

まず grepfindcurlssh の4つ。これだけで日常の開発作業の大半をカバーできる。その後で ripgrep や fd などのモダン代替を試すと、速度差を体感して自然に移行できる。

Rust製ツールは古典ツールを完全に置き換える?

完全ではない。シェルスクリプトの互換性やCI環境では GNU ツールが前提になっていることが多い。ローカル開発では Rust 製ツールを使い、スクリプトでは古典ツールを使うのが現実的な使い分けだ。Ubuntu が uutils を採用し始めたことで、将来的にはデフォルトが変わる可能性はある。

macOS と Linux でCLIツールの違いはある?

macOS には BSD 版のコマンド(ls、sed、awk 等)がプリインストールされており、GNU 版とオプションが異なる場合がある。brew install coreutils で GNU 版を入れれば動作を統一できる。Rust 製ツールはクロスプラットフォームなので、OS を問わず同じ動作になる。

WSL と Linux ネイティブで違いはある?

CLIツール自体は同じものが動く。ただし WSL のファイルシステムパフォーマンスは Linux ネイティブより遅い(特に /mnt/c 経由の Windows ファイルへのアクセス)。WSL 内の /home 以下で作業すればほぼ同等の速度になる。

fzf と ripgrep はどう組み合わせる?

rg の検索結果を fzf に渡してインタラクティブに絞り込むのが定番。例: rg --line-number "TODO" | fzf で TODO を探して選択できる。fzf の公式 Wiki に実用的な組み合わせ例が多数ある。

jq 以外に JSON を扱うツールはある?

fx はインタラクティブな JSON ビューア、gojq は jq の Go 実装で一部機能が拡張されている。ただし jq が事実上の標準であり、ほとんどの場面では jq だけで十分だ。

cargo install と apt install、どちらで入れるべき?

apt はシステムパッケージマネージャで管理が楽だが、バージョンが古いことが多い(例: Ubuntu 24.04 の eza は 0.18.x)。最新版が必要なら cargo install を使う。Rust のツールチェーンが必要だが、一度入れればどのツールも cargo install <名前> で最新版になる。

まとめ

カテゴリまず覚える次に試す
ファイル操作ls, cd, cp, mveza, zoxide
テキスト検索grep, findripgrep, fd, bat
JSON 加工jq
ダウンロードwget, curl
シェル設定alias, .bashrcfzf, oh-my-zsh
開発git, sshtmux, lazygit

CLI は一度覚えれば OS が変わっても使える。GUIアプリは消えてもコマンドは残る。

この記事をブックマークしておいて、新しいツールを試すたびに戻ってきてほしい。

関連記事: