【図解】Linuxの覚えるべきショートカット集

Linux をコマンドで操作するときは、キーボードのショートカットキーを覚えておくと、作業効率が上がります。この記事では、Ctrl キーを使う、よく使うショートカットキーをまとめます。

カーソルの移動や文字の削除は、bash がコマンドラインの編集に使っている readline の機能です。標準では、Emacs に似たキーの割り当てになっています。また、処理の停止(Ctrl + C)と中断(Ctrl + Z)は、端末(ターミナル)の機能で、実行中のプロセスに対して働きます。

この記事でわかること
  1. Ctrl + A、Ctrl + E、Ctrl + F、Ctrl + B で、カーソルを行の先頭、最後、右、左へ動かせること
  2. Ctrl + D、Ctrl + H、Ctrl + U、Ctrl + K、Ctrl + W で文字を削除でき、U・K・W で削除した文字は Ctrl + Y で貼り付けられること
  3. Ctrl + C は処理の停止、Ctrl + Z は処理の中断(一時停止)で、中断した処理は jobs と fg で再開できること

カーソルの移動

コマンドを入力している行の中で、カーソルを動かすキーです。長いコマンドの途中を直したいときに、矢印キーを何度も押さずに移動できます。

$abcdefghijklmnCtrl + A行の先頭へCtrl + E行の最後へCtrl + B1文字左へCtrl + F1文字右へ▲ はカーソルの位置
図1 カーソルの移動に使う4つのキー(▲ がカーソルの位置)

Ctrl + A (カーソルを行の先頭へ移動)

カーソルが行の先頭に移動します。Aは、アルファベットの最初の文字なので、行の最初と覚えます。

$abcdefghijklmnCtrl + A$abcdefghijklmnカーソルが行の先頭に移動
図2 Ctrl + A:カーソルが行の先頭に移動する

Ctrl + E (カーソルを行の最後へ移動)

カーソルが行の最後に移動します。Eは、End(最後)と覚えます。

$abcdefghijklmnCtrl + E$abcdefghijklmnカーソルが行の最後に移動
図3 Ctrl + E:カーソルが行の最後に移動する

Ctrl + F (カーソルを右側へ移動)

カーソルが右側に1文字移動します。Fは、Forward(前へ)と覚えます。右矢印キーと同じ動きです。

$abcdefghijklmnCtrl + F$abcdefghijklmnカーソルが右に移動
図4 Ctrl + F:カーソルが右に移動する

Ctrl + B (カーソルを左側へ移動)

カーソルが左側に1文字移動します。Bは、Backward(後ろへ)と覚えます。左矢印キーと同じ動きです。

$abcdefghijklmnCtrl + B$abcdefghijklmnカーソルが左に移動
図5 Ctrl + B:カーソルが左に移動する

文字の削除

カーソルの位置を基準に、文字を削除するキーです。削除したあとの扱いが、キーによって2種類に分かれます。Ctrl + U、Ctrl + K、Ctrl + W は、削除した文字を記憶(キルリング)に残すので、あとから Ctrl + Y で貼り付けられます。Ctrl + D と Ctrl + H は、記憶に残さない削除です。

$abcdefghijklmnCtrl + H左の1文字Ctrl + Dカーソルの文字Ctrl + Uカーソルの左から行頭までCtrl + Kカーソルから行末まで紺の塗り(U・K)は、削除した文字を Ctrl + Y で貼り付けられる。白抜き(H・D)は貼り付けられない
図6 文字の削除に使うキーと、削除される範囲(▲ がカーソルの位置)

Ctrl + D (カーソルされた文字を削除)

カーソルされていた文字を削除します。Dは、Delete(削除)と覚えます。

$abcdefghijklmnCtrl + D$bcdefghijklmn元々カーソルがあった文字 a が削除される
図7 Ctrl + D:カーソルの文字が削除される
注意:空の行での Ctrl + D

何も入力していない行(プロンプトだけの状態)で Ctrl + D を押すと、シェルが終了します。ssh でログインしている場合は、ログアウトして接続が切れます。

Ctrl + H (カーソルの左側にある文字を削除)

