効率的に作業しよう!コマンドラインで使えるキーバインドまとめ

Linuxに慣れてくると、端末ウィンドウを開いてコマンドを打つ機会が増えてきますよね。本サイトのようにコマンドを紹介しているサイトからコピー&ペーストすることもあるでしょうけど、やはり手で打ち込むことも多くなってくるでしょう。
そこで、Bashのコマンドラインで使える「キーバインド」を覚えておくと、作業効率が全然ちがってきます。主に、「Ctrlキー」や「Altキー」を押しながら別のキーを押す「キーボードショートカット」です。このページでは、端末で使える便利なキーバインドを紹介していきます。「コマンドを打つのって、なんだか面倒だな」と思っている人も、これまでキーボード・ショートカットをあまり使ってこなかったという人も、ぜひ参考にしてください。コマンドラインでキーバインドを使いこなせるようになれば、「Linuxを操っている」感じがして気分もいいですよ

キーバインドを覚える前に

Linuxに限らず、キーボードショートカットで一番多いのが「Ctrlを押しながらアルファベットのキーを押す」という操作です。この操作は、ホームポジションに指を置いた状態(「F」と「J」に人差し指を置いた状態)からあまり指を動かさずに済むので、慣れたら効率的に入力できるという利点があります。
Ctrlキーは位置が悪くて押しにくい、という人は、以下のページを参考にCapsLockキーをCtrlキーにするのがオススメです。

最初に覚えたい必須キーバインド3種

まずは効果的で、多用する「必須キーバインド」を3つ紹介します。この3つを使えるようになるだけで、コマンド操作は大幅に快適になるでしょう。

文字列を補完する「Tab」「Ctrl-I(アイ)」

キーを打つ数を減らすことができたら、それだけ作業効率が上がりますよね。端末で「Tab」もしくは「Ctrl-I(アイ)」(Ctrlを押しながらIキー)を押すと、状況に合った文字列が「補完」されます。これを使いこなすことができれば、タイプ数を劇的に少なくすることができます。詳しくは、以下の記事を参照してください。

コマンド実行履歴を見る「↑」「↓」「Ctrl-P」「Ctrl-N」

何度も同じコマンドを打つのって、苦痛ですよね。なので、Linuxの端末では「↑」キーを押すことで前のコマンドを出すことができます。何回も押せば、それだけ前に実行したコマンドが出てきますし、行き過ぎたら「↓」キーを押して戻ってくることもできます。そのままEnterを押せば、表示されたコマンドが実行されます。
なお、「↑」の代わりに「Ctrl-P」を、「↓」の代わりに「Ctrl-N」を使うこともできます。指をホームポジションに置いたまま操作できるので、慣れたら「Ctrl-P」や「Ctrl-N」のほうが効率的ですよ。

コマンド実行履歴を検索する「Ctrl-R」

コマンドの実行履歴を活用できるようになれば、矢印キー(もしくはCtrl-P,N)を何回も押して目的のコマンドを探すのが嫌になってきます。そこで使えるのが「Ctrl-R」です。Ctrlを押しながらRキーを押すと、以下のような表示になります。

(reverse-i-search)`': 

ここで、検索したい文字列を入力します。過去に実行したコマンド名でもいいですし、コマンドのパラメーターでもいいです。たとえば、「cd」と打ってみましょう。すると、「cd」を含むコマンド履歴のうち、一番最近のものが表示されます。「cd /etc」がマッチしたとすれば、以下のような表示になります。

(reverse-i-search)`cd': cd /etc

これが再実行したいコマンドなら、このままEnterを押しましょう。より前の「cd」に一致するコマンドを探すなら、再度「Ctrl-R」をタイプします。「Ctrl-R」をタイプするたび、過去のコマンドをさかのぼって表示するので、目的のものが見つかった段階でEnterを押しましょう。なかなか見つからないなら、そのまま続けてタイプすることで検索文字列を長くすることができます。目的の履歴が「cd /usr/local/bin/」だったとすると、「cd」は既にタイプしてあるので、続きの「 /u」(先頭にスペースあり)をタイプしてみましょう。あわせて「cd /u」を検索することになります。

