[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]  


対話的な履歴の使い方

ここではユーザの見地に立って、 GNU履歴ライブラリの対話的な使い方を説明します。 これはユーザーズ・ガイドのようなものであると考えてください。

履歴展開

履歴ライブラリは、 cshの履歴展開機能に似た機能を提供します。 このセクションでは、 履歴情報を操作するための構文を説明します。

履歴展開によって、 履歴リストの中にある単語列を入力ストリームの中に組み入れることができます。 これによって、 コマンドの再実行、 以前に実行したコマンドにおける引数のカレントな入力行への挿入、 また、 以前に実行したコマンドにおける誤りの機敏な修正が簡単にできるようになります。

履歴展開は2つの処理から構成されます。 第1の処理は、 履歴リストのどの行を置換の際に使用するべきかを決定することです。 第2の処理は、 この行のうちどの部分がカレント行に組み込まれるかを決定することです。 履歴から選択される行をイベントと呼び、 処理対象となる部分のことをワードと呼びます。 選択されたワード群を操作するために、 いくつかの修飾子が利用できるようになっています。 行は、 bashと同様の方法によってワードに分割されます。 したがって、 引用符によって囲まれた複数の単語(ワード)は1つのワードとみなされます。 履歴展開は、 履歴展開文字の出現によって開始されます。 履歴展開文字は、 デフォルトでは`!'です。

イベント指定子

イベント指定子とは、 履歴リスト内のコマンド行エントリへの参照です。

!
履歴置換を開始します。 ただし次に続く文字が、 空白、 タブ、 行末、 `='`('である場合は例外です。
!n
コマンド行番号nのコマンド行を参照します。
!-n
n行前のコマンド行を参照します。
!!
1つ前のコマンドを参照します。 これは!-1と同義です。
!string
コマンドの先頭が文字列stringで始まるコマンドのうち、 最後に実行されたものを参照します。
!?string[?]
文字列stringを含むコマンドのうち、 最後に実行されたものを参照します。 stringの直後が改行である場合は、 末尾の`?'を省略することができます。
^string1^string2^
クイック置換を実行します。 最後に実行されたコマンドのstring1の部分をstring2に置き換えて実行します。 これは、 !!:s/string1/string2/と同じことです。
!#
それまでに入力されたコマンド行全体を指します。

ワード指定子

ワード指定子は、 イベントから希望するワードを選択する目的で使われます。 コロン(`:')が、 イベント指定子とワード指定子の区切り文字になります。 ワード指定子が `^'`$'`*'`-'`%'で始まる場合は、 この区切り文字は省略することができます。 ワードは行の先頭から番号が付与され、 最初のワードは0(ゼロ)番になります。 複数のワードがカレント行に組み込まれる際には、 ワードの間は単一の空白で区切られます。

0 (zero)
ゼロ番目のワードです。 多くのアプリケーションにおいて、 これはコマンド・ワードです。
n
n番目のワードです。
^
最初の引数、 すなわち1番目のワードです。
$
最後の引数です。
%
最後に実行された`?string?'検索にマッチしたワードです。
x-y
ある範囲のワードを指します。 `-y'は、 `0-y'の省略形です。
*
ゼロ番目のワードを除く、 すべてのワードです。 これは`1-$'と同義です。 イベントの内部にワードが1つしか存在しない場合に`*'を使っても、 エラーにはなりません。 この場合には、 空の文字列が返されます。
x*
`x-$'の省略形です。
x-
`x*'のように`x-$'を省略したものですが、 最後のワードは除外されます。

ワード指定子にイベント指定子の指定がない場合、 1つ前のコマンドがイベントとして使われます。

修飾子

ワード指定子は必須ではありませんが、 それを指定した場合、 その後ろに以下の修飾子を1つ以上連結して付与することができます。 個々の修飾子の前にはコロン(`:')を付けます。

h
パス名の末尾の部分を削除したヘッド部です。
t
パス名の末尾の部分を残し、 それより前にある部分をすべて削除します。
r
`.suffix'という形式の拡張子を削除したベース名です。
e
拡張子以外のすべての部分を削除します。
p
新しいコマンドを表示するだけで実行しません。
s/old/new/
イベント行において最初に出現したoldnewによって置換します。 `/'の代わりに任意の区切り文字を使うことができます。 単一のバックスラッシュを使うことによって、 oldnewの中においてこの区切り文字を通常の文字として引用することができます。 newの中に`&'があると、 それはoldによって置き換えられます。 単一のバックスラッシュを使うことによって、 `&'を通常の文字として引用することができます。 末尾の区切り文字は、 それが入力行の最後の文字であれば、 省略可能です。
&
1つ前に実行された置換を繰り返します。
g
変更が、 イベント行全体において適用されるようにします。 gs/old/new/のように、 `s'と組み合わせて使います。 また、 `&'と組み合わせて使うこともできます。


[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]