コマンドライン履歴とタブ補完

同じコマンドを何度も何度も入力するのは、ちょっと考えただけでもあまり楽しい作業とはいえません。それに、Linuxではシェルプロンプトで複数のコマンドを連結して入力できますから、ちょっとした入力ミスで入力がすべて無駄になってしまいます。

そんなとき、コマンドライン履歴機能はとても便利です。上向き矢印キーや下向き矢印キーを押してスクロールすれば、それまでに使ったコマンドをかなり遡って表示することができます。

リダイレクトで作ったhaiku.txtを使って、試してみましょう。まず、シェルプロンプトから次のように入力します。

cat haiku.txt

もちろん、haiku.txtというファイルはありませんから何も表示されません。これはまったく問題がありません。次に、キーでこのコマンドを呼び戻し、キーを使って入力し忘れた「e」の挿入位置まで移動します。「e」を挿入してEnterキーをもう1度押してください。

今度はhaiku.txtの内容が正しく表示されます。

デフォルトでは、bashのコマンドライン履歴ファイルには最大500個のコマンドを保存できます。

ティップコマンドライン履歴に関する環境変数
 

シェルプロンプトからenvコマンドを実行してみてください。その中に、コマンドライン履歴のサイズを制御する環境変数があるはずです。HISTFILESIZE=500といった行があれば、それがbashが保存するコマンドの数です。

コマンド履歴は、実際にはログインディレクトリの.bash_historyというファイルに保存されています。これは、picocatlessmoreなど、いろいろな方法で見ることができます。

ファイルのサイズが大きい可能性もあることに注意してください。

moreコマンドを使って表示してみましょう。

more .bash_history

画面を進めるときはスペースキー、戻るときはbキー、終了するときはqキーを押します。

ティップ以前使用したコマンドの検索
 

矢印キーを押し続けたり、エディタで履歴ファイルを開いてスクロールを続けたりしなくても、前に使ったコマンドを履歴ファイルで検索することができます。強力な検索ユーティリティのgrepを使えばいいのです(grepコマンドを参照)。cat hai××というコマンドを探しているとしましょう。このコマンドは過去に確かに使用したことがあり、したがって履歴ファイルに残っているはずです。この場合、シェルプロンプトから次のように入力します。

history | grep hai

bashには、コマンドライン履歴のほかにもう1つの省力化機能として、コマンド補完という機能があります。ファイル、コマンド、パス名の一部を入力し、Tabキーを押すと、bashはファイルやパスの残りの部分を表示するか、またはビープ音を鳴らします。ビープ音が鳴った場合は、もう1度Tabキーを押すとそこまで入力した範囲で一致するファイルやパスの一覧が表示されます。

たとえば、headというコマンドを忘れてしまったけれど、コマンドの一部は覚えているとします。このとき、まずsu -でrootになり、シェルプロンプトからheと入力して、Tabキーを2回押します。すると、後半部を補ったコマンドとして、updatedbuptimeなどが表示されます。さらにupに「d」を追加して、再度Tabキーを押すと、求めていたコマンドが完全な形で表示されます。