(reverse-i-search)`cd /u': cd /usr/lib/firefox-addons/extensions/

ここで、目的の「cd /usr/local/bin/」が表示されることもありますが、上記のように違う履歴にマッチすることもあります。そうした場合、もう一度「Ctrl-R」を押して次を検索してもいいですし、つづけて「sr/l」と打って「cd /usr/l」とするなど、検索語句を伸ばしていってもいいでしょう。

なお、入力する検索語句は、先頭からでなくても大丈夫です。たとえば、「apt」と入力したら「sudo apt upgrade」もマッチしますし、「less /etc/apt/sources.list」もマッチします。

おすすめキーバインド10種

ここまで見てきた必須3種に加え、おすすめのキーバインドを10種紹介します。これらを覚えると、もうコマンドライン無しでは生きていけない体になってしまいます。

行頭、行末へ移動する「Ctrl-A」「Ctrl-E」

たとえば、行頭に戻って「sudo」をつけて、行末に戻りたいといったこと、ありますよね。そんな時、長いコマンドを入力してしまっていたら、矢印キーを叩き続けるのは大変です。なので、「Ctrl-A」で行頭に飛び、「Ctrl-E」で行末に戻りましょう。「Home」と「End」キー、「Ctrl-左矢印」「Ctrl-右矢印」でも同じ動きをしますが、ホームポジションで操作できる「Ctrl-A」「Ctrl-E」がオススメです。

カーソルを左右に移動する「Ctrl-B」「Ctrl-F」

矢印キー、キーボードによって位置が違いますし、ホームポジションから少し遠いですよね。カーソルの左右移動は「Ctrl-B」「Ctrl-F」でもできるので、こちらを覚えれば作業効率がアップします。

カーソルを1つ後退して文字を削除「Ctrl-H」

「Backspace」キーと同じ機能です。これも、ホームポジションにきわめて近い位置で入力できます。

文字削除とシェルの終了ができる「Ctrl-D」

カーソルに文字がある状態で「Ctrl-D」を押すと、「Delete」キーと同様、そこにある文字を削除します。これもホームポジションから離れず押せるのが利点ですね。
また、コマンドプロンプトに文字が無くなった状態で「Ctrl-D」を押すとシェルを終了します。つまり、普通は端末ウィンドウが閉じます。「sudo -i」や「su」コマンドでルートシェルに入るなどして、別のシェルに入っている場合は、そのシェルを抜けて前のシェルに戻ります。慣れれば「exit」を実行するより早くシェルを抜けることができます。

カーソルより前をカットする「Ctrl-U」

カーソルより前の内容を全部カットしたい時に使えるのが「Ctrl-U」です。削除のために使うことが多いですが、カット後に「Ctrl-Y」を押すと、カーソル位置にカットした文字列を貼り付けることもできます。
コマンドを打っている時にも使えますが、意外と便利なのがパスワードを打ち間違えた時です。「sudo」を実行した時など、パスワードを入力しても何も表示されないので、間違えると全部消して打ち直さないとどうしょうもないってこと、ありますよね。そんな時は、「Backspace」や「Ctrl-H」を連打するより、「Ctrl-U」を一回打って消すほうがスマートです。

カーソル以降をカットする「Ctrl-K」

カーソルより後ろの内容をカットするのが「Ctrl-K」です。「Ctrl-Y」でカットした文字列を貼り付けられるのは「Ctrl-U」と同様です。

スクリーンをクリアする「Ctrl-L」

スクリーンをクリアします。「clear」コマンドを実行した場合と同じです。

Enterの代わりに使える「Ctrl-M」および「Ctrl-J」

キーボードショートカットに慣れてくると、Enterキーすら遠く感じるようになるかもしれません。そんな人は「Ctrl-M」か「Ctrl-J」を代わりに使いましょう。

プロセスを一時停止してバックグラウンドに送る「Ctrl-Z」

コマンドを実行中に「Ctrl-Z」を押すと、そのプロセス(フォアグラウンド・プロセス)を一時停止してバックグラウンドに送り、プロンプトに戻ります。バックグラウンドにあるプロセスは「jobs」コマンドで確認できます。フォアグラウンドに戻す場合は「fg」コマンドを使います。バックグラウンドのまま処理を継続させるためには「bg」コマンドを実行します。

プロセスの停止を要求する「Ctrl-C」

コマンドを実行中に「Ctrl-C」を押すと、そのプロセス(フォアグラウンド・プロセス)を停止するよう割り込みシグナル(SIGINT)を送ります。多くのコマンドは、これで停止します(無視するコマンドもあります)。

ちょっとマニアックなキーバインド

1つ前の文字と入れ替える「Ctrl-T」

カーソル部分の文字と1つ手前の文字を入れ替えます。

単語単位で移動する「Alt-B」「Alt-F」

「Alt-B」で1単語左へ、「Alt-F」1単語右へ移動します。

カーソルより左の1単語をカットする「Ctrl-W」

カーソルより左の単語をカットします。カットした単語は「Ctrl-Y」でカーソル位置に貼り付けることができます。

2箇所をカーソルで行き来する「Ctrl-XX」

Ctrlを押しながらXを2回押すと、カーソルが行頭に移動します。そこで何か入力するなどし、再度Ctrl-XXと押すと元の位置に戻ります。その後Ctrl-XXと押すたびに、2箇所を行き来できます。

画面のスクロールができる「Shift-PageUp」「Shift-PageDown」

Shiftを押しながらPageUp、PageDownを押すことで、画面のスクロールができます。端末ウィンドウだけでなくコンソール(Xが起動していない黒い画面)でも使うことができます。

まとめ

気に入ったキーバインドはありましたか?うまく使えるようになると、コマンドを使った作業が本当に楽になりますよ。
Linuxで使えるBashのキーボードショートカット(実際はreadlineというライブラリが処理しています)は、エディタのEmacsに似たものになっています。コマンドラインでこのショートカットを多用するようになると、ブラウザの文字入力画面、エディタ、Twitteクライアントなど、どこででもこの「Emacs風キーボードショートカット」を使いたくなってしまうかもしれません。そんな時は、以下の記事を参考に、Gtk+のキーテーマを「Emacs」に設定すると良いでしょう。