Bash: Что делает «> |»?

Я только что это записал;

$ some-command >| /tmp/output.txt 

Вертикальные трубы используются в стандартных переадресациях «piping» вывод одной команды в другую, is >| на самом деле совершенно бесполезно, поскольку это было бы так же, как просто > в этом сценарии?

  • Сплит stdin строками
  • Трубопроводы STDERR против STDOUT
  • Как скрипт bash может записать свой стандартный вывод из конвейера?
  • Как добавить метку времени в каждую строку файла журнала?
  • Изменена команда PID
  • Как добавить элемент в массив в конвейере?
  • One Solution collect form web for “Bash: Что делает «> |»?”

    Это не бесполезно – это специализированная форма простого оператора переадресации (и, возможно, смущаясь, не имеет ничего общего с трубами). bash и большинство других современных оболочек имеют опцию noclobber , которая предотвращает перенаправление или перезапись файла, который уже существует. Например, если noclobber истинно, и файл /tmp/output.txt уже существует, это должно завершиться неудачно:

     $ some-command > /tmp/output.txt 

    Однако вы можете явно переопределить настройку noclobber с помощью >| redirection operator – перенаправление будет работать, даже если noclobber установлен.

    Вы можете узнать, установлен ли noclobber в вашей текущей среде с помощью set -o .

    Для исторической заметки, как опция «noclobber», так и ее байпасные функции происходят из csh (конец 70-х). ksh скопировал его (начало 80-х), но использовал >| вместо >! , POSIX ksh синтаксис ksh (так что все оболочки POSIX, включая bash, более новые производные золы, используемые как sh в некоторых системах, поддерживают его). Zsh поддерживает оба синтаксиса. Я не думаю, что это было добавлено к любому варианту оболочки Bourne, но я могу ошибаться.

    Linux и Unix - лучшая ОС в мире.