Як я можу замінити баш-опцію "noclobber"?


17

Ця bash noclobberопція не дозволяє перезаписати файли з перенаправленням. Але іноді дуже хочеться. cshмає подібний варіант, і його можна перекрити, поставивши !перед назвою файлів. Чи можна це зробити bash?

Відповіді:


19

Так. Додайте |до форми оператора перенаправлення >|. Про це йдеться в § 3.6.2 Довідкового посібника Баша , кв

Якщо оператором переадресації є '>', а опція noclobber для встановленого набору ввімкнена, перенаправлення буде невдалим, якщо файл, ім'я якого в результаті розширення слова існує, є звичайним файлом. Якщо оператором переадресації є '> |', або оператором переадресації є '>', а опція noclobber не ввімкнена, спробу перенаправлення намагається навіть у тому випадку, якщо файл, названий словом, існує.

Перегляньте цей підручник про опцію noclobber . Це може допомогти.


3

Використовуйте |("труба") в bash, а не !("удар") так, як у вас csh. Наприклад:

echo done >| out

Зверніть увагу , що якщо ви хочете перенаправити stderrдо stdout і перевизначення noclobber, ні , >|&ні &>|працюватиме; використовувати замість нього довгу форму:

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

Чи знаєте ви, чому err &>| outне працює?
Sanghyun Lee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.