Bashエイリアスを拡張する方法

Bashエイリアスを拡張する方法

実際には、同じ名前の別のエイリアスを拡張するエイリアスをBashでどのように生成しますか?

なぜ:

私はかつて次のことをGREP_OPTIONSしました。.bashrc

GREP_OPTIONS="-I --exclude=\*~"

setup-java.shまた、いくつかのJavaプロジェクトを操作する前に呼び出すスクリプト(例)があります。これには次の行が含まれます。

GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=classes"

Sassも使用している場合は、setup-sass.sh次の行を含む呼び出しを行います。

GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=\*/.sass-cache"

しかし、GREP_OPTIONS廃止明らかに、標準的な解決策はエイリアスまたはいくつかのスクリプトを作成することです。

ベストアンサー1

Bash は、エイリアス値を次の場所に保存します。名前の人 BASH_ALIASES:

$ alias foo=bar
$ echo ${BASH_ALIASES[foo]}
bar

そしてパラメータ拡張 最後に設定されたエイリアス(存在する場合)またはデフォルト値を取得できます。

alias grep="${BASH_ALIASES[grep]:-grep} -I --exclude=\*~"

次に、次の操作を行いますsetup-java.sh

alias grep="${BASH_ALIASES[grep]:-grep} -I --exclude=\*~  --exclude-dir=classes"

...ついにsetup-sass.sh

alias grep="${BASH_ALIASES[grep]:-grep} -I --exclude=\*~ --exclude-dir=\*/.sass-cache"

これらの3行を呼び出すと、希望の結果が得られます。

$ echo ${BASH_ALIASES[grep]:-grep}
grep -I --exclude=\*~ -I --exclude=\*~ --exclude-dir=classes -I --exclude=\*~ --exclude-dir=\*/.sass-cache

おすすめ記事