<!DOCTYPE REFENTRY PUBLIC "-//Sun Microsystems//DTD DocBook V3.0-Based SolBook Subset V2.0//EN" [
<!--ArborText, Inc., 1988-1998, v.4001-->
<!ENTITY % commonents SYSTEM "smancommon_ja.ent">
%commonents;
<!ENTITY % booktitles SYSTEM "booktitles_ja.ent">
%booktitles;
]>
<?Pub UDT _bookmark _target>
<?Pub Inc>
<refentry id="history-1">
<!-- @(#)history.1 1.9 98/12/01 SMI; JFP -->
<refmeta><refentrytitle>history</refentrytitle><manvolnum>1</manvolnum>
<refmiscinfo class="date">1998年12月1日</refmiscinfo>
<refmiscinfo class="sectdesc">&man1;</refmiscinfo>
<refmiscinfo class="software">&release;</refmiscinfo>
<refmiscinfo class="arch">generic</refmiscinfo>
<refmiscinfo class="copyright">Copyright 1989 AT&amp;T   Copyright (c) 1995, Sun Microsystems, Inc.  All Rights Reserved   Portions Copyright (c) 1992, X/Open Company Limited  All Rights Reserved</refmiscinfo>
</refmeta>
<refnamediv><refname>history</refname><refname>fc</refname><refpurpose>コマンドの履歴リストの処理</refpurpose></refnamediv>
<refsynopsisdiv><title>&synp-tt;</title>
<cmdsynopsis><command>/usr/bin/fc</command><arg choice="opt"><arg choice="plain"><replaceable>first</replaceable></arg><arg choice="opt"><?Pub Caret><replaceable>last</replaceable></arg></arg>
</cmdsynopsis>
<cmdsynopsis><command>/usr/bin/fc</command><arg choice="plain"><option>l</option></arg><arg choice="opt"><option>nr</option></arg><arg choice="opt"><arg choice="plain"><replaceable>first</replaceable></arg><arg choice="opt"><replaceable>last</replaceable></arg></arg>
</cmdsynopsis>
<cmdsynopsis><command>/usr/bin/fc</command><arg choice="plain"><option>s</option></arg><arg choice="opt"><arg choice="plain"><replaceable>old</replaceable></arg><arg choice="plain">=</arg><arg choice="plain"><replaceable>new</replaceable></arg></arg><arg choice="opt"><replaceable>first</replaceable></arg>
</cmdsynopsis><refsect2><title>csh</title>
<cmdsynopsis><command>history</command><arg choice="opt"><option>hr</option></arg><arg choice="opt"><replaceable>n</replaceable></arg>
</cmdsynopsis></refsect2>
<refsect2><title>ksh</title>
<cmdsynopsis><command>fc</command><arg choice="plain"><option>e</option></arg><arg choice="plain"><option></option></arg><arg choice="opt"><arg choice="plain"><replaceable>old</replaceable></arg><arg choice="plain">=</arg><arg choice="plain"><replaceable>new</replaceable></arg></arg><arg choice="opt"><replaceable>command</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis><command>fc</command><arg choice="opt"><option>e</option>&nbsp;<replaceable>ename</replaceable></arg><arg choice="opt"><option>nlr</option></arg><arg choice="opt"><arg choice="plain"><replaceable>first</replaceable></arg><arg choice="opt"><replaceable>last</replaceable></arg></arg>
</cmdsynopsis></refsect2>
</refsynopsisdiv>
<refsect1><title>&desc-tt;</title>
<refsect2><title>/usr/bin/fc</title>
<para><command>fc</command> ユーティリティは、以前に対話型 <command>sh</command> に入力されたコマンドの一覧表示、または 編集と再実行を行います。</para>
<para>コマンドの履歴リストは、番号によってコマンドを参照します。 リスト中の最初の番号は任意に選択できます。 コマンド番号とコマンドとの関係は変わることはありません。 ただしユーザーがログインしたときに、どのプロセスも リストをアクセスしていない場合を除きます。 この場合には、システムはコマンド番号をリセットするので、 保存されている最も古いコマンドに新たな番号 ( 通常は 1) が与えられます。コマンド番号が、<envar>HISTSIZE</envar> の値と 128 の大きい方の値に到達したとき、シェルは番号を循環させるので、次のコマンドが再び最小値 (通常は 1) から始まります。このように番号が循環しても、<command>fc</command> は時間の順序は把握しています。 たとえば 4 つのコマンドにそれぞれ 32&thinsp;766 、32&thinsp;767、 1 ( 循環後 )、 2 という番号が与えられたとき、 32&thinsp;767 は 1 よりも大きい値であっても 1 以前に実行されたものであると認識しています。</para>
<para>コマンドが編集されたとき (<option>l</option> オプション省略時 ) 、結果として生成された行が履歴リストの最後尾に記録され、<command>sh</command> によって再実行されます。編集作業を起動した <command>fc</command> コマンド自身は履歴リストには記録されません。 エディタがゼロ以外の終了ステータスを返した場合、 履歴リストへの記録や再実行は抑止されます。<command>fc</command> コマンドに指定したコマンド行変数割り当てや リダイレクト演算子は、<command>fc</command> コマンド自身および生成されるコマンドの両方に対して有効です。次の例を見てください。<informalexample><screen>fc -s -- -1 2>/dev/null</screen>
</informalexample>この例は以前のコマンドを再度呼び出すものですが、 <command>fc</command> および以前のコマンドの両方に対して標準エラー出力を抑止します。</para>
</refsect2>
<refsect2><title>csh</title>
<para>履歴のリストを表示します。 <replaceable>n</replaceable> を指定すると、 <replaceable>n</replaceable> 個の最新の履歴を表示します。</para>
<variablelist termlength="xtranarrow"><varlistentry><term><option>r</option> </term><listitem><para>出力を、古い履歴からではなく 最近の履歴から順に並べ変えます。</para>
</listitem></varlistentry>
<varlistentry><term><option>h</option> </term><listitem><para>先頭に番号を付加せずに履歴の リストを出力します。 <option>h</option> オプションを使用することにより、 <command>csh</command> 組み込みコマンドの <link linkend="source-1"><citerefentry><refentrytitle>source</refentrytitle><manvolnum>1</manvolnum></citerefentry></link> の入力に適したファイルを出力することができます。</para>
</listitem></varlistentry>
</variablelist>
<para>履歴置換: 履歴置換を使用すれば、 以前入力したコマンド行のワードを、 これから入力するコマンド行で使用できます。 これにより、 綴りの訂正、 複雑なコマンドや引数の繰り返し入力が簡単になります。 コマンド行は履歴リストに保存されます。 履歴リストのサイズは <command>history</command> 変数によって変更できます。 <command>history</command> シェル変数は 履歴ファイルに保存されるコマンド行の 最大数に設定されます。 たとえば</para>
<informalexample>
<para><command>set</command> <command>history</command> <literal>=</literal> <literal>200</literal> </para>
</informalexample>
<para>は、履歴リストに最新の 200 コマンド行のトラックを保管します。 設定を行わない場合、 C シェルは最新のコマンドだけを保存します。</para>
<para>履歴置換の指定は <literal>!</literal> で始まり ( <literal>histchars</literal> 変数により他の文字に変更可能)、 コマンド行のどこに現われてもかまいません。 ただし履歴置換のネストはできません。 <literal>!</literal> を <literal>&bsol;</literal> でエスケープすれば、 その特別な意味を抑制できます。</para>
<para>履歴置換を含んだ入力行は、 展開された後で、 他の置換が起こる前または コマンドが実行される前に、 端末上に表示されます。</para>
</refsect2>
<refsect2><title>イベント指示子</title>
<para>イベント指示子は、 履歴リスト内の コマンド行エントリを参照するものです。</para>
<variablelist termlength="medium"><varlistentry><term><literal>!</literal></term><listitem><para>次の文字が空白文字、 タブ、 復帰改行、 <literal>=</literal>、 または <literal>(</literal> でなければ、 履歴置換を開始します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>!!</literal></term><listitem><para>直前のコマンドを指します。 他の文字を加えずにこれだけを入力すると、 直前のコマンドを繰り返します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>!</literal><replaceable>n</replaceable></term><listitem><para><replaceable>n</replaceable> 番のコマンド行を指します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>!</literal><option></option><replaceable>n</replaceable></term><listitem><para>入力中のコマンドから <replaceable>n</replaceable> 個前のコマンドを指します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>!</literal><replaceable>str</replaceable></term><listitem><para><replaceable>str</replaceable> で始まる最新のコマンドを指します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>!?</literal><replaceable>str</replaceable><literal>?</literal></term><listitem><para><replaceable>str</replaceable> を含む最新のコマンドを指します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>!?</literal><replaceable>str</replaceable><literal>? </literal><replaceable>additional</replaceable></term><listitem><para><replaceable>str</replaceable> を含む最新のコマンドを指し、 その参照コマンドに <replaceable>additional</replaceable> を追加します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>!{</literal><command>command</command><literal>} </literal><replaceable>additional</replaceable></term><listitem><para><command>command</command> で始まる最新のコマンドを指し、 その参照コマンドに <replaceable>additional</replaceable> を追加します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>&caret;</literal><replaceable>previous_word</replaceable><literal>&caret;</literal><replaceable>replacement</replaceable><literal>&caret;</literal></term><listitem><para>文字列 <replaceable>previous_word</replaceable> を文字列 <replaceable>replacement</replaceable> に置き換えて、 直前のコマンド行を繰り返します。 これは履歴置換と同じ動作です。<informalexample><programlisting><literal>!:s/</literal><replaceable>previous_word</replaceable><literal>/</literal><replaceable>replacement</replaceable><literal>/</literal>.</programlisting>
</informalexample>以前の特定のコマンドを再実行し、さらに同じような置換を行う場合、たとえば 6 番目のコマンドを再実行するには、次のようにします。<informalexample><programlisting><literal>!:6s/</literal><replaceable>previous_word</replaceable><literal>/</literal><replaceable>replacement</replaceable><literal>/</literal>.</programlisting>
</informalexample></para>
</listitem></varlistentry>
</variablelist>
<para>ワード指示子:</para>
<para>A `<literal>:</literal>' ( コロン ) はイベント指示子とワード指示子とを区切ります。 ワード指示子が <literal>&caret;</literal>、 <literal>$</literal>、 <literal>*</literal>、 <literal>&ndash;</literal>、 または <literal>%</literal> で始まるときは省略できます。 直前のコマンドからワードを選択する場合、 イベント指示子の 2 番目の <literal>!</literal> は省略できます。 たとえば <literal>!!:1</literal> と <literal>!:1</literal> は、 両方とも直前のコマンドの最初のワードを指します。 また、 <literal>!!$</literal> と <literal>!$</literal> は、 両方とも直前のコマンドの最後のワードを指します。 ワード指示子には以下のものがあります。</para>
<variablelist termlength="xtranarrow"><varlistentry><term><literal>#</literal></term><listitem><para>今までに入力したすべてのコマンド行</para>
</listitem></varlistentry>
<varlistentry><term><literal>0</literal></term><listitem><para>最初に入力したワード ( コマンド )</para>
</listitem></varlistentry>
<varlistentry><term><replaceable>n</replaceable> </term><listitem><para><replaceable>n</replaceable> 番目の引数</para>
</listitem></varlistentry>
<varlistentry><term><literal>&caret;</literal></term><listitem><para>最初の引数。 <literal>1</literal> と同じ</para>
</listitem></varlistentry>
<varlistentry><term><literal>$</literal></term><listitem><para>最後の引数</para>
</listitem></varlistentry>
<varlistentry><term><literal>%</literal></term><listitem><para>最新の <literal>?</literal><replaceable>s</replaceable> による検索で一致したワード</para>
</listitem></varlistentry>
<varlistentry><term><replaceable>x</replaceable><literal>&ndash;</literal><replaceable>y</replaceable></term><listitem><para>ワードの範囲。 <literal>&ndash;</literal><replaceable>y</replaceable> は <literal>0&ndash;</literal><replaceable>y</replaceable> の省略形</para>
</listitem></varlistentry>
<varlistentry><term><literal>*</literal></term><listitem><para>すべての引数。 イベント中に 1 ワードしか存在しないときは NULL</para>
</listitem></varlistentry>
<varlistentry><term><replaceable>x</replaceable><literal>*</literal></term><listitem><para><replaceable>x</replaceable><literal>&ndash;$</literal> の省略形</para>
</listitem></varlistentry>
<varlistentry><term><replaceable>x</replaceable><literal>&ndash;</literal></term><listitem><para><replaceable>x*</replaceable> と同じだが、 ワード <literal>$</literal> を省略</para>
</listitem></varlistentry>
</variablelist>
<para>修飾子:</para>
<para>オプションのワード指示子の後に、 <literal>:</literal> で始まる 1 つ以上の修飾子を追加できます。</para>
<variablelist termlength="medium"><varlistentry><term><literal>h</literal></term><listitem><para>パス名の後部分の構成要素を除去して、 前部分を残します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>r</literal></term><listitem><para>`<literal>.</literal><replaceable>xxx</replaceable>' の形の接尾辞を除去して、 ベース名を残します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>e</literal></term><listitem><para>接尾辞以外はすべて除去して、 拡張部分を残します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>s/</literal><replaceable>oldchars</replaceable><literal>/</literal><replaceable>replacements</replaceable><literal>/</literal></term><listitem><para><replaceable>replacements</replaceable> を <replaceable>oldchars</replaceable> に置換します。 <replaceable>oldchars</replaceable> は組み込まれた空白文字を含む文字列ですが、 イベント指示子、 	<literal>&caret;</literal><replaceable>oldchars</replaceable><literal>&caret;</literal><replaceable>replacements</replaceable><literal>&caret;</literal> にある <replaceable>previous_word</replaceable> は空白文字を含みません。</para>
</listitem></varlistentry>
<varlistentry><term><literal>t</literal></term><listitem><para>パス名の前部分の構成要素を除去して、 後部分を残します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>&amp;</literal></term><listitem><para>前の置換を繰り返します。</para>
</listitem></varlistentry>
<varlistentry><term><literal>g</literal></term><listitem><para>各ワード内の最初の一致が発生した箇所を、 上記のオプションに接頭辞を付けて変更します ( たとえば <literal>g&amp;</literal>) 。</para>
</listitem></varlistentry>
<varlistentry><term><literal>p</literal></term><listitem><para>新しいコマンドを表示するだけで、 実行はしません。</para>
</listitem></varlistentry>
<varlistentry><term><literal>q</literal></term><listitem><para>置換されたワードをクォートして、 それ以上の置換をエスケープします。</para>
</listitem></varlistentry>
<varlistentry><term><literal>x</literal></term><listitem><para><literal>q</literal> と同じですが、 空白文字、 タブ、 復帰改行文字 (NEWLINE) ごとにワードに分割します。</para>
</listitem></varlistentry>
</variablelist>
<para><literal>g</literal> を先頭に付加しないと、<replaceable>oldchars</replaceable> に一致する最初の文字列だけが変更されます。 一致する文字列がなければ、 エラーとなります。</para>
<para>置換部分の左側は正規表現ではなく文字列です。 <literal>/</literal> の箇所には、 区切り文字としてどのような文字でも使用できます。 区切り文字用の文字はバックスラッシュで囲まれます。 右側の <literal>&amp;</literal> 文字は、 左側のテキストで置換されます。 <literal>&amp;</literal> はバックスラッシュでクォートすることができます。 <replaceable>oldchars</replaceable> が NULL のとき、 直前の文字列における <replaceable>oldchars</replaceable> 、または <literal>!?</literal><replaceable>s</replaceable>. における文脈検索文字列 <replaceable>s</replaceable> を使用します。 同様に <replaceable>replacements</replaceable> の直後に復帰改行がある場合、 文脈検索の最右にある <literal>?</literal> は省略できます。</para>
<para>イベントが指定されないと、 履歴リファレンスは前のコマンドか、 (もしあれば ) そのコマンド行上での 前の履歴リファレンスを参照します。</para>
</refsect2>
<refsect2><title>ksh</title>
<para><command>fc <option>e</option></command><option></option> [ <replaceable>old</replaceable><literal>=</literal><replaceable>new</replaceable> ] [ <replaceable>command</replaceable> ] の形式で <command>fc</command> を指定すると、 <replaceable>old</replaceable><literal>=</literal><replaceable>new</replaceable> の置換を行なった後で <replaceable>command</replaceable> が再実行されます。<replaceable>command</replaceable> 引数を省略すると、最後に行なったコマンドが実行されます。</para>
<para><command>fc</command> [ <option>e</option> <replaceable>ename</replaceable> ] [ <option>nlr</option> ] [ <replaceable>first</replaceable> [ <replaceable>last</replaceable> ] ] の形式で <command>fc</command> を指定すると、端末から最近入力された <literal>HISTSIZE</literal> 個のコマンドの中から、<replaceable>first</replaceable> から <replaceable>last</replaceable> までの範囲のコマンドを選択します。<replaceable>first</replaceable> と <replaceable>last</replaceable> の両引数は、 数値または文字列で指定できます。 文字列の場合、その文字列で始まる最新のコマンドを見つけます。 負の数値は、 現在のコマンド番号からのオフセットとなります。<option>l</option> オプションを指定すると、標準出力上にコマンドを一覧表示します。 <option>l</option> を指定しないと、これらのキーボードコマンドの入ったファイル上で <option>e</option> <replaceable>ename</replaceable> で示すエディタプログラムを起動します。 <replaceable>ename</replaceable> が省略されていると、 変数 <envar>FCEDIT</envar> (デフォルトは <literal>/bin/ed</literal>) の値をエディタとして使用します。 編集が完了すると、
編集されたコマンドを実行します。<replaceable>last</replaceable> を省略すると、<replaceable>first</replaceable> と同一値に設定されます。<replaceable>first</replaceable> を省略すると、デフォルトは、編集については直前のコマンドに、 一覧表示については &ndash;16 になります。<option>r</option> オプションはコマンドの順序を逆にします。<option>n</option> オプションは一覧表示時にコマンド番号の出力を抑止します (コマンド行編集の詳細については <link linkend="ksh-1"><citerefentry><refentrytitle>ksh</refentrytitle><manvolnum>1</manvolnum></citerefentry></link> を参照) 。</para>
<variablelist termlength="xtranarrow"><varlistentry><term><envar>HISTFILE</envar> </term><listitem><para>シェル起動時にこの変数が設定されていると、その値はコマンド履歴 を格納するために使用されるファイルのパス名になります。</para>
</listitem></varlistentry>
<varlistentry><term><envar>HISTSIZE</envar> </term><listitem><para>シェル起動時にこの変数が設定されていると、このシェルで使用可能な入力済みコマンドの数が、この値以上になります。デフォルト値は <literal>128</literal> です。</para>
</listitem></varlistentry>
</variablelist>
<para>コマンド再入力:</para>
<para>端末装置から最近入力された <envar>HISTSIZE</envar> が示す個数 (デフォルトは 128 個) のコマンドのテキストは、履歴ファイルに保存されています。 <filename>$HOME/.sh_history</filename> というファイルは、<envar>HISTFILE</envar> 変数が設定されていない場合、または変数が示すファイルが書き込み不可能な場合に使用されます。シェルは、同じ名前の <envar>HISTFILE</envar> を使用する対話型シェルすべてのコマンド履歴を使用できます。<command>fc</command> という特殊コマンドは、 このファイルの一部をリスト表示または編集するときに使用します。 編集またはリスト表示すべきファイルの部分は、 番号か、 またはコマンドの最初の文字 を 指定することによって選択できます。 単一のコマンドを指定することも、コマンドの範囲を指定することも可能です。<command>fc</command> の引数としてエディタプログラムが指定されていないと、<envar>FCEDIT</envar> という変数の値が使用されます。<envar>FCEDIT</envar> が未定義の場合は、<literal>/bin/ed</literal> が使われます。編集されたコマンドは、 エディタを終了した時点で 表示および再実行されます。エディタ名に <literal>&ndash;</literal> を指定すると、 編集段階が省かれ、コマンドが再実行されます。 この場合、 <replaceable>old</replaceable><literal>=</literal><replaceable>new</replaceable> という形式の代入パラメタを使用すれば、 実行前にコマンドを変更できます。
たとえば、 <literal>r</literal> が <literal>'fc</literal> <option>e</option> <option></option><literal>'</literal> の別名として定義されているとき <literal>`r</literal> <literal>bad=good</literal> <literal>c'</literal> と入力すると、<literal>c</literal> という文字で始まるコマンドのうち最新のものが、その記述中の最初の <literal>bad</literal> という 文字列を <literal>good</literal> に置き換えられて再実行されます。</para>
<para>複合コマンドの中に <command>fc</command> 組み込みコマンドを指定すると、 すべてのコマンドが履歴ファイルから 削除されます。</para>
</refsect2>
</refsect1>
<refsect1><title>&opts-tt;</title>
<para>以下のオプションを指定できます。</para>
<variablelist termlength="narrow"><varlistentry><term remap="10"><option>e</option> <replaceable>editor</replaceable></term><listitem><para><replaceable>editor</replaceable> が示すエディタを使ってコマンドを編集します。文字列 <replaceable>editor</replaceable> はユーティリティ名で、 <envar>PATH</envar> 変数の値に従って検索されます。<option>e</option> を省略すると、 <envar>FCEDIT</envar> 変数の値がデフォルトとして用いられます。<envar>FCEDIT</envar> の値が NULL または未設定のときは、エディタとして <command>ed</command> が使用されます。</para>
</listitem></varlistentry>
<varlistentry><term><option>l</option> </term><listitem><para>(文字のエル) エディタを呼び出して編集する代わりに、コマンドを一覧表示します。 <replaceable>first</replaceable> と <replaceable>last</replaceable> の両オペランドで指定した範囲のコマンドを、 <option>r</option> オプションがあればそれに従って、順番にコマンド番号付きで表示します。</para>
</listitem></varlistentry>
<varlistentry><term><option>n</option> </term><listitem><para><option>l</option> オプションによる一覧表示において、コマンド番号を出力しません。</para>
</listitem></varlistentry>
<varlistentry><term><option>r</option> </term><listitem><para>コマンドの一覧表示 (<option>l</option> 指定時) または編集 (<option>l</option> および <option>s</option> 省略時) において、順序を逆にします。</para>
</listitem></varlistentry>
<varlistentry><term><option>s</option> </term><listitem><para>エディタを呼び出さずにコマンドを再実行します。</para>
</listitem></varlistentry>
</variablelist>
</refsect1>
<refsect1><title>&oper-tt;</title>
<para>以下のオペランドを指定できます。</para>
<para><replaceable></replaceable><replaceable>first</replaceable><replaceable></replaceable> </para>
<variablelist termlength="narrow"><varlistentry><term remap="12"><replaceable>last</replaceable> </term><listitem><para>表示または編集するコマンドを選択します。いくつまでさかのぼってコマンドをアクセスできるかは、<envar>HISTSIZE</envar> 変数の値により決まります。<replaceable>first</replaceable> と <replaceable>last</replaceable> の値は、それぞれ以下のいずれかです。 <variablelist termlength="xtranarrow"><varlistentry><term>[<literal>+</literal>]<replaceable>number</replaceable></term><listitem><para>コマンド番号を表す正の整数。過去に実行した各コマンドの番号は、 <option>l</option> オプションを使えば確認できます。</para>
</listitem></varlistentry>
<varlistentry><term><literal>&minus;</literal><replaceable>number</replaceable></term><listitem><para>いくつ前のコマンドかを示す負の整数。 たとえば直前に実行したコマンドなら &minus;1 となります。</para>
</listitem></varlistentry>
<varlistentry><term><replaceable>string</replaceable></term><listitem><para>指定した文字列で始まっていたコマンドのうち、 最後に実行したコマンド。<replaceable>old=new</replaceable> オペランドが <option>s</option> オプションなしで指定された場合、文字列形式の <replaceable>first</replaceable> オペランドを使用するなら、その文字列中に等記号を含めることはできません。</para>
</listitem></varlistentry>
</variablelist></para>
<para>「形式」の項で示した形式で、<option>s</option> を指定する場合、</para>
<itemizedlist>
<listitem><para><replaceable>first</replaceable> を省略すると、直前のコマンドが使用されます。</para>
</listitem></itemizedlist>
<para>「形式」の項で示した形式で、<option>s</option> を指定しない場合、</para>
<itemizedlist>
<listitem><para><replaceable>last</replaceable> を省略すると、デフォルト値は <option>l</option> 指定時は直前のコマンドとなり、<option>l</option> 省略時は <replaceable>first</replaceable> の値となります。</para>
</listitem><listitem><para><replaceable>first</replaceable> と <replaceable>last</replaceable> の両方を省略すると、<option>l</option> 指定時は直前の 16 個のコマンドの表示、<option>l</option> 省略時は直前の 1 つのコマンドの編集となります。</para>
</listitem><listitem><para><replaceable>first</replaceable> と <replaceable>last</replaceable> の両方を指定すると、 <replaceable>first</replaceable> から <replaceable>last</replaceable> までのすべてのコマンドが表示 (<option>l</option> 指定時) または編集 ( <option>l</option> 省略時 ) されます。複数のコマンドを一度に、 各々を新たな行で開始してエディタに渡せば、複数コマンドの編集が可能です。<replaceable>first</replaceable> が示すコマンドが <replaceable>last</replaceable> が示すものより新しい場合、<option>r</option> 指定時と同じように逆の順序で表示または編集されます。次の例を見てください。1 行目の 2 つのコマンドは、2 行目のそれぞれ真下にあるコマンドと同じ意味を持ちます。<informalexample><programlisting>fc -r 10 20     fc    30 40 
fc   20 10      fc -r 40 30</programlisting>
</informalexample></para>
</listitem></itemizedlist>
<itemizedlist>
<listitem><para>一連のコマンドを範囲指定する場合、 履歴リストに存在していない値を <replaceable>first</replaceable> や <replaceable>last</replaceable> に指定してもエラーとはなりません。 <command>fc</command> は、存在している最も古いまたは新しい番号を、その代わりに使用します。 たとえば、履歴リスト中に 10 個のコマンドが記録されていて、そのコマンド番号が 1 から 10 となっているとします。このとき、以下のコマンドはいずれも 10 個のコマンドすべてを表示または編集することになります。<informalexample><programlisting>fc -l 
fc 1 99</programlisting>
</informalexample></para>
</listitem></itemizedlist>
</listitem></varlistentry>
<varlistentry><term remap="12"><replaceable>old=new</replaceable> </term><listitem><para>再実行対象のコマンド中に最初に現れた文字列 <replaceable>old</replaceable> を、他の文字列 <replaceable>new</replaceable> に置き換えます。</para>
</listitem></varlistentry>
</variablelist>
</refsect1>
<refsect1><title>出力</title>
<para><option>l</option> オプションを使ってコマンドを表示する場合、 その出力形式は次のとおりです。</para>
<informalexample>
<para><literal>"%d&bsol;t%s&bsol;n", &lt;</literal><replaceable>line number</replaceable><literal>>, &lt;</literal><replaceable>command</replaceable><literal>></literal></para>
</informalexample>
<para><option>l</option> と <option>n</option> の両オプションを指定すると、各コマンドの出力形式は 次のようになります。</para>
<informalexample>
<para><literal>"&bsol;t%s&bsol;n", &lt;</literal><replaceable>command</replaceable><literal>></literal></para>
</informalexample>
<para><replaceable>command</replaceable> が複数の行で構成されている場合、 2 行目以降は以下のように表示されます。</para>
<informalexample>
<para><literal>"&bsol;t%s&bsol;n", &lt;</literal><replaceable>continued-command</replaceable><literal>></literal></para>
</informalexample>
</refsect1>
<refsect1><title>&exam-tt;</title>
<example role="example"><title><command>history</command> と <command>fc</command> の使用例</title>
<para><programlisting>

             csh                                     ksh

% history                               $ fc -l
  1   cd /etc                             1   cd /etc
  2   vi passwd                           2   vi passwd
  3   date                                3   date
  4   cd                                  4   cd
  5   du .                                5   du .
  6   ls -t                               6   ls -t
  7   history                             7   fc -l

% !d                                    $ fc -e - d
  du .                                    du .
  262   ./SCCS                            262   ./SCCS
  336   .                                 336   .

% !da                                   $ fc -e - da
  Thu Jul 21 17:29:56 PDT 1994            Thu Jul 21 17:29:56 PDT 1994

%                                       $ alias &bsol;!='fc -e -'

% !!                                    $ !
  date                                    alias ='fc -e -'
  Thu Jul 21 17:29:56 PDT 1994

</programlisting></para>
</example>
</refsect1>
<refsect1><title>&envr-tt;
</title>
<para><command>fc</command> の実行に影響を与える環境変数 <envar>LC_CTYPE</envar> 、 <envar>LC_MESSAGES</envar> 、 <envar>NLSPATH</envar> についての詳細は、 <olink targetdocent="REFMAN5-JA" localinfo="environ-5"><citerefentry><refentrytitle>environ</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink> を参照してください。</para>
<variablelist termlength="narrow"><varlistentry><term remap="12"><envar>FCEDIT</envar> </term><listitem><para>この変数は、シェルによって展開されると、 <literal>e </literal><replaceable>editor</replaceable> オプションの <replaceable>editor</replaceable> のデフォルト値を定義します。 <envar>FCEDIT</envar> が NULL または未設定の場合、エディタとして <command>ed</command> が使用されます。</para>
</listitem></varlistentry>
<varlistentry><term><envar>HISTFILE</envar> </term><listitem><para>コマンドの履歴ファイル名を表すパス名を定義します。 <envar>HISTFILE</envar> 変数が設定されていないと、シェルはユーザーのホームディレクトリ内で <filename>.sh_history</filename> というファイルをアクセスまたは生成しようとします。この履歴ファイルへの読み込みおよび書き込みアクセスができない、または生成できない場合、シェルは何らかのメカニズムを使って 履歴が正しくとれるようにします。 (この項で述べる履歴ファイルの参照とは、 このメカニズムが使用される場合があることを前提としています。) 履歴ファイルの初期化時にのみ <command>fc</command> をアクセスするようにすることもできます。 初期化は、 <command>fc</command> または <command>sh</command> がユーザーからのコマンドに従って、最初にこのファイル、または <envar>ENV</envar> 変数が指定するファイル、または <literal>/etc/profile</literal> のようなシステム起動 ファイルからのエントリ検索もしくはエントリの追加を試みたときに 発生します。 なお履歴ファイル用の初期化処理は、 システム起動ファイルの内容に依存させることもできます。 つまり、ユーザーが設定した <envar>HISTFILE</envar> や <envar>HISTSIZE</envar> 値を効果的に上書きするようなコマンドを、このファイルに記述することが可能です。たとえば <command>set</command> <option>o</option> <literal>
nolog</literal> オプションが設定されていなければ、関数定義コマンドが 履歴ファイルに記録されます。 <envar>ENV</envar> ファイルの前に呼び出されるシステムスタートアップファイル中に、 システム管理者が関数定義を記述しておけば、 ユーザーが履歴ファイルの属性を変更するような動作が可能になる前に、 履歴ファイルが初期化されます。 シェルが呼び出されると、最初に <envar>HISTFILE</envar> 変数が参照されます。 他のシェルが呼び出されるまでは、<envar>HISTFILE</envar> に対する変更は反映されません。</para>
</listitem></varlistentry>
<varlistentry><term><envar>HISTSIZE</envar> </term><listitem><para>以前のコマンドを最大いくつまでさかのぼってアクセスできるかを 10 進数を使って定義します。この変数が設定されていないと、 128 以上の不定の値がデフォルトとして用いられます。 シェルが呼び出されると、最初に <envar>HISTSIZE</envar> 変数が参照されます。 他のシェルが呼び出されるまでは、<envar>HISTSIZE</envar> に対する変更は反映されません。</para>
</listitem></varlistentry>
</variablelist>
</refsect1>
<refsect1><title>&exit-tt;</title>
<para>以下の終了ステータスが返されます。</para>
<variablelist termlength="xtranarrow"><varlistentry><term><returnvalue>0</returnvalue> </term><listitem><para>一覧表示の正常終了</para>
</listitem></varlistentry>
<varlistentry><term><returnvalue>>0</returnvalue> </term><listitem><para>エラーが発生した。</para>
</listitem></varlistentry>
</variablelist>
<para>上記以外の場合、 <command>fc</command> により実行されたコマンドの終了ステータスがそのまま返されます。</para>
</refsect1>
<refsect1><title>&attr-tt;</title>
<para>次の属性については <olink targetdocent="REFMAN5" localinfo="attributes-5"><citerefentry><refentrytitle>attributes</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink> のマニュアルページを参照してください。</para>
<informaltable frame="all" orient="port"><tgroup cols="2" colsep="1" rowsep="1"><colspec colnum="1" colname="col1" colwidth="1*" colsep="1" align="left"><colspec colnum="2" colname="col2" colwidth="1*" align="left"><thead><row><entry align="center" valign="top">属性タイプ</entry><entry align="center" valign="top">属性値</entry></row></thead><tbody><row rowsep="0"><entry align="left" valign="top">使用条件</entry><entry align="left" valign="top">SUNWcsu</entry></row></tbody></tgroup></informaltable>
</refsect1>
<refsect1><title>&also-tt;</title>
<para><link linkend="csh-1"><citerefentry><refentrytitle>csh</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>, <link linkend="ed-1"><citerefentry><refentrytitle>ed</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>, <link linkend="ksh-1"><citerefentry><refentrytitle>ksh</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>, <link linkend="set-1"><citerefentry><refentrytitle>set</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>, <olink targetdocent="REFMAN1" localinfo="set-1f"><citerefentry><refentrytitle>set</refentrytitle><manvolnum>1F</manvolnum></citerefentry></olink>, <link linkend="sh-1"><citerefentry><refentrytitle>sh</refentrytitle><manvolnum>1</manvolnum></citerefentry></link>, <link linkend="source-1"><citerefentry><refentrytitle>source</refentrytitle>
<manvolnum>1</manvolnum></citerefentry></link>, <olink targetdocent="REFMAN5" localinfo="attributes-5"><citerefentry><refentrytitle>attributes</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink>, <olink targetdocent="REFMAN5-JA" localinfo="environ-5"><citerefentry><refentrytitle>environ</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink> </para>
</refsect1>
<!--+ 04/22/98 22:15:42
    | tagMorph:  $Id: tagMorph-engine 1.54 1998/01/19 05:44:48 $
    | tagMorph library:  $Id: libtagMorph.a 1.50 1998/01/19 22:02:51 $
    | sunman-to-solbook 1.17
    +-->
</refentry>
<?Pub *0000027508 0>
