Что делает "</dev/null> &/dev/null" в конце команды?
Один из скриптов, которыми я управлял ssh, был висит, и я нашел для него решение на этом сайте:
http://www.snailbook.com/faq/background-jobs.auto.html
Сайт решает проблему, добавив это в конец команды:
xterm < /dev/null >& /dev/null &
Я думаю, что знаю, что из этого делает, но может ли кто-нибудь помочь объяснить?
Первая часть:
# For stdin, read from /dev/null
< /dev/null
Вторая часть:
>& /dev/null
Что делает >&
? Я видел 2>&1
, который является прямым STDERR для STDOUT, но когда нет чисел, означает ли это перенаправление всего на /dev/null
?
Ответы
Ответ 1
Да, это означает перенаправление как stdout, так и stderr на /dev/null.
От info "(bash)Redirections"
:
Перенаправление стандартного вывода и стандартная ошибка
Bash допускает как стандартный вывод (дескриптор файла 1), так и стандартный вывод ошибки (файловый дескриптор 2) для перенаправления в файл чье имя является расширением WORD с помощью этой конструкции.
Существует два формата для перенаправления стандартного вывода и стандартной ошибки:
&>WORD
и
>&WORD
Из двух форм предпочтительным является первое. Это семантически эквивалентно
>WORD 2>&1
Ответ 2
С ssh
другим способом (для достижения того, что вы, вероятно, захотите), является передача флага -f
, т.е.
ssh -X -f your.host.org xterm
Ответ 3
Googling для 'перенаправления потоков > & 'позволит вам найти
http://tldp.org/LDP/abs/html/io-redirection.html
который, между прочим, сообщает вам
>&j
# Redirects, by default, file descriptor 1 (stdout) to j.
# All stdout gets sent to file pointed to by j.
Возможно, это уже помогает.
Или найдите помощь стандартных оболочек unix, например bash, для перенаправления потока.
Rgds,
Томас