タイトル: ショートカットキー一覧
SEOタイトル: Linux ターミナル ショートカットキー一覧 (bash / readline / 履歴 / tmux)
| この記事の要点 |
- Ctrl+C 中断 / Ctrl+Z suspend (fg / bg で復帰) / Ctrl+D EOF (exit)
- Ctrl+R 履歴インクリメンタル検索、Ctrl+L 画面クリア (clear と同じ)
- Ctrl+A 行頭 / Ctrl+E 行末 / Ctrl+K 行末まで削除 / Ctrl+U 行頭まで削除
- !! 直前コマンド再実行、!$ 直前の最終引数、Alt+. 前回引数 (連打で遡る)
- tmux / screen のショートカットは別レイヤー (デフォルトプレフィックス Ctrl+B / Ctrl+A)
|
制御系 (プロセス制御)
| キー | 動作 | 備考 |
| Ctrl+C | SIGINT 送信 (実行中プロセスを中断) | 最頻出 |
| Ctrl+Z | SIGTSTP 送信 (suspend) | fg で復帰、bg でバックグラウンド継続 |
| Ctrl+\ | SIGQUIT (コアダンプ付き終了) | 強制終了 |
| Ctrl+D | EOF 送信 (入力終了) | シェル中なら exit と同じ |
| Ctrl+S | 画面出力停止 (XOFF) | 古い端末互換、誤打多い |
| Ctrl+Q | 画面出力再開 (XON) | Ctrl+S 解除 |
編集系 (Readline / Emacs バインド)
| キー | 動作 |
| Ctrl+A | 行頭へ移動 (Home キーと同じ) |
| Ctrl+E | 行末へ移動 (End キーと同じ) |
| Ctrl+B | 1 文字戻る (← と同じ) |
| Ctrl+F | 1 文字進む (→ と同じ) |
| Alt+B | 1 単語戻る |
| Alt+F | 1 単語進む |
| Ctrl+K | カーソルから行末まで削除 (kill) |
| Ctrl+U | カーソルから行頭まで削除 |
| Ctrl+W | カーソル前の単語を削除 (空白区切り) |
| Alt+D | カーソル後ろの単語を削除 |
| Ctrl+Y | 直前に削除した文字列を貼付 (yank) |
| Ctrl+T | 2 文字を入れ替え (transpose) |
| Alt+T | 2 単語を入れ替え |
| Alt+U | カーソル後ろの単語を大文字化 |
| Alt+L | カーソル後ろの単語を小文字化 |
| Ctrl+_ | 編集アンドゥ |
履歴系
| キー / 構文 | 動作 |
| Ctrl+R | 履歴インクリメンタル検索 (Ctrl+R 連打で次候補) |
| Ctrl+G | 検索キャンセル |
| Ctrl+P / ↑ | 履歴を 1 個戻る |
| Ctrl+N / ↓ | 履歴を 1 個進む |
| !! | 直前コマンドを再実行 |
| !N | 履歴番号 N のコマンドを実行 |
| !str | str で始まる直近コマンドを実行 |
| !?str | str を含む直近コマンドを実行 |
| !$ | 直前コマンドの最終引数 |
| !^ | 直前コマンドの最初の引数 |
| !* | 直前コマンドの全引数 |
| Alt+. | 直前コマンドの最終引数を挿入 (連打で更に前へ) |
| ^old^new | 直前コマンドの old を new に置換して実行 |
$ vim /etc/nginx/nginx.conf
$ sudo !! # → sudo vim /etc/nginx/nginx.conf
$ ls /etc/nginx/sites-available/
$ vim !$/default # → vim /etc/nginx/sites-available/default
$ cp file.txt file.bak
$ ^bak^backup # → cp file.txt file.backup
画面 / 補完系
| キー | 動作 |
| Ctrl+L | 画面クリア (clear と同じ) |
| Tab | 補完 (コマンド / ファイル名 / 引数) |
| Tab × 2 | 候補一覧表示 |
| Esc, * | ワイルドカード展開 (Esc 押してから * 押す) |
| Esc, . | Alt+. と同等 |
| Ctrl+X Ctrl+E | 現在の入力を $EDITOR で開いて編集 |
vi モード (vi バインドを有効化した場合)
bash には emacs バインド (デフォルト) と vi バインドがあります:
# 一時的に vi モード
set -o vi
# 戻す
set -o emacs
# .bashrc に書いて永続化する場合
echo "set -o vi" >> ~/.bashrc
# vi モードのキー
# 通常モードに入る: Esc
# i : 挿入モード復帰
# h : 1 文字戻る
# l : 1 文字進む
# w : 1 単語進む
# b : 1 単語戻る
# 0 : 行頭
# $ : 行末
# dd : 行全体削除
# /str : 履歴検索
tmux / screen のショートカット (別レイヤー)
tmux / screen はターミナル多重化ソフト。bash のショートカットとは別系統で、プレフィックスキー + 文字で操作します。
| tmux (プレフィックス Ctrl+B) | 動作 |
| Ctrl+B → c | 新ウィンドウ |
| Ctrl+B → n / p | 次 / 前のウィンドウ |
| Ctrl+B → % | 左右に分割 (vertical split) |
| Ctrl+B → " | 上下に分割 (horizontal split) |
| Ctrl+B → 矢印 | ペイン移動 |
| Ctrl+B → x | ペイン閉じる |
| Ctrl+B → d | セッションをデタッチ |
| Ctrl+B → [ | コピーモード (スクロール可) |
| Ctrl+B → ? | ヘルプ |
| screen (プレフィックス Ctrl+A) | 動作 |
| Ctrl+A → c | 新ウィンドウ |
| Ctrl+A → n / p | 次 / 前のウィンドウ |
| Ctrl+A → S | 水平分割 |
| Ctrl+A → | | 垂直分割 |
| Ctrl+A → d | デタッチ |
| Ctrl+A → " | ウィンドウ一覧 |
覚えると便利な組合せ技
# 長いコマンドを書いてる途中で先頭を直したい
# → Ctrl+A で行頭、Ctrl+→ で単語ジャンプ
# 1コマンドを vim で書く
# → Ctrl+X Ctrl+E で $EDITOR が開く → 編集 → 保存 → 実行
# 直前の長い引数を再利用
$ chmod 755 /very/long/path/to/script.sh
$ ls -la !$
# = ls -la /very/long/path/to/script.sh
# 履歴から特定コマンドを実行 (Ctrl+R)
(reverse-i-search)`docker': docker exec -it mycontainer bash
# 候補が出たら Enter で実行、→ で編集してから実行
キー無効化対策 (Ctrl+S 凍り対策)
# Ctrl+S で画面が止まったら Ctrl+Q で復帰
# 永続的に Ctrl+S を無効化
stty -ixon
# .bashrc に書く
echo "stty -ixon" >> ~/.bashrc
# 確認
stty -a | grep ixon
FAQ
Q: Mac の Terminal でも同じ?
A: ほぼ同じ。Alt キーは Mac だと Option キー。defaults write com.apple.terminal "Use option as meta key" -bool true で有効化されます。
Q: zsh でも使える?
A: 大半同じ (zsh も readline 系)。zsh 独自の拡張も多い (autosuggestions で過去入力候補表示等)。
Q: 一覧をすぐ呼び出したい
A: bind -P で現在のキーバインド全表示。man readline も参考に。