fc コマンド

目的

コマンドのヒストリー・リストを処理します。

構文

エディターをオープンして以前に入力したコマンドを変更し、再実行する

fc [ -r ] [ -e Editor ] [ First [ Last ] ]

以前に入力したコマンドのリストを生成する

fc -l [ -n ] [ -r ] [ First [ Last ] ]

以前に入力したコマンドのリストを実行時刻付きで生成する

fc -t [ -n ] [ -r ] [ First [ Last ] ]

以前に入力したコマンドを再実行する

fc -s [ Old= New ] [ First ]

説明

fc コマンドは、ユーザーのコマンド・ヒストリー・ファイルの内容を表示したり、エディターを起動して、シェルで以前に入力したコマンドを変更したり再実行したりします。

コマンド・ヒストリー・ファイルでは、コマンドが番号別に表示されます。リスト内の最初の番号は任意に選択されます。番号とそのコマンドとの関係は変化しませんが、ユーザーがログインするときに他のプロセスがそのリストにアクセスしていない場合は除きます。 その場合、システムは番号付けをリセットして、コマンドを古い順に 1 から番号付けを始めます。

コマンド・ヒストリー・ファイルの番号が、HISTSIZE 環境変数の値と 32767 の、 いずれか大きい方の値を超えて制限に達すると、シェルが 1 に折り返します。 このオプションの番号折り返し機能に関係なく、fc コマンドは コマンドの時刻順シーケンスを維持します。 例えば、3 つのコマンドの番号が順々に 32766、32767 および 1 (折り返し後の番号) となっている場合、 コマンド 32767 は引き続きコマンド 1 の前にあるものと見なされます。

ヒストリー・ファイルの中にあるコマンドは、-l (小文字の L) フラグを使用すると表示できます。 -l フラグを指定せず、-e Editor フラグを使用してコマンドを編集すると、 その結果生成された行はヒストリー・ファイルの終わりに入力されてから、シェルによって再度実行されます (fc -e Editor コマンドは、コマンド・ヒストリー・リストには入力されません)。 エディターが 0 以外の終了状況を戻すと、ヒストリー・ファイル内の入力とコマンドの再実行が抑止されます。

fc コマンドで使用されるコマンド・ラインの変数代入またはリダイレクト演算子は、前のコマンドをもう一度起動し、fc コマンドと前のコマンドの両方の標準エラーを抑止します。例えば次のとおりです。

fc -s -- -1 2>/dev/null

フラグ

項目 説明
-e Editor 指定したエディターを使用してコマンドを編集します。Editor パラメーターはコマンド名です。コマンドを配置するには、PATH 環境変数を使用します。-e フラグを指定していない場合は、デフォルトとして FCEDIT 環境変数の値が使用されます。FCEDIT 環境変数が null、または設定されていない場合は、ed エディターが使用されます。
-l (小文字の L) ヒストリー・ファイル内のコマンドを表示します。 コマンドを変更するためのエディターは起動されません。各コマンドは、First および Last パラメーターで指定された順序で、-r フラグの影響を受け、各コマンドの前にコマンド番号が付いた状態で書き込まれます。
-n -l フラグと一緒に使用すると、コマンド番号の表示を抑止します。
-r コマンドのリスト順序 (-l フラグと一緒に使用した場合) を反転、またはコマンドの編集順序 (-l フラグを指定しない場合) を反転させます。
-s エディターを起動せずにコマンドを再度実行します。 First パラメーターも指定していない場合は、-s フラグは直前のコマンドを再度実行します。
-t コマンドを、それが実行された時刻とともにヒストリー・ファイルにリストします。 この機能は -l フラグと似ていますが、コマンドの実行時刻が表示されます。
注: 時刻フィールドが以前 EXTENDED_HISTORY=ON を設定して記録されている場合は、フォーマット済みの時刻フィールドが表示されます。 設定されていなければ「?」と表示されます。

パラメーター

項目 説明
First または Last リストまたは編集するコマンドを選択します。アクセス可能な、以前のコマンドの数は HISTSIZE 環境変数の値によって決定されます。 First および Last パラメーターは、次のいずれかの値でなければなりません。
[+] Number
特定のコマンド番号を表します。コマンド番号は、-l フラグを使用して表示できます。+ (正符号) はデフォルトの値です。
-Number
以前実行されたコマンドを表します。ヒストリー・リスト内でバックアップするコマンドの数により指定されます。 例えば、-1 は直前のコマンドを示します。
string
指定した文字列で始まるコマンドのうち、最後に入力したコマンドを示します。 -s フラグを付けずに Old=New パラメーターを指定すると、First パラメーターからの文字列に = (等符号) を入れることはできません。