カーソルの左にある文字を削除します。Backspace キーと同じ動きです。こじつけですが、Hidari(左側)と覚えます。

$abcdefghijklmnCtrl + H$abcdfghijklmn元々カーソルの左にあった文字 e が削除される
図8 Ctrl + H:カーソルの左の文字が削除される

Ctrl + U (カーソルの左から行頭まで削除)

カーソルの左部分から行頭までの文字が削除されます。カーソルの位置の文字は残ります。イギリス(UK)で、Uは左側と覚えます。

$abcdefghijklmnCtrl + U$fghijklmnカーソルの左から行頭までの文字(abcde)が削除される
図9 Ctrl + U:カーソルの左から行頭までが削除される

Ctrl + K (カーソル文字含め、右から行末まで削除)

カーソルの右側を、カーソルされた文字を含めて、行末まで削除します。イギリス(UK)で、Kは右側と覚えます。

$abcdefghijklmnCtrl + K$abcdeカーソルの文字を含めて、行末までが削除される
図10 Ctrl + K:カーソルの文字から行末までが削除される

Ctrl + W (直前の1単語を削除)

カーソルの左から、前のスペースまでを削除します。これにより、直前の1単語を削除できます。WはWord(単語)と覚えます。

$abcdefghijklmnCtrl + W$abcghijklmnカーソルの左から前のスペースまで(def と空白)が削除される直前の1単語を削除できる
図11 Ctrl + W:カーソルの左の1単語が削除される
補足:Ctrl + W の単語の区切り

Ctrl + W は、スペースで区切られた部分を1単語として扱います。そのため、/usr/local/bin のようなパスは、全体が1単語として削除されます。/ などの記号で区切って、1つずつ削除したいときは、Alt + Backspace を使います。

Ctrl + Y (直前に削除した文字を貼り付け)

直前に削除した文字を、カーソルの位置に貼り付けます。Yは、Yank(引っ張り出す)と覚えます。Ctrl + U、Ctrl + K、Ctrl + W で削除した文字が対象なので、消しすぎたときに戻せます。

$abcdefghijklmnCtrl + W$abcghijklmnCtrl + Y$abcdefghijklmn直前に削除した文字(def と空白)が貼り付けられる
図12 Ctrl + W で削除した単語を、Ctrl + Y で貼り付ける
補足:Ctrl + Y で貼り付けられないとき

Ctrl + D と Ctrl + H で削除した文字は、貼り付けられません。また、Ctrl + Y は「元に戻す」操作ではありません。入力や削除を取り消したいときは、Ctrl + X に続けて Ctrl + U を押します。

Ctrl + L (ターミナルのクリア)

(ごちゃごちゃした)ターミナルの表示をクリアします。LはcLear(クリア)と覚えます。

$ ls -al(ファイルの一覧)$ pwd(現在のディレクトリ)$ Ctrl + L$ 画面がクリアされ、プロンプトが一番上に移る
図13 Ctrl + L:画面がクリアされる

処理の停止・中断

実行中のコマンドを止めるキーです。これらは、bash のコマンドラインの編集ではなく、端末が受け取って、実行中のプロセスに伝えます。

画面イメージについて

この記事の画面は、実際の画面ではなく、実行時の画面から見るポイントを抜き出して描いたイメージです。長い出力は途中を省略しています。

Ctrl + C (処理を停止)

処理を停止(キャンセル)します。次の画面のとおり、ping を実行すると、処理がずっと継続します。このような場合に、Ctrl + C で処理を停止させます。

ターミナル画面イメージ
$ ping 8.8.8.8PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.64 bytes from 8.8.8.8: icmp_seq=1 ttl=105 time=2.42 ms64 bytes from 8.8.8.8: icmp_seq=2 ttl=105 time=2.52 ms…64 bytes from 8.8.8.8: icmp_seq=8 ttl=105 time=2.49 ms1^C--- 8.8.8.8 ping statistics ---28 packets transmitted, 8 received, 0% packet loss, time 7012msrtt min/avg/max/mdev = 2.428/2.477/2.528/0.032 ms
図14 Ctrl + C で ping を停止する(実際の画面ではなく、表示内容のポイントを示したイメージです。途中の行は省略しています)
No.表示意味
1^CCtrl + C を押した位置。ping が停止して、シェルのプロンプトに戻る
28 packets transmitted, 8 received停止するまでに、送信したパケットの数と、受信した数。ping は、停止したときに統計を表示する

