爆速 CLI 入門
爆速 CLI 入門 ~最初に知りたかった Tips~ | Zenn
目次

2026 年 3 月、Zenn で**「爆速 CLI 入門」**が公開された。

怠惰はプログラマの美徳である。

CLI はそんな怠惰人間を支えてくれる最強の相棒だ。

キーボードだけで操作し、自動化を積み重ねていく。

そんな世界へ踏み込もうとすると、最初の一歩で壁にぶつかる。

本を開けば呪文のようなコマンドオプションが並び、由来もわからない。

man や help があると言われても英語がつらい。

何から手をつければいいのかわからない。

本稿は、zsh で最初に知りたかった CLI の Tips を 7 つ紹介する。

1. 自分の使っているシェルを確認しよう

現在使用しているシェルは以下の環境変数から確認できる。

環境変数 内容
$SHELL ログインシェルの設定(標準で設定しているシェル)
$0 現在動いてるシェル または 実行中スクリプト名
# 現在のシェルを確認
echo $0

# ログインシェルを確認
echo $SHELL

シェルの変更

シェルを zsh に変更したい場合は以下のコマンドで変更できる。

# 今のセッションだけ zsh にする
zsh

# デフォルトで zsh を使うようにする
chsh -s /bin/zsh

トラブルシューティング

CLI ツールのアップデート時に、普段使用しているコマンドが使えなくなったことがある。

こういった場合に、echo $0echo $SHELL を確認してみると自分のシェルの状態を確認できる。

# トラブル時の状態

# 標準で使用するシェルは zsh
$ echo $SHELL
/bin/zsh

# なのに実際に起動しているシェルは bash
$ echo $0
bash

この結果から、本来 zsh で起動するはずが、実際には bash が起動してしまっていることがわかる。

そのため、zsh の設定ファイルが読み込まれずコマンドが使えなくなっていたのだ。

2. キーバインド → bindkey を打て

ぜひ最初に把握しておいてほしい物がある。それはキーバインドだ。

どのツールを使う上でも必ずキーバインドを抑えておくのが上達のコツである。

事前に取りのぞける「めんどう」は取りのぞいておこう。

もちろん全てを覚える必要はない。よく使うものから覚えていけばよい。

キーバインドの確認

キーバインドは bindkey コマンドで確認できる。

そう、デフォルトでキーバインドのチートシートが用意されているのだ。

# キーバインド一覧の表示
bindkey

実行すると以下のような内容が表示されるはずだ。

左側にキーバインド、右側にその動作が表示されている。

^ は Control キーを表している。

bindkey

# 出力例
# "^A"-"^C" self-insert
# "^D" list-choices
# "^E"-"^F" self-insert
# "^G" list-expand
# "^H" vi-backward-delete-char
# <省略>

キーバインドの数を数える

wc (word count) コマンドを使ってキーバインドの数を数えてみよう。

-l オプションは --lines の略で、改行を数えるオプションである。

# キーバインドの数を数える
bindkey | wc -l

# 出力結果
 31

「31 個も覚えられない!」と思ったかもしれない。

安心してほしい。これは重複したキーバインドも含まれている。

重複を除くならこうする。

# 重複を除外してキーバインドの数を数える
bindkey | awk '{print $2}' | sort | uniq | wc -l

# 出力結果
 17

重複を除くと 17 個まで減った。

案外覚えられそうな数ではないだろうか?

コマンドの分解

長いコマンドがでてきたら | (パイプ) ごとに実行してみると理解しやすい。

まず、bindkey コマンドだけを実行してみる。

bindkey

# 出力結果
# "^A"-"^C" self-insert
# "^D" list-choices
# ...

そして、次に awk '{print $2}' をつなげてみる。

出力を比べてみると、1 列目のキーバインドの表記が消え、2 列目のみ表示されている。

ここで、awk '{print $2}' が「2 列目を取り出す」という意味であることがわかる。

bindkey | awk '{print $2}'

# 出力結果
# self-insert
# list-choices
# ...

次に sort をつなげてみる。

出力結果を見ると、重複したものがまとめられていることがわかる。

bindkey | awk '{print $2}' | sort

# 出力結果
# accept-line
# accept-line
# bracketed-paste
# clear-screen
# down-line-or-history
# down-line-or-history
# ...

uniq をつなげてみると、重複が取り除かれていることがわかる。

bindkey | awk '{print $2}' | sort | uniq

# 出力結果
# accept-line
# bracketed-paste
# clear-screen
# down-line-or-history
# ...

最後に wc -l をつなげてみると、先ほどの出力結果の行数が数えられていることがわかる。

bindkey | awk '{print $2}' | sort | uniq | wc -l

このように、長いコマンドはパイプごとに分解してみると案外理解できるものだ。

コマンドに慣れるには分解して試してみるのが一番である。

3. キーバインドのモード

実はシェルのキーバインドにはvim モードemacs モードがある。

現在のキーバインドモードを確認するには以下のコマンドを実行しよう。

# キーバインドモードの確認
bindkey -lL main

# 出力例

# vim モードの場合
# bindkey -A viins main

# emacs モードの場合
# bindkey -A emacs main

たいていの環境では emacs モードがデフォルトになっているため、emacs モードに変更することをオススメする。

