カスタムエイリアスのみをリストする方法は?

カスタムエイリアスのみをリストする方法は?

私はZSHを使用しており、いくつかのエイリアスが定義されています(複数の罰金に保存され、ロードされます~/.zshrc)。良い結果。alias利用可能なすべてのエイリアスを一覧表示するには、このコマンドを実行します。

これで、カスタムエイリアス、つまり現在のユーザーが定義したエイリアスのみを一覧表示できるようになります。どうすればいいですか?

ベストアンサー1

~/.zshrc独自のエイリアス定義を開始する前に(または定義したすべての場所で)エイリアスのリストを記録できます。私自身ニックネーム):

aliases_before=()
printf -v aliases_before '%s=%s' "${(kv@)aliases}"

次に、現在のリストと比較します。

aliases_now=()
printf -v aliases_now '%s=%s' "${(kv@)aliases}"
print -rC1 'Now and not before:' ${aliases_now:|aliases_before}

これは$aliases、リストを公開するために特別な連想配列を使用しています。ノーマルエイリアスとその定義。グローバルエイリアスとサフィックスエイリアスを確認して$galiases調べます。$saliases

以前に定義したのと同じ方法でエイリアスをオーバーライドすると、そのエイリアスはこのリストに表示されません。


別の方法は、関数を使用してmy-aliasエイリアスを定義し、それを独自の連想配列に書き込むことです。

typeset -A my_aliases
my-alias() {
  local alias
  for alias do
    my_aliases[${alias%%=*}]=${alias#*=}
  done
  alias "$@"
}

次に:typeset my_aliasesエイリアスを確認してください。


エイリアスは csh 機能に近いです。 Bourneなどのシェルには優れた機能があります(エイリアスに使用されるすべての機能には使用できませんが)。

エイリアスを関数として定義すると(代わりにla() ls -la "$@"alias ls='ls -la'、そのファイルで定義されている関数のリストを照会できます。

例えば、

print -rC1 -- ${(k)functions_source[(Re)$HOME/.zshrc]}

~/.zshrcで定義された関数を一覧表示します。

whence -f --  ${(k)functions_source[(Re)$HOME/.zshrc]}

対応する定義も表示されます。

おすすめ記事