Ctrl + Z (処理を中断)

処理を中断(一時停止)します。Ctrl + C と違い、中断した処理を再開できます。次の画面のとおり、ping を実行し、処理を中断させます。

ターミナル画面イメージ
$ ping 8.8.8.8PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.64 bytes from 8.8.8.8: icmp_seq=1 ttl=105 time=2.39 ms64 bytes from 8.8.8.8: icmp_seq=2 ttl=105 time=2.44 ms…64 bytes from 8.8.8.8: icmp_seq=8 ttl=105 time=2.50 ms1^Z2[1]+  停止                 ping 8.8.8.8
図15 Ctrl + Z で ping を中断する(実際の画面ではなく、表示内容のポイントを示したイメージです。途中の行は省略しています)
No.表示意味
1^ZCtrl + Z を押した位置
2[1]+ 停止 ping 8.8.8.8ping 8.8.8.8 が、ジョブ番号 1 として停止(中断)した。処理は終了せずに、シェルに残っている

jobs コマンドを実行すると、今、一時停止しているジョブと、その番号が表示されます。

ターミナル画面イメージ
1$ jobs2[1]+  停止                 ping 8.8.8.8
図16 jobs コマンドで、停止しているジョブを確認する(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1jobsシェルが管理しているジョブの一覧を表示するコマンド
2[1]+ 停止 ping 8.8.8.8ジョブ番号 1 として、ping 8.8.8.8 が停止していることを確認できる。+ は、現在のジョブを表す

番号 1 として、ping 8.8.8.8 のジョブが停止していることを確認します。このジョブを再開するには、fg コマンドを実行します。fg は、フォアグラウンド(foreground)の略です。ジョブ番号は、fg 1 のように指定します。%1 の形でも指定できます。

ターミナル画面イメージ
1$ fg 1ping 8.8.8.864 bytes from 8.8.8.8: icmp_seq=9 ttl=105 time=2.43 ms264 bytes from 8.8.8.8: icmp_seq=10 ttl=105 time=2.46 ms64 bytes from 8.8.8.8: icmp_seq=11 ttl=105 time=2.47 ms64 bytes from 8.8.8.8: icmp_seq=12 ttl=105 time=2.45 ms
図17 fg 1 でジョブを再開する(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1fg 1ジョブ番号 1 を、フォアグラウンドで再開する
2icmp_seq=10 など中断前の続き(icmp_seq=9 から)で、ping 8.8.8.8 が再開された
補足:バックグラウンドでの再開

中断したジョブは、fg のほかに、bg コマンドで、バックグラウンドで再開することもできます。バックグラウンドで動かしたジョブは、jobs で確認できます。

まとめ

カーソルの移動と文字の削除は、bash の編集機能(readline)のキーです。処理の停止と中断は、端末が実行中のプロセスに伝えるキーです。まず、よく使う Ctrl + A、Ctrl + E、Ctrl + C、Ctrl + L から覚えると、すぐに作業が楽になります。

キー動作覚え方
Ctrl + Aカーソルを行の先頭へ移動アルファベットの最初
Ctrl + Eカーソルを行の最後へ移動End
Ctrl + Fカーソルを1文字右へ移動Forward
Ctrl + Bカーソルを1文字左へ移動Backward
Ctrl + Dカーソルの文字を削除(空の行ではシェルが終了)Delete
Ctrl + Hカーソルの左の文字を削除(Backspace と同じ)Hidari(左側)
Ctrl + Uカーソルの左から行頭までを削除(貼り付け可)UK のU(左側)
Ctrl + Kカーソルの文字から行末までを削除(貼り付け可)UK のK(右側)
Ctrl + W直前の1単語を削除(貼り付け可)Word
Ctrl + Y直前に削除した文字を貼り付けYank
Ctrl + Lターミナルの表示をクリアcLear
Ctrl + C実行中の処理を停止―
Ctrl + Z実行中の処理を中断(fg で再開)―

コメント