Next: , Up: Shell History


27.14.4.1 シェル履歴リング
M-p
今のものより1つまえの古いシェルコマンドを持ってくる。


M-n
今のものより1つあとの古いシェルコマンドを持ってくる。


M-r regexp <RET>
M-s regexp <RET>
regexpに一致する古いシェルコマンドを後向きまたは前向きに探索する。
C-c C-x (Shell mode)
履歴からつぎのコマンドを持ってくる。

シェルバッファには、それまでに入力したシェルコマンドの履歴があります。 この履歴からシェルコマンドを再利用するには、編集コマンド、 M-pM-nM-rM-sを使います。 これらはミニバッファの履歴コマンドと同様に働きますが、 (普通はシェルに送るテキストを挿入する) シェルバッファの末尾にあるテキストに作用する点が異なります。

M-pは、1つまえのシェルコマンドをシェルバッファの末尾に持ってきます。 M-pを連続して使うと、次々にそれよりまえに実行したシェルコマンドを 持ってきて、それまでのシェルへの入力用テキストを置き換えます。 M-nも同様ですが、 次々にそれよりあとのシェルコマンドを持ってくる点が異なります。

履歴探索コマンドM-rM-sは、 正規表現を読み取り、それに一致するシェルコマンドを履歴の中から探します。 どのシェルコマンドを持ってくるかという点を除けば、 それらの働きはM-pM-nと同じです。 正規表現として空文字列を入力すると、直前に使用した正規表現を再使用します。

再使用したいシェルコマンドを探したならば、 <RET>を打ってそのシェルコマンドを再実行するか、 必要なら編集してから実行します。

以前に連続して実行した一連のシェルコマンドをまとめて再実行できると便利な ことがあります。 それには、まず、一連のシェルコマンドの最初のものを探して再実行します。 そうしてからC-c C-xと打ちます。 これは、直前に再実行したシェルコマンドの(履歴内で) つぎにあるシェルコマンドを持ってきます。 <RET>と打って再実行します。 このように、C-c C-x <RET>を繰り返し打てば一連のシェルコマンドを 再実行できます。

これらのコマンドは過去に実行したシェルコマンドを専用の履歴リストから 持ってくるのであって、シェルバッファからとってくるのではありません。 したがって、シェルバッファを編集したり、その大部分をキルしたとしても、 これらのコマンドが参照する履歴には影響しません。

いくつかのシェルは、コマンド履歴をファイルに保管して 以前のセッションの履歴を引き継げるようになっています。 Emacsは、自分の履歴リストを初期設定するために、 ユーザーが使うシェルの履歴ファイルを読み込みます。 ファイル名は、bashであれば~/.bash_history、 kshであれば~/.sh_history、 その他のシェルであれば~/.historyです。