6.

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+CSIGINT 送信 (実行中プロセスを中断)最頻出
Ctrl+ZSIGTSTP 送信 (suspend)fg で復帰、bg でバックグラウンド継続
Ctrl+\SIGQUIT (コアダンプ付き終了)強制終了
Ctrl+DEOF 送信 (入力終了)シェル中なら exit と同じ
Ctrl+S画面出力停止 (XOFF)古い端末互換、誤打多い
Ctrl+Q画面出力再開 (XON)Ctrl+S 解除

編集系 (Readline / Emacs バインド)

キー動作
Ctrl+A行頭へ移動 (Home キーと同じ)
Ctrl+E行末へ移動 (End キーと同じ)
Ctrl+B1 文字戻る (← と同じ)
Ctrl+F1 文字進む (→ と同じ)
Alt+B1 単語戻る
Alt+F1 単語進む
Ctrl+Kカーソルから行末まで削除 (kill)
Ctrl+Uカーソルから行頭まで削除
Ctrl+Wカーソル前の単語を削除 (空白区切り)
Alt+Dカーソル後ろの単語を削除
Ctrl+Y直前に削除した文字列を貼付 (yank)
Ctrl+T2 文字を入れ替え (transpose)
Alt+T2 単語を入れ替え
Alt+Uカーソル後ろの単語を大文字化
Alt+Lカーソル後ろの単語を小文字化
Ctrl+_編集アンドゥ

履歴系

キー / 構文動作
Ctrl+R履歴インクリメンタル検索 (Ctrl+R 連打で次候補)
Ctrl+G検索キャンセル
Ctrl+P / 履歴を 1 個戻る
Ctrl+N / 履歴を 1 個進む
!!直前コマンドを再実行
!N履歴番号 N のコマンドを実行
!strstr で始まる直近コマンドを実行
!?strstr を含む直近コマンドを実行
!$直前コマンドの最終引数
!^直前コマンドの最初の引数
!*直前コマンドの全引数
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 も参考に。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ディストリビューション
  2. コマンド一覧
  3. ユーザー一覧の確認
  4. リポジトリの一覧の確認
  5. エラー一覧
  6. ショートカットキー一覧
  7. ログを確認する便利なコマンド
  8. cronの導入と実行方法 (CentOS 7編)
  9. ディレクトリ内のファイル数を確認
  10. 複数ファイル内の文字列を一括置換する方法