C シェルにおける別名置換

別名 は、コマンドまたはコマンド文字列に割り当てられる名前です。 C シェルでは、別名を割り当てて、これをコマンドのように使用できます。 シェルはユーザーが定義した別名のリストを維持します。

シェルはコマンド・ラインをスキャンした後、コマンドを別個のワードに分け、各コマンドの最初のワードを左から右へチェックして、別名があるかどうかを確認します。 別名が検出されると、シェルはヒストリー・メカニズムを使用して、別名のテキストを、別名が参照するコマンドのテキストと置き換えます。 その結果作成されたワードによって、コマンドと引数リストが置き換えられます。 ヒストリー・リストに対して参照が行われなければ、引数リストは変更されません。

alias unalias の組み込みコマンドは、別名リストを確立し、表示し、変更します。 以下のフォーマットで alias コマンドを使用します。
alias [Name [WordList]] 

オプションの Name 変数は、指定した名前の別名を指定します。 WordList 変数でワード・リストを指定すると、コマンドはそれを Name 変数の別名として割り当てます。 オプションの変数のどちらも指定しないで alias コマンドを実行すると、すべての C シェルの別名が表示されます。

ls コマンドの別名が ls -l である場合は、以下のコマンド
ls /usr
が次のコマンドと置き換えられます。
ls -l /usr
引数リストは、別名を持つコマンド内のヒストリー・リストへの参照が存在しないので、そのままです。 同様に、lookup コマンドの別名が以下のような場合には、

grep ¥!^ /etc/passwd
シェルは lookup bill を以下のものと置き換えます。
grep bill /etc/passwd
この例では、!^ はヒストリー・リストを参照し、シェルはそれを入力行の最初の引数 (この場合は bill) に置き換えます。
別名では、特殊なパターン・マッチング文字を使用できます。 以下のコマンドは、
alias lprint 'pr &bslash2.!* >
 
> print'
ライン・プリンターに対してその引数をフォーマットするコマンドを作成します。 ! キャラクターは、単一引用符の使用により別名内ではシェルから保護されているので、pr コマンドが実行されるまでは、別名は展開されることはありません。

シェルは別名を見つけると、入力テキストのワード変換を行い、変換後の入力行に対して再び別名プロセスを開始します。 次のテキストの最初のワードが前のテキストと同じである場合は、別名にフラグを立てて別名処理を終了することにより、ループは回避されます。 それ以降の他のループは検出され、エラーとなります。