Bash: Что делает “> |”, делают?

Или это является двоичным, или это не. Если Ваша вещь действительно не является двоичной, но просто сложный текст, вот пара решений.

Во-первых, Вы много дистрибутивов Linux идете с названной утилитой dos2unix то, что можно работать на файле для преобразования стиля окончания строки:

$ dos2unix original_file converted_file

Вы могли также сделать это с tr как так:

$ tr -d '\r' < orignal_file > converted_file

Или с жемчугом:

$ perl -pne 's/\r$//g' < orignal_file > converted_file
152
24.09.2012, 17:34
1 ответ

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

$ some-command > /tmp/output.txt

Однако можно явно переопределить установку noclobber с >| оператор перенаправления - перенаправление будет работать, даже если noclobber установлен.

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

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

229
27.01.2020, 19:28
  • 1
    @sch - ре Ваш исторический очерк (благодарит за дополнительную информацию, btw) - FreeBSD sh имеет noclobber, с тех пор о мае 2002. –  D_Bye 24.09.2012, 13:42

Теги

Похожие вопросы