Я понимаю, что стандарт для перенаправления - /dev/null
, но почему бы не использовать /dev/zero
? Разве это не имеет такой же эффект?
Другой вопрос, что все 1>>
2>>
&>>
>>&
и что не означают для перенаправления
Использование /dev/zero
имеет тот же эффект, что и /dev/null
при перенаправлении вывода на него. Нет причин не использовать его. Последнее просто чаще встречается в примерах и, следовательно, стало более популярным.
Что касается перенаправления, вы должны проверить руководство вашей оболочки. В вики Bash Hackers есть учебник по перенаправлению и другая справочная страница.
В принципе,
>
перенаправляет вывод в файл
>>
при перенаправлении добавляет к файлу (или создает его, когда он не существует), тогда как >
обрезает и, следовательно, удаляет содержимое файла
n>
, где n
- номер дескриптора файла, перенаправляет вывод этого дескриптора в файл. Обычно используются 1
и 2
, соответственно stdout
и stderr
.
m>&n
перенаправляет вывод файлового дескриптора m
на n
, так что вы можете объединить, например, stdout
и stderr
: > /dev/null 2>&1
&>
также объединяет stdout
и stderr