Как мне переопределить опцию bash «noclobber»?


17

Эта bash noclobberопция предотвращает перезапись файлов с перенаправлением. Но иногда я очень хочу. cshимеет аналогичную опцию, и ее можно переопределить, поставив !перед именами файлов. Есть ли способ сделать это с bash?

Ответы:


19

Да. Добавьте |к оператору перенаправления формы >|. Это в п. 3.6.2 Справочного руководства Bash , см.

Если оператор перенаправления имеет значение «>», а опция noclobber для встроенной функции set включена, перенаправление завершится неудачно, если существует файл, имя которого является результатом расширения слова и является обычным файлом. Если оператор перенаправления «> |» или оператор перенаправления «>» и опция noclobber не включена, перенаправление выполняется даже в том случае, если существует файл, названный словом.

Посетите этот учебник о опции noclobber . Это может помочь


3

Используйте |(«труба») bashвместо вместо !(«взрыв»), как в случае csh. Например:

echo done >| out

Обратите внимание , что если вы хотите перенаправить stderrк stdout и переопределения noclobber, ни , >|&ни &>|будет работать; используйте вместо этого длинную форму:

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

Вы знаете, почему err &>| outне работает?
Санхьюн Ли
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.