bashrcのエイリアス空間

bashrcのエイリアス空間

バッシュを使う

1行にスペースで区切ってドッカーIDのみを印刷するコマンドを作成しました。

docker ps -a | grep -E '^[a-z0-9]{12}' -o | awk '{printf "%s ",$0} END {print ""}'

それはうまくいったので、エイリアスにすることにしました。

まずここでは空白が"%s "問題のようで省略することにしました。

新しいコマンドは次のとおりです。

docker ps -a | grep -E '^[a-z0-9]{12}' -o | awk '{printf "%s\ ",$0} END {print""}'

エラーなしで.bashrcを取得しましたが、エイリアスを実行しようとすると、次のエラーが発生します。

{printf %s ,-bash} END {print}
        ^ syntax error

私はこれを見たことがある魚:エイリアスのスペースしかし、私は魚を使用していません

編集してください。私のエイリアスは次のとおりです。

alias dockerid="docker ps -a | grep -E '^[a-z0-9]{12}' -o | awk '{printf "%s\ ",$0} END {print""}'"

一重引用符を使用すると、sourceコマンドは失敗します。

ベストアンサー1

だからこそbashマニュアルによると:

ほとんどすべての目的で、シェル関数はエイリアスより優れています。

dockerid() {
    docker ps -a \
    | grep -o -E '^[a-z0-9]{12}' \
    | awk '{printf "%s ",$0} END {print ""}'
}

エイリアス参照地獄は次awkの代わりに消えますが、paste

alias dockerid="docker ps -a | grep -o -E '^[a-z0-9]{12}' | paste -d ' ' -s"

おすすめ記事