bashの「noclobber」オプションをオーバーライドするにはどうすればよいですか?


17

このbash noclobberオプションは、リダイレクトでファイルを上書きすることを防ぎます。しかし、時々私は本当にしたいです。csh同様のオプションがあり!、ファイル名の前にaを置くことで上書きできます。これを行う方法はありますbashか?

回答:


19

はい。|リダイレクト演算子をフォームに追加し>|ます。これは、Bashリファレンスマニュアルの3.6.2節、qvにあります。

リダイレクト演算子が '>'で、組み込みビルトインのnoclobberオプションが有効になっている場合、wordの展開に起因する名前のファイルが存在し、通常のファイルである場合、リダイレクトは失敗します。リダイレクト演算子が「> |」であるか、リダイレクト演算子が「>」でnoclobberオプションが有効になっていない場合、wordという名前のファイルが存在する場合でもリダイレクトが試行されます。

noclobberオプションについては、このチュートリアルをご覧ください。助けになるかもしれません。


3

で使用する|( " bang")のbash代わりに、( "pipe")を使用!しますcsh。例えば:

echo done >| out

にリダイレクトstderrstdout オーバーライドする場合はnoclobber、どちら>|&も機能しない&>|ことに注意してください。代わりに長い形式を使用してください。

cmd-with-errors done >| out 2>&1

なぜerr &>| out機能しないのか知っていますか?
サンヒョン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.