# Fc 組込みコマンド

Fc 組込みコマンドは​コマンド履歴に記録されたコマンドを再実行・表示します。

## 構文

- `fc [-qr] [-e エディタ] [始点 [終点]]`

- `fc -s[q] [前=後] [始点]`

- `fc -l[nrv] [始点 [終点]]`

## 説明

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

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

## オプション

`-e エディタ`
`--editor=エディタ`

  コマンドの編集に用いるエディタ。

  このオプションを指定しない場合、​`FCEDIT` 変数の値をエディタとして使用します。`FCEDIT` 変数も設定されていない場合は、ed をエディタとして使用します。

`-l`
`--list`

  コマンド履歴の内容を表示します。

`-n`
`--no-numbers`

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

`-q`
`--quiet`

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

`-r`
`--reverse`

  始点と終点を入れ替えます。

`-s`
`--silent`

  コマンドを編集せずに直接再実行します。

`-v`
`--verbose`

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

## オペランド

始点と終点

  始点と終点のオペランドは、再実行または表示するコマンドの範囲を指定します。始点あるいは終点に整数を指定すると、それは履歴番号とみなします。負の整数は最新の履歴から数えた番号となります。例えば `-2` は最後から二番目に履歴に登録されたコマンドを表します。整数以外の文字列を始点あるいは終点に指定すると、その文字列で始まる最新の履歴を指定しているものとみなします。

  Fc コマンドが再実行または表示するコマンドは、始点と終点で指定したコマンドとその間にある履歴のコマンドです。始点が終点より後のコマンドを指している場合、コマンドの順序は逆になります。

  始点または終点が与えられていない場合のデフォルト値は以下の表のとおりです。

  | `-l` あり | `-l` なし
  --- | --- | ---
  始点 | -16 | -1
  終点 | -16 | 始点に同じ

前=後

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

## 終了ステータス

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

## 補足

Fc コマンドは​必須組込みコマンドです。

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

行編集の動作中は履歴の内容を変更することはできません。