Эта bash
noclobber
опция предотвращает перезапись файлов с перенаправлением. Но иногда я очень хочу. csh
имеет аналогичную опцию, и ее можно переопределить, поставив !
перед именами файлов. Есть ли способ сделать это с bash
?
Да. Добавьте |
к оператору перенаправления формы >|
. Это в п. 3.6.2 Справочного руководства Bash , см.
Если оператор перенаправления имеет значение «>», а опция noclobber для встроенной функции set включена, перенаправление завершится неудачно, если существует файл, имя которого является результатом расширения слова и является обычным файлом. Если оператор перенаправления «> |» или оператор перенаправления «>» и опция noclobber не включена, перенаправление выполняется даже в том случае, если существует файл, названный словом.
Посетите этот учебник о опции noclobber . Это может помочь
Используйте |
(«труба») bash
вместо вместо !
(«взрыв»), как в случае csh
. Например:
echo done >| out
Обратите внимание , что если вы хотите перенаправить stderr
к stdout
и переопределения noclobber
, ни , >|&
ни &>|
будет работать; используйте вместо этого длинную форму:
cmd-with-errors done >| out 2>&1
err &>| out
не работает?