ここではユーザの見地に立って、 GNU履歴ライブラリの対話的な使い方を説明します。 これはユーザーズ・ガイドのようなものであると考えてください。
履歴ライブラリは、
csh
の履歴展開機能に似た機能を提供します。
このセクションでは、
履歴情報を操作するための構文を説明します。
履歴展開によって、 履歴リストの中にある単語列を入力ストリームの中に組み入れることができます。 これによって、 コマンドの再実行、 以前に実行したコマンドにおける引数のカレントな入力行への挿入、 また、 以前に実行したコマンドにおける誤りの機敏な修正が簡単にできるようになります。
履歴展開は2つの処理から構成されます。 第1の処理は、 履歴リストのどの行を置換の際に使用するべきかを決定することです。 第2の処理は、 この行のうちどの部分がカレント行に組み込まれるかを決定することです。 履歴から選択される行をイベントと呼び、 処理対象となる部分のことをワードと呼びます。 選択されたワード群を操作するために、 いくつかの修飾子が利用できるようになっています。 行は、 bashと同様の方法によってワードに分割されます。 したがって、 引用符によって囲まれた複数の単語(ワード)は1つのワードとみなされます。 履歴展開は、 履歴展開文字の出現によって開始されます。 履歴展開文字は、 デフォルトでは`!'です。
イベント指定子とは、 履歴リスト内のコマンド行エントリへの参照です。
!
!n
!-n
!!
!-1
と同義です。
!string
!?string[?]
^string1^string2^
!!:s/string1/string2/
と同じことです。
!#
ワード指定子は、 イベントから希望するワードを選択する目的で使われます。 コロン(`:')が、 イベント指定子とワード指定子の区切り文字になります。 ワード指定子が `^'、 `$'、 `*'、 `-'、 `%'で始まる場合は、 この区切り文字は省略することができます。 ワードは行の先頭から番号が付与され、 最初のワードは0(ゼロ)番になります。 複数のワードがカレント行に組み込まれる際には、 ワードの間は単一の空白で区切られます。
0 (zero)
n
^
$
%
x-y
*
x*
x-
ワード指定子にイベント指定子の指定がない場合、 1つ前のコマンドがイベントとして使われます。
ワード指定子は必須ではありませんが、 それを指定した場合、 その後ろに以下の修飾子を1つ以上連結して付与することができます。 個々の修飾子の前にはコロン(`:')を付けます。
h
t
r
e
p
s/old/new/
&
g
gs/old/new/
のように、
`s'と組み合わせて使います。
また、
`&'と組み合わせて使うこともできます。