シェルの履歴操作

bashなど現在多く使われているシェルには履歴機能があります。履歴機能を利用すれば、前回実行したコマンドを再度実行したり、以前に実行したコマンドを再表示させて編集して実行することが可能です。シェルの履歴機能の使い方をご紹介します。

一覧から履歴シェルコマンドを実行

シェルコマンドの履歴を一覧表示してから、番号を指定して履歴のコマンドを実行することができます。この方法は、Ctrlキーやカーソルキーを必要としないので、特殊な環境下でそれらのキーが利用できない場合は、重宝するかもしれません。

まず履歴を一覧表示するにはhistoryコマンドを使います。使い方は非常に簡単で、historyと入力してEnterで実行するだけです。すると、履歴が番号がつけられて一覧表示されます。

次に番号を指定して、履歴からコマンドを実行する方法です。履歴から番号を指定して、コマンドを実行するには、!履歴番号というフォーマットでコマンドを実行します。!の後にhistoryコマンドで確認した履歴番号を入力してEnterで実行すると、番号を指定したコマンドが再度実行されます。

ただ、わざわざhistoryで履歴を一覧表示しなくても、前回実行したコマンドを再度実行したいだけの場合は、!!と入力して実行してください。最も最近に実行したコマンドが再度実行されます。

一部を入力して履歴からコマンドを実行する

historyでコマンドの履歴を一覧表示して履歴番後を入力する方法は、過去の20以内のコマンドなら容易に探すことができますが、大量の履歴から検索する場合は非常に骨の折れる作業です。bashでは、最大500のコマンドを履歴に保存することができるので、手作業で探すのは現実的ではありません。

そこで、コマンドの最初だけを入力して、履歴からコマンドを補完する方法を利用します。まずCtrl + r と入力すると、(reverse-i-search)`’:と表示されるので、検索したいコマンドを最初から入力していきましょう。すると、履歴から入力しているコマンドを補完してくれますので、目当てのコマンドが表示されれば、コマンドを実行しましょう。

カーソルキーで履歴

履歴の操作で最も手軽なので、カーソルキーを利用した方法です。操作方法は非常に簡単です。カーソルキーの上でひとつ古い履歴を表示して、さらに上を入力すると、さらにもう一つ古い履歴を表示します。カーソルキーの下を入力すれば、上のときは逆で、一つ新しい履歴が表示されます。

このカーソルキーと同じ動作はカーソルキーを使わなくても実現することが可能です。カーソルキーの上動作はCtrl + pで、下はCtrl + nで同じ動作を実現することが可能です。この操作方法は、Emacsのカーソル移動と同じなので、Emacsを使っている人にとっては、親しみやすい操作方法かもしれません。