既存のエイリアスからエイリアスを作成する

既存のエイリアスからエイリアスを作成する

2つの別々のファイルがあり、どちらもmyで始まり、.zshrcそのうちの1つ(最初のファイル)がこのエイリアスを定義します。

alias wget='wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"'

問題は、この次のものもwgetエイリアスを定義することです。

alias wget='wget -c'

どういうわけか、2番目のエイリアスが以前のエイリアスを使用して独自に定義されるようにする必要があります。私は似たようなものを使用しようと思っていましたが、$(wget)それは単に再帰ループに陥りました。新しいエイリアスを定義するときに、同じ名前の既存のエイリアスを参照するための良い方法はありますか?

何らかの方法で最初のエイリアスの内容を取得し、新しいフラグに関連付けてコマンドの前にエイリアスがまだない場合は、以前のエイリアスに基づいて構築することを考えることもできます。

注:別名の1つの名前を変更し、次の別名で参照できることを知っていますが、それは私が望むものではありません。また、単に手動で1つのエイリアスとして定義したくありません。新しいエイリアスを定義するときは、古いエイリアス定義を自動的に使用して互いにリンクする方法が必要です。

このようなことをどのように実装できるのかご存知ですか?それとも、このようなことをするより良い方法がありますか?

ベストアンサー1

あなたはそれを使用することができますaliasesハッシュテーブルそのために:

% zmodload -F zsh/parameter p:aliases
% alias wget='wget --hsts-file="$XDG_CACHE_HOME/wget-hsts"'
% alias wget="$aliases[wget] -c"
% alias
wget='wget --hsts-file="$XDG_CACHE_HOME/wget-hsts" -c'

以前にコマンドにエイリアスが指定されていない場合は、実際のコマンドに戻るためにいくつかの処理を実行する必要があります。

これはを使用して達成できます${aliases[wget]:-wget}。次に空の場合、$aliases[wget]リテラル値が使用されます。wget

おすすめ記事