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

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

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

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

cat sneakrs.txt

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

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

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

Tipコマンドライン履歴に関する環境変数
 

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

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

 ファイルが長いことに注意してください。

 ここでは、moreを使ってファイルの中を覗いてみましょう。

more .bash_history

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

Tip以前使用したコマンドの検索
 

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

history | grep sneak

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

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