エイリアス拡張のインポート(bashとzshから)

エイリアス拡張のインポート(bashとzshから)

エイリアスの拡張子を取得したい。

たとえば、次のような場合があります。

alias g=hub
alias cdh='cd $HOME'

私は以下が欲しい:

expand_alias g==hub

expand_alias cdh==cd $HOME

難しいのは、両方のシェルの出力が互いに異なることです。 bash:

$ alias g cdh
alias g='git'
alias cdh='cd $HOME'

ジシュ語:

% alias g cdh
g=hub
cdh='cd $HOME'

alias 周囲にプレフィックスと引用符がないことに注意してくださいhub

ベストアンサー1

あなたはzsh使用することができます

get_alias() {
  printf '%s\n' $aliases[$1]
}

を使用するとbash(POSIXモードではないと仮定し、この場合aliasと同様の出力が提供されますzsh)、次のことができます。

get_alias() (
  eval '
    alias() { printf "%s\n" "${1#*=}"; }'"
    $(alias -- "$1")"
)

aliasaliasデフォルトでは、最初の引数の最初の右側の内容を印刷する関数でオーバーライドした後、出力を評価します。=

ほとんどのPOSIXシェルと互換性があるように、同様のアプローチを使用できますzshbash

get_alias() {
  eval "set -- $(alias -- "$1")"
  eval 'printf "%s\n" "${'"$#"'#*=}"'
}

おすすめ記事