# emacs モードに変更
bindkey -e

これは余談だが、emacs モードの方がキーバインドの数が多い。

bindkey | awk '{print $2}' | sort | uniq | wc -l

# 69

設定の永続化

この設定を今回のセッションだけではなく、永続化したい場合は zsh の設定ファイル(~/.zshrcなど)に追記しよう。

~/.zshrc

bindkey -e

また、設定ファイルを更新したら以下のコマンドで再読み込みしよう。

# 設定を読み直すために、ログインシェルとして起動しなおす
exec $SHELL -l

4. おすすめキーバインド(初級)

まずはここから。

キーバインド 機能 説明
^F forward-char 1 文字右へ移動
^B backward-char 1 文字左へ移動
^P up-line-or-history ひとつ前の履歴を呼び出す(↑)
^N down-line-or-history ひとつ次の履歴(↓)
^A beginning-of-line 行頭へ移動
^E end-of-line 行末へ移動
^D delete-char-or-list カーソル位置の文字を削除 何も無い行で押すとシェル終了
^K kill-line カーソル以降を削除
^Y yank ^K^W などで消したものを貼り付け
^T transpose-chars 隣り合う 2 文字を入れ替える(typo 直しに便利)
^H backward-delete-char バックスペース
^W backward-kill-word 1 単語削除
^U kill-whole-line 行全削除
^L clear-screen 画面クリア(clear コマンドと同じ)

5. おすすめキーバインド(中級)

意外と知られていないのに便利なやつ。

キーバインド 機能 説明
^Q push-line 今入力している行を一時退避。別のコマンドを打って戻りたい時に便利
^_ undo 編集の取り消し
^[f forward-word 単語単位で右へ移動(Meta キー)
^[b backward-word 単語単位で左へ移動(Meta キー)
^[q push-line 行退避。^Q がターミナル側で使われている環境向け
^[. insert-last-word 直前のコマンドの「最後の引数」を挿入 連打でさらに遡れる
^[H run-help 現在入力中のコマンドのヘルプを開く(zsh 固有)
^[? which-command カーソル位置の単語がどのコマンドかを表示(zsh 固有)

run-help をより便利にする設定

初期状態だと、run-helpman コマンドのエイリアスになっているだけで、zsh 固有のヘルプ機能が使えない。

# run-help の実態を確認
type run-help
# run-help is an alias for man

zsh 固有のヘルプ機能を使うには、以下の設定を追加しよう。

~/.zshrc

unalias run-help 2>/dev/null
autoload -Uz run-help

設定すると、run-help の実態が関数になっていることが確認できる。

type run-help

# run-help is a shell function from /usr/share/zsh/5.9/functions/run-help

この設定により、functions コマンドのような、man では見つからない zsh 固有のコマンドのヘルプも開けるようになる。

# man で開こうとしてもマニュアルが見つからない
man functions
# No manual entry for functions

コマンドを入力して ESC→H (run-help) を実行すると、マニュアルが見つかる。

6. 使えるコマンドを増やしたい → tlrc で要約チェック

使えるコマンドを増やしたい、でも何をどこまで抑えておくべきかわからない。

そんな時に便利なのが tldrコマンドである。

実用的な使用例に焦点を当てた、より簡潔なヘルプを確認することができる。

インストールは Homebrew で簡単にできる。

# tlrc をインストール
brew install tlrc

例えば、wc コマンドの使い方を知りたいときは以下のように実行する。

# tldr で wc の使い方を確認
tldr wc

実行するとコマンドの使い方の要約が確認できる。

7. オプションが覚えられない → help と man は最高の情報源

オプションといえば、ls -laでいう-laの部分である。

そう、あのパっとみて何かわからないやつのことである。

オプションは何の略か確認すると頭に入りやすい。

そんな時に使えるのが --helpman である。

例えば、tldr のコマンドオプションを確認したいときは以下のように実行する。

tldr --help

# Options:
# -u, --update Update the cache
# -l, --list List all pages in the current platform
# -a, --list-all List all pages

出力を見ると、-u--update の略であることがわかる。

また、manコマンドでより詳しい情報を確認することもできる。

man tldr

このように --helpman はコマンドの使い方を知る上で最高の情報源である。

しかし、英語が苦手な人にとっては読むのがつらい。

そんな人にオススメの対処方法がPLaMo 翻訳である。

ブラウザの拡張機能と CLI ツールの両方が提供されている。

PLaMo 翻訳のブラウザ拡張機能

拡張機能版はサブスク形式で提供されているが、無料で試せる Free プランも用意されている。

ページのレイアウトを崩さずに翻訳できる上に、ショートカットキーひとつで実行できる手軽さが魅力である。

結論:CLI は最強の相棒

CLI は怠惰なプログラマを支えてくれる最強の相棒だ。

  • シェル確認 - echo $0, echo $SHELL
  • キーバインド - bindkey で確認、17 個の重複を除いたキーバインド
  • モード設定 - bindkey -e で emacs モードに
  • 時短コマンド - tldr, --help, man

これらの Tips を知ることで、キーボード操作の効率が劇的に向上する。


参考:

引用元・参考リンク

免責事項 — 掲載情報は執筆時点のものです。料金・機能は変更される場合があります。最新情報は各公式サイトをご確認ください。