同じコマンドを何度も何度も入力するのは、ちょっと考えてもあまり楽しい作業とは言えません。
それは Linux ユーザも同じです。Linux では、シェルプロンプトで複数のコマンドを連結して入力できますから、複数行にわたるコマンドを入力したときに、1 箇所でも入力ミスがあれば、それまでの入力したことがすべて無駄になる可能性があります。
ここで 1 つの解決策があります。それは、コマンドライン履歴というものです。[↑] および [↓] キーでスクロールすることにより、それまでに入力したたくさんのコマンドが表示されます (入力ミスも含めて)。
もう一度 sneakers.txt を使って、これを試してみましょう。しかし、最初はまずシェルプロンプトで以下のように入力してみます。
cat sneakrs.txt
もちろん、sneakrs.txt ファイルなどありませんから何も起こりません (e が抜けています)。大丈夫。[↑] キーでこのコマンドを呼び戻し、入力し忘れた「e」の箇所まで [←] を使って移動します。「e」を挿入して [Enter] をもう一度押してください。
どうです!今度は sneakers.txt の内容が表示されます。
デフォルトでは、bash のコマンドライン履歴ファイルには最大 500 個のコマンドを保管できます。
環境変数を表示する: シェルプロンプトで env コマンドを入力すると、コマンドライン履歴のサイズを制御する環境変数を表示できます。HISTFILESIZE=500 と記載された行が、bash で保管されるコマンドの数を示しています。
コマンドライン履歴は、実際にはログインディレクトリの .bash_history というファイルに格納されています。このファイルを読み込む手段は、pico、cat、less、more などいろいろあります。
しかし、このファイルはかなりサイズが大きくなることがあるので、実際に読み込む時はそのことを念頭に置いてください。
ここでは、more で読み込んでみましょう。
more .bash_history
画面を先に送るには [Space] を、戻すには [b] を、終了する場合は [q] の各キーを押します。
以前使用したコマンドの検索: 矢印キーやページ送りを使用せずに、この履歴ファイルのコマンドを検索する手段はないのでしょうか。強力な検索ユーティリティ、grep を使用すれば解決します。以下に以前に使用したコマンドをすばやく検索する方法を記します。「cat sneak なにがし」というコマンドを探しているとしましょう。このコマンドは過去に確かに使用したことがあり、したがって履歴ファイルに残っていると考えます。そこで、シェルプロンプトで次のように入力します。
history | grep sneakすると、たった今入力したコマンドだけではなく、探していたコマンドも表示されます。なぜならば、grep は履歴ファイルを検索して「sneak」という語を含むコマンドをすべて抜き出すからです。grep については、この章の後半でファイルの読み込みに役立つツールを説明する時にもっと詳しく説明します。
手間を省くもう 1 つのツールはコマンド補完という機能です。ファイル、コマンド、またはパス名の一部を入力し、[Tab] キーを押すと、bash はファイルやパスの残りの部分を表示するか、またはビープ音を鳴らします。ビープ音が鳴った場合は、もう一度 [Tab] を押すとそこまで入力した範囲で一致するファイルやパスの一覧が表示されます。
たとえば、updatedb というコマンドを忘れてしまった場合でも、コマンドの一部を覚えていれば、su で root になった後で、シェルプロンプトに対して [up] と入力し、[Tab] キーを 2 回押すと、後半部を補ったコマンドとして、updatedb と uptime が表示されます。さらに up に文字「d」を追加してもう一度 [Tab] を押すと、求めていたコマンドが完全な形で表示されます。
したがって、1 日の終業時にマシンがオフにされても、slocate データベースを更新するのはそれほど難しくありません。このコマンドがコマンドライン履歴に保管されている確率は高く、またコマンド補完機能で補完できます (コマンドのパス名の最初だけ覚えていれば大丈夫です)。