ネストしたエイリアスをソースコマンドで確認する

ネストしたエイリアスをソースコマンドで確認する

あなたの便宜のためにいくつかのエイリアスを作成しました。しかし、今は役に立つコマンドを送って助ける必要がありますが、ここにはエイリアスがいっぱいです。私はこれを試しましたが、type u返されるものは

up && ap upgrade -y --show-progress && r && ap check && ap autoclean

エイリアスは次のとおりですu

alias a='alias'
a ap='apt-get'
a r='ap autoremove -y'
a up='ap update'

答え1

作成した別名(実行準備完了)を使用してCtrl-Alt-eコマンドを押します。Bashが拡張Ctrl-Alt-ereadlineコマンドのデフォルトバインディングですshell-expand-line

BashにプッシュするたびにCtrl-Alt-eエイリアスレイヤーが1つずつ拡張されるため、必要なだけコマンドが拡張されるまで繰り返しプッシュします。

Metaキーがない場合はAlt交換するか、を押しますEscape Ctrl-e

まだ一つあります。alias-expand-line関数はデフォルトではバインドされず、エイリアスのみが拡張されます。

答え2

私も同様の質問をしました。スタックオーバーフロー(おそらくUnixとLinuxでリリースする必要があります)。

私の解決策はbash関数を書くことでした。

xtrace() {
    local eval_cmd
    printf -v eval_cmd '%q' "${@}"
    { set -x
      eval "${eval_cmd}"
    } 2>&1 | grep '^++'
    return "${PIPESTATUS[0]}"
}

これにより、xtrace u次の内容が印刷されます。

++ apt-get update
++ apt-get upgrade -y --show-progress
++ apt-get autoremove -y
++ apt-get check
++ apt-get autoclean

これは実際に渡したエイリアスを実行するので、望ましくない場合はu@MichaelHomerのソリューションがより良いアプローチです。また、チェーンによって&&エイリアスのコマンドのいずれかがゼロを返さない場合、実行は停止し、これまで拡張されたエイリアスのみが表示されます。

関連情報