interprism's blog

インタープリズム株式会社の開発者ブログです。

ターミナル(bash, cygwin)操作に便利なショートカット

この投稿は インタープリズム的「俺達私達の進捗を上げる25個前後のTips」 Advent Calendar 2015 - Qiitaの24日目 の記事です。

こんにちは、ザワタンです。
仕事でコンピューターを使っていると、どうしてもターミナルを使ってCUIで操作する場面が出てきます。 その時、慣れていないと矢印キーに頻繁に指を移動させたり、BackSpaceキーを押す回数に神経質になったりして ストレスが溜まってきます。

しかし、今回紹介する、ターミナルを操作するときに便利なショートカットを使うと、これらの煩わしさを軽減することができます。 作業の効率が全然違ってくるので、ぜひ覚えておくと良いと思います。
なお、記事の環境はLinuxbashを想定していますが、Cygwinや、Macのターミナルでも一部の例外を除いて使えます。それでは順に見ていきましょう。

基本的な移動

Ctrl + P, Ctrl + N

まずはこの2つを覚えましょう。矢印キーの「↑」と「↓」に相当し、コマンド履歴を上下できます。 「P」は"Previous"、「N」は"Next"と覚えましょう。

Ctrl + B, Ctrl + F

次に覚えるのはこの2つです。矢印キーの「←」と「→」に相当し、カーソルを左右に移動できます。 「B」は"Back"、「F」は"Forward"で覚えましょう。
ちなみに、ここでEscを一回押した後に「B」または「F」を押してみてください。 Ctrlのときは同時押しでしたが、Escの場合は押したら離してしまって大丈夫です。 このようにしたときは、カーソルが単語単位で移動します。

Ctrl + A, Ctrl + E

「Ctrl + A」は行頭、「Ctrl + E」は行末にカーソルが移動します。
「A」はアルファベットの一番最初の文字だから最初に移動する、「E」は"End"という風に覚えればいいでしょう。

削除

Ctrl + D, Ctrl + H

「Ctrl + D」はDeleteキーに相当し、カーソル位置の次の一文字を削除します。
「Ctrl + H」はBackspaceキーに相当し、カーソル位置の前の一文字を削除します。
「D」はともかく「H」の由来は分からないのですが、ホームポジションに近いところにあるので意外と多用します。

Ctrl + W

カーソル位置から、前の単語の区切りまでを削除します。「W」は"Word"で覚えましょう。

Ctrl + U, Ctrl + K

Ctrl + U はカーソルから前を全削除、Ctrl + Kはカーソルから後ろを全削除します。
「U」と「K」は覚えにくいですが、キーボード上で「U」は「K」よりも左側にあるのでカーソルから左を削除、「K」はその逆、という風に覚えると良いのではないでしょうか。

張り付け

Ctrl + Y

前述の削除系ショートカットのうち、複数の文字を消す「Ctrl + W」「Ctrl + U」「Ctrl + K」で消した場合、実は「削除」ではなく「切り取り」という扱いになっています。 その切り取ったものを張り付けることができるのがこのショートカットです。
「Y」は"Yank"、と覚えればいいでしょう。Unix系のOSでは「張り付け」のことを「ヤンク」と言ったりします。
別の活用の仕方として、間違ってショートカットで複数の文字を消してしまった!というとき。落ち着いて「Ctrl + Y」とすれば、消えたものを元に戻すことができます。

履歴

Ctrl + R

これまでに入力したコマンドを検索して、再び同じものを入力することができる超便利なショートカットです。 例えば、以前に「grep neko * 」というコマンドを入力していたとして、「Ctrl + R」とした後に「g」と打つと、 候補として「grep neko *」が出てきます。そのままで良ければリターンキーを押せば良いし、 他の何らかのキーを押すことでコマンドを手直しすることもできます。

違う候補を探したいときは続けて「Ctrl + R」を押していくと遡って候補を探してくれます。 ただし、行き過ぎてしまうと戻れないのは少し不便ではありますが…。 そういった場合は「ESC」か「Ctrl + C」を押して、もう一度やり直してみましょう。

リターン

Ctrl + M, Ctrl + J

リターンキーに相当します。リターンキーに指を伸ばすのすら面倒!というときに重宝します。どちらも機能は同じなので、押そうと思った時点の指の位置で使い分ければ良いと思います。

Ctrl + O

このショートカットもリターンキーの機能なのですが、さらに+α的な働きをします。
どういうことかというと、前述の「Ctrl + R」で履歴上のコマンドを再入力するときに「Ctrl + O」で決定すると 自動的に次の履歴のコマンドを入力してくれます。

例えば、履歴に以下のようにあった場合を考えてみます。
(説明のため、コマンドとして意味のない文字列になっています。実際は何らかのコマンドだと思ってください。)

1 hoge
2 foo
3 bar

ここで、「Ctrl + R」、「h」と押すと、以下のように再入力の候補が表示されます。

(reverse-i-search)`h': hoge

この状態で「Ctrl + M」または「Ctrl + J」とした場合は単に"hoge"が実行されるだけですが、「Ctrl + O」とした場合は"hoge"が実行された後、さらに次の履歴の"foo"がコマンドプロンプトに入力された状態になります。

$hoge
-- コマンドhogeの実行結果 --
$foo                   ←「Ctrl + O」だと、ここまで入力される

ルーチンワーク的なコマンド入力作業をしているときに意外と便利に使えるので、覚えておくと良いです。 (※しかし、Macではどうやら使えないようです…)

その他

Ctrl + T

カーソル位置の文字と直前の文字を入れ替えてカーソルを一つ進める、というトリッキーな動きをするショートカットです。例えば、
abcde
のようなときに、「Ctrl + T」を押すと
acbde
となります。正直、このショートカットが活躍するシチュエーションは、あまり無いと思います。

おかしい!ショートカットを使っていたら、突然キー入力を受け付けなくなったんだけど!

何かのはずみで「Ctrl + S」を押してしまったのかもしれません。このショートカットはターミナルの出力を一時的に停止するので、キー入力が受け付けられなくなったように見えます。こうなってしまったら「Ctrl + Q」を押すと元に戻るので、まずは落ち着いて試してみましょう。

まとめ

ターミナルを操作するときに知っておくと便利なショートカットを一通り紹介してみました。 使い込んで行くうちにだんだんと手になじんできて、コマンド入力が楽しくなってくるのではないでしょうか!

PAGE TOP