あるエイリアスは別のエイリアスに影響しますか?


14

.bash_aliasesファイルにはまだ多くのエイリアスが設定されていません。最近になって、それらがどれほど便利かを発見しました。

自分がエイリアスに夢中になっているのを見ることができるので、ファイルが扱いにくくなる前に、非常に簡単な質問をして何かを明確にしたいと思います。あるエイリアスは別のエイリアスに影響しますか、またはエイリアスは常に元のコマンドに戻りますか?

例はこれをより明確にするかもしれません:

lsエイリアスを作成しましたls -lF。私もエイリアスにdしたいとしましょうls -l | grep -E "^d"d今使用ls -lFの代わりにls?もしそうなら、それは.bash_aliases構成ファイルの順序の問題ですか?

man alias 私を啓発しませんでした

回答:


20

から エイリアス(Bashマニュアルのセクション6.6)

各単純コマンドの最初の単語は、引用符で囲まれていない場合、エイリアスがあるかどうかが確認されます。その場合、その単語はエイリアスのテキストに置き換えられます。

これ、エイリアスを定義するときではなく、エイリアスを使用するときに起こります。次に例を示します。

$ alias a1='a2 hello'
$ alias a2='echo'
$ a1
hello
$ unalias a2
$ a1
bash: a2: command not found

1
この例(およびBashマニュアルへのリンク)にも感謝します。私はマニュアルから引用しています:「エイリアスの定義と使用に関する規則はやや混乱しています...ほとんどすべての目的のために、シェル関数はエイリアスよりも好まれます。」シェル関数を実行する方法を学んだ方がいいと思います。:)
boehj

1
はい。エイリアスを使用すると、一般的なコマンドの入力を節約できますが、それを処理するカスタム関数をリモートで複雑に作成する場合でも、通常はより良いオプションです。
カレブ

@Caleb @Gilles-皆さんありがとう。ところで、ls = 'ls --color'とても便利だと思います。このサイトが大好きです。)
boehj

2
@boehj:経験則では、コマンドの名前または小さなバリエーションを使用して、コマンドに自動引数を使用する場合はエイリアスを使用し、それ以外の場合は機能します。、、しかしalias ls='ls --color'alias cp='cp -i'より複雑なもののための機能。特に、d引数をに渡すことができるように、関数を作成しますls[コメントは、brainoを混乱修正するために感謝の@cjm転載]
ジル「SO-停止されて悪」

@Gilles-OK、今日の私の仕事dはシェル関数として複製する方法を自分自身に教えることです。
-boehj
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.