fc - コマンド・ヒストリー・リストを処理する

形式

説明

fc は、対話式シェルに入力されたコマンドを表示、編集および再入力します 。 fc は “fix commands” の略です。変数 HISTSIZE が定義されていない場合 は、128 のコマンドがアクセス可能です。アクセス可能なコマンドの数 は、HISTSIZE 変数によって決まります。

シェルは、これらのコマンドをヒストリー・ファイルに保管します。HISTFILE 環境変数が書き込み可能ファイルの名前として定義されている場合、シェルはこれをヒストリー・ファイルとして使用します。 そうでない場合、HOME が定義されておりファイルが書き込み可能であれば、ヒストリー・ファイルは $HOME /.sh_history です。 HOME 変数が定義されていないか、またはファイルが書き込み可能でない場合は、シェルはヒストリー用の一時ファイルの作成を試みます。一時ファイルを作成できない場合は、シェルはヒストリー・ファイルを保持しません。
注: シェルは、同じヒストリー・ファイルを持つすべてのシェルと ヒストリー (コマンド) を共用します。ログイン・シェルは、ヒストリー・ファイルが HISTSIZE 行よりも長い場合、それを切り捨てます。
通常、シェルは、プロファイル・ファイル または ENV ファイルから実行されたコマンドの ヒストリーを保持しません。しかし、デフォルトによって、これらのいずれかの設定ファイル内で関数定義に遭遇すると、シェルはヒストリー・ファイルへのコマンドの記録を開始します。これは 、HISTSIZE および HISTFILE 変数は最初の関数定義の前に適切に設定されなければ ならないことを意味しています。この時点でヒストリー・ファイルを開始したくない 場合は、次のようにしてください。
set -o nolog

詳細については、sh および set を参照してください。fc コマンド行に現れる 変数割り当ておよびリダイレクトは、fc コマンド自身および fc が作成する コマンドの両方に影響を与えます。

形式 にある fc の最初の書式により、編集するコマンドの範囲でエディターに入ります。エディターが終了すると、fc は編集されたコマンドを シェルに入力します。

範囲の最初と最後のコマンドは、firstlast で 指定されます。コマンドを指定するには 3 つの方法があります。
  • コマンド指定子が符号なしの数または正数である場合 は、fc はその番号で始まる最新のコマンドを編集します。
  • コマンド指定子が負の数 –n である場合 は、fc は現行のコマンドの n 個だけ前のコマンドを 編集します。
  • コマンド指定子がストリングである場合 は、fc はそのストリングで始まる最新のコマンドを編集します。

last のデフォルト値は first です。firstlast も指定しなかった場合、デフォルトのコマンド範囲は、シェルに入力された直前のコマンドになります。

オプション

–e editor
コマンドを編集するために editor を起動します。–e オプションを 指定していない場合で、fc が、環境変数 FCEDIT が定義されている場合は、そこに fc が使用するエディターの名前が入っているものと想定します。FCEDIT が定義されていない場合 は、fc はコマンドを編集するために ed を起動します。
–l
コマンド・リストを表示します。このオプションは、コマンドの編集または 再入力を行いません。このオプションで last を省略した場合は、fcfirst で 指示されたコマンドから直前に入力されたコマンドまでのすべてのコマンドを表示し ます。このオプションで firstlast の両方を省略した場合は、デフォルトのコマンドの範囲は入力された最新の 16 のコマンドです。
–n
コマンドを表示するときに、コマンド番号を抑制します。
–r
コマンド範囲内のコマンドの順序を逆にします。
–s
エディターを通さずに、コマンドを 1 つだけ再入力します。コマンドの specifier が与えられ た場合、fc は、前述のように、再入力するコマンドを選択します。それ以外の場合、fc は最後に入力されたコマン ドを使用します。コマンドを再入力する前に 簡単な置換を行うには、形式が old=new のパラメーターを使用し ます。ストリング old の最初のオカレンスが、ストリング new に置き換えられます。fc は、再入力する前に そのコマンド (変更されている場合もある) を表示します。

環境変数

FCEDIT
–e オプションでエディターが指定されなかった場合に 使用するデフォルトのエディターが入っています。
HISTFILE
ヒストリー・ファイルのパス名が入っています。
HISTSIZE
アクセス可能な以前のコマンドの最大数を与えます。

ファイル

/tmp
一時ファイルを保管するために使用されます。一時ファイルを保管するために 異なるディレクトリーを指示するためには、TMPDIR 環境変数を使用することができます。
$HOME/.sh_history
このデフォルト・ヒストリー・ファイルが作成されます。

ローカライズ

fc は、以下のローカライズ環境変数を使用します。
  • LANG
  • LC_ALL
  • LC_CTYPE
  • LC_MESSAGES
  • NLSPATH

詳しくは、ローカライズを参照してください。

使用上の注意

  1. fc は、組み込みシェル・コマンドです。
  2. r は、fc –s の組み込み別名です。history は、fc –l の組み込み別名です。

終了値

0
–l を指定した場合は、これは正常終了を示す。
1
以下のいずれかによる失敗。
  • ヒストリー・ファイルがない
  • ヒストリー・ファイル内で希望する行が見つけられない
  • 一時ファイルが作成できない
2
コマンド行のオプションまたは引数が正しくない。

fc が 1 つまたはそれ以上のコマンドを実行する場合、fc の終了状況は、最後に実行したコマンドの終了状況になります。

メッセージ

以下の エラー・メッセージが出される可能性があります。
Cannot create temporary file
fc は、編集のような操作を行うために 一時ファイルを作成する必要があります。このメッセージは、ディスクがいっぱいなどのため、一時ファイルが作成できないときに出力されます。
No command matches string
特定の string で始まるコマンドの編集を要求しましたが、ヒストリー・ファイル内にそのようなコマンドはありませんでした。

移植性

POSIX.2.

関連情報

aliasedprintreadshvi