/ / Що робить> | робити в баш? - баш

Що робить> | робити в баш? - баш

У цій статті, Як створити патч-файл для RPM, є така команда:

diff -ru base-1.4.4-orig base-1.4.4 >| $HOME/rpmbuild/SOURCES/base-1.4.4-f12.patch

Оскільки вихідний файл записується у файл, це просто оператор перенаправлення > працює добре для мене.

Чи означає цей оператор перенаправлення до труби? Якщо так, то як перенаправлення до труби відрізняється від просто перенаправлення до файлу або просто труби до процесу?

Відповіді:

6 за відповідь № 1

Виконавши команду

set -o noclobber

або еквівалент

set -C

ви можете викликати bash, щоб відмовитися від запису на існуючі файли при перенаправленні виводу.

Використовуючи >| а не > перевизначає цей параметр.

Список літератури:

Або біжи info bash (якщо він встановлений у вашій системі) і шукати >|:

s>|

(Якщо ви знайомі з csh та / або tcsh, bash >| (більший ніж вертикальний бар) схожий на csh >! (більше, ніж знак оклику).


2 для відповіді № 2

З bash manpage:

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