= Fc 組込みコマンド
:encoding: UTF-8
:lang: ja
//:title: Yash マニュアル - Fc 組込みコマンド

dfn:[Fc 組込みコマンド]はlink:interact.html#history[コマンド履歴]に記録されたコマンドを再実行・表示します。

[[syntax]]
== 構文

- +fc [-qr] [-e {{エディタ}}] [{{始点}} [{{終点}}]]+
- +fc -s[q] [{{前}}={{後}}] [{{始点}}]+
- +fc -l[nrv] [{{始点}} [{{終点}}]]+

[[description]]
== 説明

+-l+ (+--list+) オプションを付けずに実行すると、fc コマンドはオペランドで指定したlink:interact.html#history[コマンド履歴]のコマンドを再実行します。+-s+ (+--silent+) オプションを付けていない場合、シェルはコマンドを再実行する前にエディタを起動し、コマンドを編集できるようにします。エディタが終了するとシェルは編集後のコマンドを実行します。+-s+ (+--silent+) オプションを付けた場合、シェルはエディタを起動せず直接コマンドを再実行します。いずれの場合も、実行するコマンドは標準出力に出力しコマンド履歴に追加されます。

+-l+ (+--list+) オプションを付けて実行すると、fc コマンドはオペランドで指定した範囲のコマンド履歴を標準出力に出力します。標準では履歴内のコマンドの内容を履歴番号とともに表示しますが、+-n+ (+--no-numbers+) および +-v+ (+--verbose+) オプションにより出力形式を変更できます。

[[options]]
== オプション

+-e {{エディタ}}+::
+--editor={{エディタ}}+::
コマンドの編集に用いるエディタ。
+
このオプションを指定しない場合、link:params.html#sv-fcedit[+FCEDIT+ 変数]の値をエディタとして使用します。+FCEDIT+ 変数も設定されていない場合は、vi をエディタとして使用します。

+-l+::
+--list+::
コマンド履歴の内容を表示します。

+-n+::
+--no-numbers+::
コマンド履歴の内容を表示する際、履歴番号を省いてコマンドのみ表示します。

+-q+::
+--quiet+::
コマンドを実行する前にコマンドを出力しないようにします。

+-r+::
+--reverse+::
{{始点}}と{{終点}}を入れ替えます。

+-s+::
+--silent+::
コマンドを編集せずに直接再実行します。

+-v+::
+--verbose+::
コマンド履歴の内容を表示する際、コマンドの時刻も表示します。

[[operands]]
== オペランド

{{始点}}と{{終点}}::
{{始点}}と{{終点}}のオペランドは、再実行または表示するコマンドの範囲を指定します。{{始点}}あるいは{{終点}}に整数を指定すると、それは履歴番号とみなします。負の整数は最新の履歴から数えた番号となります。例えば +-2+ は最後から二番目に履歴に登録されたコマンドを表します。整数以外の文字列を{{始点}}あるいは{{終点}}に指定すると、その文字列で始まる最新の履歴を指定しているものとみなします。
+
Fc コマンドが再実行または表示するコマンドは、{{始点}}と{{終点}}で指定したコマンドとその間にある履歴のコマンドです。{{始点}}が{{終点}}より後のコマンドを指している場合、コマンドの順序は逆になります。
+
{{始点}}または{{終点}}が与えられていない場合のデフォルト値は以下の表のとおりです。
+
[width="50%",options="header"]
|===
|         |+-l+ あり |+-l+ なし
|{{始点}} |-16       |-1
|{{終点}} |-16       |{{始点}}に同じ
|===

{{前}}={{後}}::
{{前}}={{後}}の形式のオペランドは、コマンドの一部を書き換えることを指示します。再実行するコマンドの中に{{前}}と同じ文字列がある場合は、その部分を{{後}}に置き換えて実行します。該当部分が複数ある場合は、最初のものだけを置き換えます。

[[exitstatus]]
== 終了ステータス

コマンドを正しく再実行できた場合、fc コマンドの終了ステータスは再実行したコマンドの終了ステータスになります。+-l+ (+--list+) オプションを指定した場合は、履歴が正しく出力できれば終了ステータスは 0 です。

[[notes]]
== 補足

Fc コマンドはlink:builtin.html#types[準特殊組込みコマンド]です。

POSIX には +-q+ (+--quiet+) および +-v+ (+--verbose+) オプションに関する規定はありません。よってこれらのオプションは link:posix.html[POSIX 準拠モード]では使えません。

link:lineedit.html[行編集]の動作中は履歴の内容を変更することはできません。

// vim: set filetype=asciidoc expandtab:
