Этот код:
command > filename 2>&1
> filename
перенаправляет stdout
наfilename
2>&1
)перенаправляет stderr
наstdout
(сейчасfilename
)(файловый дескриптор 1 используется по умолчанию, поэтому >
является сокращением от1>
)
Другой распространенный пример:
command >>/dev/null 2>&1
перенаправляет stderr
и stdout
на /dev/null
... что значит наникуда. Вещи, отправленные на /dev/null
, не сохраняются, не кэшируются и не запоминаются каким-либо образом.
Они просто отправлены « в никуда » и забыты.Это способ запуска программ и обеспечения того, чтобы они не производили вывода и никогда не отображались в командной строке или в файле журнала.
Я довольно часто встречаю вопросы такого типа... в основном потому, что мне пришлось искать их самому, так как я не программировал годами. Вот некоторая полезная информация от ABSG:
"Redirection simply means capturing output from a file, command, program, or script and sending it as input to another file, command, program, or script."
2>&1
# Redirects stderr to stdout.
command >>filename 2>&1
# Appends both stdout and stderr
#+ to the file "filename"...
ABSG :Расширенное руководство по написанию сценариев Bash:Ссылка Глава 20 выше — это ссылка на страницу перенаправления ввода-вывода в документе с открытым исходным кодом tldp.org под названием Advanced Bash Scripting Guide Менделя Купера. Он указан как «глубокое -исследование искусства написания сценариев оболочки. " и я абсолютно согласен. Это потрясающий ресурс, в котором есть масса ответов на всевозможные сумасшедшие ситуации.
Другие ценные ресурсы:В текущем/поддерживаемом разделе(есть много ценных ресурсов в нескольких удобных форматах, таких как html, pdf, текст и т. д.)в Руководствах проекта документации по Linux страница. Вот некоторые из них, которые я нашел полезными: