引数を Bash エイリアス コマンドに入れるにはどうすればいいですか?

引数を Bash エイリアス コマンドに入れるにはどうすればいいですか?

私は通常、bashrc に次の単純なエイリアスを持っています:

alias g="grep --color=always --exclude-dir=\*.svn\*"

しかし、今は GNU grep 2.5 しかインストールされていないシステムで作業する必要があるので、--exclude-dir議論の余地はありません。

今、私は次のようなものが必要です:

alias g="grep --color=always $1 $2 | grep -v .svn"

もちろん、引数はエイリアスの末尾に追加されます。$1 と $2 は、強い引用符が付いている場合でも、エイリアスが呼び出されたときではなく、エイリアスが作成されたときに解析されます。

追加のスクリプトや関数に頼らずにこれを解決できますか?

答え1

いいえ、できません。bash マニュアルには次のように記載されています。

`csh' のように、置換テキストで引数を使用するメカニズムはありません。引数が必要な場合は、シェル関数を使用する必要があります (*シェル関数:: を参照)。

関数はこれに適したもので、エイリアスと同じくらい簡単に記述できます。この場合、

function g () { grep --color=always "$1" "$2" | grep -v .svn ; }

関連情報