バッシュを使う
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"