2>file
означает «перенаправить то, что написано в файловый дескриптор 2
, в файл file
». Дескриптор файла 2 - это «стандартная ошибка», дескриптор, в который программы записывают сообщения об ошибках. Поэтому 2>/dev/null
заглушает сообщения об ошибках.
>file
- это сокращение от 1>file
. Это означает «перенаправить то, что написано в файловый дескриптор 1
, в файл file
». Файловый дескриптор 1 - это «стандартный вывод», дескриптор, в который программы записывают информационные сообщения. Таким образом, >/dev/null
отключает информационные сообщения.
mktemp
записывает сообщения об ошибках в stderr. 2>/dev/null
заглушает сообщения об ошибках.
mktemp
записывает сгенерированное имя файла в стандартный вывод. >/dev/null
заглушает это. (Это делает звонок на mktemp
бесполезным!)
Например,
$ alias hello='perl -e'\''print STDOUT "Hello\n"; print STDERR "World\n";'\'''
$ hello
Hello
World
$ hello 2>/dev/null
Hello
$ hello >/dev/null
World
Возможно, вы захотите заменить
temp=$( mktemp 2>/dev/null )
на
temp=$( mktemp ) || exit 1
, чтобы получить полезное сообщение, вместо того, чтобы передавать плохие данные в wget
(что приведет к сбою) .