-s フラグを使用する場合に、First パラメーターを省略すると、直前のコマンドが使用されます。

-s フラグが指定されていない場合は、次の規則が適用されます。

  • -l フラグを使用する場合に、Last パラメーターを省略すると、デフォルトの設定は直前のコマンドになります。
  • -r-n、および -e フラグを使用する場合に、Last パラメーターを省略すると、デフォルトの設定は First パラメーターになります。
  • First パラメーターと、Last パラメーターの両方を省略すると (-l フラグを使用するかどうかに応じて)、以前の 16 個のコマンドが表示されるか、直前のコマンドが 1 つ編集されます。
  • First パラメーターと、Last パラメーターの両方を指定すると、すべてのコマンドがリストされる (-l フラグを指定した場合) か、編集されます (-l フラグを指定しない場合)。 複数のコマンドを編集するには、コマンドそれぞれを新しい行で始め、一度にすべてのコマンドをエディターに対して指定します。 First パラメーターが Last パラメーターよりも新しいコマンドを表す場合は、各コマンドが逆の順でリストまたは編集されます。 これは、-r フラグを使用した場合と同じです。例えば、次の 1 行目のコマンドは、2 行目の対応するコマンドと同じです。
    fc  -r  10  20           fc      30  40
    fc      20  10           fc  -r  40  30
  • コマンドの範囲を使用する場合は、ヒストリー・リスト内にない、 First または Last の値を指定しても、 エラーではありません。fc コマンドは、リスト内の最も古いコマンドまたは最も新しいコマンドのうち、該当する値を代用します。例えば、ヒストリー・リスト内に 1 から 10 の番号付けられた 10 個のコマンドだけが入っている場合に、次のコマンドを入力したとします。
    
    fc  -l
    fc   1   99
    この場合、10 個のコマンドがすべて個別にリストされ、編集されます。
項目 説明
Old=New 再度実行されるコマンド内で、古い文字列の最初のオカレンスを新しい文字列に置換します。

環境変数

次の環境変数は、fc コマンドの実行に影響を与えます。

項目 説明
EXTENDED_HISTORY ヒストリー・ファイルにおけるコマンド実行時刻の記録を制御するために使用されます。 この変数を ON に設定すると、時刻が記録されます。 それ以外の場合は、記録されません。
FCEDIT シェルによって拡張されると、-e editor 変数のデフォルトの設定の値を決定します。 FCEDIT 環境変数の値が null、または設定されていない場合は、ed エディターがデフォルトになります。
HISTDATEFMT fc –t コマンドが表示する時刻のフォーマットを制御するために使用されます。 例えば、HISTDATEFMT=%Y とすれば、 コマンドの実行時に fc -t は年を表示します。 このフォーマット設定は、date コマンドで行われる設定と同様です。
HISTFILE コマンド・ヒストリー・ファイルのパス名を決定します。 HISTFILE 環境変数が設定されていない場合、シェルはユーザーのホーム・ディレクトリー内の .sh_history ファイルにアクセスまたは作成する場合があります。
HISTSIZE アクセス可能な以前のコマンド数の制限を表す 10 進数を決定します。 この変数が設定されていない場合は、デフォルトの値である 128 が使用されます。

終了状況

次の終了値が戻されます。

項目 説明
0 リスト表示が正常終了しました。
>0 エラーが発生しました。

上記以外の終了状況は、fc コマンドで実行されたコマンドの終了状況です。

  1. 最後に実行したコマンドで、 FCEDIT 環境変数により定義されたエディター (デフォルトのエディターは、 /usr/bin/ed) を起動するには、次のように入力します。
    
    fc
    このコマンドは、編集が終わると実行されます。
  2. 以前に実行した 2 つのコマンドを表示するには、次のように入力します。
    fc -l -2
  3. cc で始まるコマンドを検索し、 foobar に変更し、 コマンドを表示して実行するには、次のように入力します。
    fc -s foo=bar cc
  4. 以前実行されたコマンドを、その実行時刻と ともにリストするには、次のように入力します。
    fc –t

ファイル

項目 説明
/usr/bin/ksh Korn シェルの fc 組み込みコマンドが入っています。
/usr/bin/fc fc コマンドが入っています。