Articles

Linuxシェルコマンドでエイリアスを使用する方法

この記事は、著者と出版社Prenticeホールの許可を得て、本のLinuxコマンド、編集者、およびシェルプログラミング第3版への実用的なガイドから転載され、すべての権利を保有しています。

エイリアスとは、シェルが別の(通常は長い)名前またはコマンドに変換する(通常は短い)名前です。 エイリアスを使用すると、単純なコマンドの最初のトークンに文字列を代入することで、新しいコマンドを定義できます。 それらは通常~/に置かれます。bashrc(bash)または~/。,tcshrc(tcsh)起動ファイルは、対話型サブシェルで使用できるようにします。

bashでは、エイリアス組み込みの構文は

alias ]

tcshでは構文は

alias ]

bash構文では、等号の周りにスペースは許可されていません。 Valueにスペースまたはタブが含まれる場合は、valueを引用符で囲む必要があります。 Tcshのエイリアスとは異なり、bashエイリアスはvalueのコマンドラインからの引数を受け入れません。, 引数を使用する必要がある場合は、bash関数を使用します。

エイリアスはそれ自体を置き換えないため、次のようなエイリアスを処理する際に無限の再帰の可能性を回避します。

alias ls='ls -F'

エイリアスをネストすることができます。 エイリアスは、非対話型シェル(つまり、シェルスクリプト)では無効になります。 エイリアスを削除するには、組み込みunaliasを使用します。, 引数なしでalias組み込みコマンドを指定すると、シェルは定義されているすべての別名のリストを表示します。

$ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i'

特定の名前の別名を表示するには、コマンドaliasの後に別名の名前を入力します。 最Linuxディストリビューション定義を少なくとも一部の別名となります。 Aliasコマンドを入力すると、どのエイリアスが有効かを確認できます。 必要のないエイリアスは、適切なスタートアップファイルから削除できます。,

エイリアス内の単一引quotationと二重引用符

エイリアスに変数が含まれている場合、エイリアス構文では単一引quotationまたは二重引用符の Valueを二重引用符で囲むと、valueに表示される変数はすべて、別名の作成時に展開されます。 Valueを一重引quotationで囲むと、別名が使用されるまで変数は展開されません。 次の例は、その違いを示しています。

PWDキーワード変数は、作業ディレクトリのパス名を保持します。, Maxはホームディレクトリで作業中に二つのエイリアスを作成します。 DirAエイリアスを作成するときに二重引用符を使用するため、シェルはこのエイリアスを作成するときに作業ディレクトリの値を置き換えます。 Alias dirAコマンドは、dirAエイリアスを表示し、置換がすでに行われていることを示します。

 $ echo $PWD /home/max $ alias dirA="echo Working directory is $PWD" $ alias dirA alias dirA='echo Working directory is /home/max' 

MaxがdirBエイリアスを作成するとき、シングルクォーテーションを使用するため、シェルが$PWD変数を展開できなくなります。, Alias dirBコマンドは、dirBエイリアスが未展開の$PWD変数を保持していることを示します。

 $ alias dirB='echo Working directory is $PWD' $ alias dirB alias dirB='echo Working directory is $PWD'

dirAおよびdirBエイリアスを作成した後、Maxはcdを使用してcarsを作業ディレクトリにし、それぞれのエイリアスをコマンドとして与えます。 二重引用符を使用して作成したエイリアスは、エイリアスを作成したディレクトリの名前を作業ディレクトリとして表示します(これは間違っています)。, 対照的に、dirBエイリアスには作業ディレクトリの適切な名前が表示されます。

 $ cd cars $ dirA Working directory is /home/max $ dirB Working directory is /home/max/cars

ヒント:シェルがエイリアスを呼び出さないようにする方法

シェルは、単純な引用符で囲まれていないコマンドのみをチェックして、エイリアスであるかどうかを確認します。 コマンドとして与えられた相対または絶対パス名および引用コマンドのチェックされません。 エイリアスを持つコマンドを指定するが、エイリアスを使用したくない場合は、コマンドの前にバックスラッシュを付けるか、コマンドの絶対パス名を指定するか、./commandとしてコマンドを指定します。,

エイリアスの例

次のエイリアスを使用すると、r前のコマンドを繰り返すか、r abcabcで始まる最後のコマンドラインを繰り返すことができます。

$ alias r='fc -s'

コマンドls -ltr頻繁に使用する場合は、ls -ltrコマンドl:

エイリアスの別の一般的な使い方は、間違いから身を守ることです。, 次の例では、rmコマンドを入力するときにzapユーティリティの対話型バージョンを置き換えます。

$ alias zap='rm -i' $ zap f* rm: remove 'fixtax.icn'? n rm: remove 'flute.ps'? n rm: remove 'floor'? n

-iオプションを使用すると、rm 削除される各ファイルを確認するように求められるため、間違ったファイルを削除することを避けることができます。 また、rmrm -iコマンドでエイリアスすることもできます。alias rm='rm ‒i'。,

次の例のエイリアスにより、シェルはls -lllコマンドを与えるたびにls ‒Flsを使用するたびにlsを置き換えます。-Fオプションを使用すると、lsはディレクトリ名の末尾にスラッシュ(/)を、実行可能ファイル名の末尾にアスタリスク(*),

この例では、別名を置き換える文字列ll(ls ‒l)自体に別名(ls)が含まれています。 エイリアスをその値で置き換えると、シェルは置換文字列の最初の単語を調べて、それがエイリアスであるかどうかを確認します。 上記の例では、置換文字列にエイリアスlsが含まれているため、最後のコマンドls ‒F ‒lが生成されます。, (再帰的なプランジを避けるために、置換テキスト内のlsは、エイリアスではありますが、もう一度拡張されません。)

=valueまたはvalueフィールドのないエイリアスのリストが与えられた場合、 alias組み込みは、定義された各エイリアスの値を表示します。, alias組み込みは、エイリアスが定義されていない場合にエラーを報告します。

$ alias ll l ls zap wx alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' alias zap='rm -i' bash: alias: wx: not found

エイリアスコマンドの前にバックスラッシュ(\)を付けることで、エイリアス置換を避けることができます。

$ \ls Test_Emacs XTerm.ad flute.ps maptax.icn Tiger fixtax.icn floor testdir

なぜなら、エイリアス置換を回避するためには、エイリアスコマンドの前にバックスラッシュ(\)を付ける必要があるからです。エイリアス名をエイリアス値に置き換えても、残りのコマンドラインは変更されず、実行されたコマンドによって引数は引き続き受け取られます。

$ ll f* -rw-r--r--. 1 max pubs 641 04-01 08:12 fixtax.icn -rw-r--r--. 1 max pubs 30015 03-01 14:24 flute.ps -rwxr-xr-x. 1 max pubs 485 09-21 08:03 floor*

unalias組み込みを使用してエイリアスを削除できます。, Zapエイリアスが削除されると、組み込みの aliasによって表示されなくなり、その後の使用によってエラーメッセージが表示されます。

$ unalias zap $ alias alias ll='ls -l' alias l='ls -ltr' alias ls='ls -F' $ zap maptax.icn bash: zap: command not found