SUBST(1)

名前
subst - ファイル内の定義の置き換え

形式
subst [ -e editor ] -f substitutions victim ...

機能説明
subst はソフトウェアのファイルの内容を置き換えます。 これは、ローカルな設定にカスタマイズするには適した方法となります。 各 victim ファイルは substitutions ファイルの内容にしたがって変更されます。

substitutions ファイルには置換する内容毎に一行の情報が含まれています。 各行は一つ以上のタブで区切られた二つのフィールドで構成されます。 第一フィールドは置換する 名前 で、第二フィールドはその 値 です。 いずれのフィールドにも ``#'' が含まれてはいけなくて、``&'' や ``\'' 等のエディタのメタ文字も使用してはいけません。 特に名前は英数文字に制限することがベストです。 ``#'' で始まる行はコメントで、無視されます。

各 victim について、置換を行う行(target 行)には prototype 行が先になければいけません。 prototype 行はプログラムがファイルを後で処理する場合にコメントとなるようになっていなければいけません。 prototype 行は ``=()<'' と ``>()='' で囲まれたターゲットの ``prototype'' を含んでいなければいけません。 prototype 行のその他の部分は無視されます。 subst は prototype を抜きだし、``@<'' と ``>@'' で囲まれた置換するすべての名前をその値に変え、 ターゲット行をそれに置き換えます。

オプション

-e  置換は sed(1) を使用して行い、これは /bin あるいは /usr/bin のいずれかのディレクトリになければいけません。 別のコマンドを指定する場合、``-e'' オプションを使用します。

使用例

substitutions ファイルが次のようになっていて、

    FIRST	111
    SECOND	222

victim ファイルが次のようになっていれば、

    x = 2;
    /* =()<y = @<FIRST>@ + @<SECOND>@;>()= */
    y = 88 + 99;
    z = 5;

``subst -f substitutions victim'' により、victim は次のようになります。

    x = 2;
    /* =()<y = @<FIRST>@ + @<SECOND>@;>()= */
    y = 111 + 222;
    z = 5;

ファイル
victimdir/substtmp.new    新たに作成されるバージョン
victimdir/substtmp.old    リネームされた古いバージョン

関連項目
sed(1)

診断
テンポラリファイルを作成できないか、すでに存在していれば、メッセージを出力し終了します。

履歴
トロント大の Henry Spencer によって記述されました。 日本語訳は kondou@uxd.fc.nec.co.jp によって行われました。

1991 年 7 月に Rich $alz が ``-e'' オプションを追加しました。

バグ
置換 されるファイルを作成する場合、ダミーのターゲット行を prototype 行の後に挿入することを忘れがちです。 挿入し忘れていると、subst は prototype 行に続く行を削除してしまいます。