Я понимаю, что стандарт для перенаправления - /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