set -o noclobber
対話型シェル()でnoclobberを設定すると、プロセスオーバーライドが機能しないことがわかりました。
# echo hello > >(cat)
-bash: /dev/fd/62: cannot overwrite existing file
noclobberを永久にオフにするとうまくset +o noclobber
いきます。
# echo hello > >(cat)
hello
私は>|
次のようにnoclobberをオーバーライドしようとしました。
echo hello > >|(cat)
-bash: syntax error near unexpected token `>|'
ノークローバーを一時的に無効にする方法はありますか?
更新:ファイルが「破損」していないため、出力がプロセスの置き換えに進むときにnoclobberが適用されるのは実際には合理的ではないようです。 noclobberが誤って開かれている場合は、「既存のファイルを上書きできません」エラーを防ぐために、常にnoclobberを使用して>|
オーバーライドすることをお勧め2>|
し、安全な習慣のようです。
答え1
ファイルと同じ方法でnoclobberをオーバーライドします>|
。
# echo hello >| >(cat)
hello
プロセス交換()の一部ではない>|
リダイレクトシンボル()を伴う必要があります。>
>(…)