「Windowsのコピペみたいなショートカットキーが Linux にもあるはずだけど、覚えきれない」
コマンド入力を1日に何百回も繰り返す現場では、ショートカットキーの一つひとつが作業時間に直結します。
この記事では、Linuxのターミナル(Bash/Readline)で覚えておくと作業効率がはっきり変わるショートカットキーを、頻度の高い順にまとめます。
tab 補完、行頭・行末ジャンプ、履歴呼び出しから、cron作業中に「あれどうやって止めるんだっけ」となる暴走コマンドの停止まで網羅します。この記事のポイント
・Tab はコマンド・ファイル名の自動補完、Ctrl+c は実行中コマンドの停止
・Ctrl+a で行頭、Ctrl+e で行末にジャンプ(Homeキー/Endキー相当)
・Ctrl+r で過去のコマンド履歴をインクリメンタル検索できる
・Ctrl+l で画面クリア、Ctrl+d でログアウト
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Linuxショートカットキーの基本は「Readlineキーバインド」
Linuxのターミナルで効くショートカットキーは、Bashが内部で使っている GNU Readline というライブラリが提供しています。そのため、bash/zsh/sh のどのシェルを使っていても、同じキー操作がほぼ共通で効きます。
mysql や psql の対話プロンプトでも同じキーが効くので、覚えておくと応用が利きます。キーバインドのモードは2種類あります。
・emacsモード(デフォルト):
Ctrlキー中心の操作・viモード:
set -o vi で切り替え、viコマンドと同じキー操作になる本記事ではデフォルトの emacs モードで使えるショートカットキーを紹介します。
最頻出ショートカット:補完・停止・履歴
Tab:コマンド・ファイル名の自動補完
入力途中でTab を押すと、コマンド名やファイル名・ディレクトリ名の続きを自動で補ってくれます。$ cd /var/log/mes<Tab> ↓ $ cd /var/log/messages # 候補が複数ある場合は1回目で警告音、2回目のTabで一覧表示 $ cd /etc/<Tab><Tab> acpi/ dnf/ login.defs rc3.d/ alternatives/ environment logrotate.d/ rc4.d/ ...
Ctrl+c:実行中コマンドの強制停止
tail -f や ping、間違って打った find / など、止まらないコマンドを終わらせるのが Ctrl+c です。内部的には実行中プロセスに SIGINT(割り込みシグナル) を送ります。多くのコマンドはSIGINTを受け取ると、後始末をしてから終了します。
$ tail -f /var/log/messages ... ログがリアルタイム表示される ... ^C ← Ctrl+c を押すと停止 $
Ctrl+z:実行中コマンドの一時停止(バックグラウンド送り)
Ctrl+z は実行中のコマンドを一時停止します。停止したジョブは fg で前面復帰、bg でバックグラウンド実行に回せます。$ vi /etc/nginx/nginx.conf ... 編集途中 ... ^Z ← Ctrl+z で一時停止 [1]+ Stopped vi /etc/nginx/nginx.conf $ ls -la /var/log/nginx/ ← 確認したいコマンドを実行 ... $ fg ← vi に戻る
:wq せずに作業を行き来できます。Ctrl+p / Ctrl+n:コマンド履歴の前後移動
過去に打ったコマンドを呼び戻すショートカットです。・
Ctrl+p(previous):1つ前のコマンド/↑ キーと同じ・
Ctrl+n(next):1つ後のコマンド/↓ キーと同じ矢印キーでも同じことができますが、ホームポジションから手を動かしたくない時に
Ctrl+p が便利です。Ctrl+r:履歴をインクリメンタル検索する(最強の時短キー)
過去に打ったコマンドを、キーワードで検索しながら呼び戻せます。覚えると一気に効率が上がるショートカットです。$ <Ctrl+r> (reverse-i-search)`': ← 検索プロンプトが出る (reverse-i-search)`grep': grep -E 'error|fail' /var/log/messages ↑「grep」と打つと、最新のgrepコマンドがヒット # Enter で実行 / Ctrl+r でさらに過去のヒットへ移動 / Esc で確定(編集できる)
~/.bash_history から候補を引いています。直近のオプション付き長文コマンドを呼び戻す時に絶大な威力を発揮します。カーソル移動と行編集のショートカット
Ctrl+a:行頭にジャンプ(Homeキー相当)
長いコマンドを打っていて、先頭のsudo を付け忘れた時に必須のキーです。$ vim /etc/nginx/nginx.conf ↑ 末尾までカーソルが来ている # Ctrl+a で先頭に戻る $ |vim /etc/nginx/nginx.conf ↑ # sudo を追加 $ sudo vim /etc/nginx/nginx.conf
Ctrl+e:行末にジャンプ(Endキー相当)
Ctrl+a の対で、行末に一気に戻れます。Ctrl+w:直前の単語を削除
タイポした単語をまとめて消したい時に便利です。$ ls /var/log/messagess ↑ タイポ。Ctrl+w で「messagess」をまとめて削除 $ ls /var/log/ ↑ ここまで戻る $ ls /var/log/messages ↑ 打ち直し
Ctrl+u:カーソルから行頭まで削除(パスワード打ち直し)
パスワードプロンプトで打ち間違えた時に、まとめて消すのに使います。BACKSPACE 連打よりはるかに速いです。Ctrl+k:カーソルから行末まで削除
Ctrl+a で行頭に戻ったあと Ctrl+k を押すと、行全体を消せます。Ctrl+u でも同じ効果が得られるので、好きなほうを覚えておけばOKです。Ctrl+y:直前に削除した文字列を貼り付け(ヤンク)
Ctrl+w や Ctrl+k で消した文字列は、内部バッファに保持されています。Ctrl+y で取り戻せます。画面操作・セッション系のショートカット
Ctrl+l:画面クリア(clearコマンド相当)
ターミナルの表示をクリアして、プロンプトを最上段に戻します。clear コマンドより速く、左手だけで打てます。Ctrl+d:ログアウト(EOF送信)
入力に何もない状態でCtrl+d を押すと、シェルを終了します。exit コマンドと同じ動きです。SSHログイン中なら
Ctrl+d で接続が切れます。逆に「Ctrl+d を間違って押してログアウトしたくない」時は、.bashrc に set -o ignoreeof を入れておくと、Ctrl+d でログアウトされなくなります。Ctrl+s / Ctrl+q:画面出力を一時停止/再開
これは知らないとトラブルになるキーです。・
Ctrl+s:画面出力を一時停止する(ターミナルがフリーズしたように見える)・
Ctrl+q:停止を解除するうっかり
Ctrl+s を押してしまい「ターミナルが固まった」と思ったら Ctrl+q を試してください。最近のシェル設定では
stty -ixon でこの機能自体を切ってある環境が多いですが、リモートのレガシーサーバーに入った時に遭遇することがあります。シェル別のショートカットキー対応表
emacsモードでのキーバインドは、bash/zsh/dashの間でほぼ共通です。| キー | 意味 | bash | zsh |
|---|---|---|---|
Tab |
補完 | ○ | ○(より高機能) |
Ctrl+r |
履歴検索 | ○ | ○ |
Ctrl+a / Ctrl+e |
行頭/行末 | ○ | ○ |
Ctrl+w |
単語削除 | ○ | ○ |
Ctrl+l |
画面クリア | ○ | ○ |
Alt+. / Esc . |
前回コマンドの最後の引数を貼り付け | ○ | ○ |
Alt+.(前回コマンドの最後の引数)も覚えておくと地味に便利です。$ ls -la /var/log/nginx/access.log ... ファイル一覧 ... $ tail -n 100 <Alt+.> ↓ $ tail -n 100 /var/log/nginx/access.log ↑ 前回の最後の引数が貼り付けられる
よく使う実務シーン別ショートカット
長いパスをコピペで貼り付けた後の修正
チャットやドキュメントから長いパスを貼り付けて、末尾だけ変更したい時は次の流れが速いです。・
Ctrl+e で行末へ・
Backspace で末尾を消す・新しい文字列を打つ
sudo を付け忘れた
!! を覚えておくと一発で復活できます。$ systemctl restart nginx Failed to start nginx.service: Access denied $ sudo !! ↓ 展開される $ sudo systemctl restart nginx
!! は「直前のコマンドを丸ごと展開する」ヒストリ展開で、ショートカットキーとは少し違いますが、対で覚えておくと便利です。cron作業中に止めたい時
cronで動いているプロセスを目の前で止めるのはCtrl+c ではなく、別ターミナルからのシグナル送信になります。# 別ターミナルから PID を特定 $ ps auxf | grep myscript # SIGTERM で正常終了を試みる $ kill 12345 # それでも止まらない場合 $ kill -9 12345 ← SIGKILL(最終手段)
Ctrl+c はあくまで「自分のターミナルで実行中」のコマンドにしか効きません。バックグラウンドのプロセスや別セッションのプロセスには届かないので、kill コマンドと使い分けてください。本記事のまとめ
| キー | 意味 |
|---|---|
Tab |
コマンド・ファイル名の自動補完 |
Ctrl+c |
実行中コマンドの停止(SIGINT送信) |
Ctrl+z |
実行中コマンドを一時停止(fg/bgで再開) |
Ctrl+p / Ctrl+n |
履歴を前後に移動(↑/↓相当) |
Ctrl+r |
履歴をキーワードでインクリメンタル検索 |
Ctrl+a / Ctrl+e |
行頭/行末にジャンプ(Home/End相当) |
Ctrl+w |
直前の単語を削除 |
Ctrl+u / Ctrl+k |
カーソルから行頭まで/行末まで削除 |
Ctrl+y |
直前に削除した文字列を貼り付け(ヤンク) |
Ctrl+l |
画面クリア |
Ctrl+d |
ログアウト(EOF送信) |
Alt+. / Esc . |
前回コマンドの最後の引数を貼り付け |
!! |
直前のコマンドを再展開(sudo付け忘れ救済) |
全部を一気に覚える必要はありません。まずは
Tab・Ctrl+c・Ctrl+r・Ctrl+a / Ctrl+e の4つを体に染み込ませると、コマンド入力の速度が体感で変わります。慣れてきたら
Alt+. や !! も日常で使ってみてください。■関連知識
GNU Readline のキーバインドは
~/.inputrc でカスタマイズできます。bind -P で現在の割り当て一覧を確認できます。3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Linuxのライブラリとは|ldd・ldconfig・LD_LIBRARY_PATHの使い方【RHEL9対応】
- 前のページへ:デーモンとは|Linuxサービスを支える常駐プロセスとsystemd時代の管理術
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます