Что делает "</ dev / null> & / dev / null" в конце команды? - PullRequest
11 голосов
/ 21 ноября 2011

Один из скриптов, которые я запускал через 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?

Ответы [ 3 ]

12 голосов
/ 21 ноября 2011

Да, это означает, что перенаправить как stdout, так и stderr в /dev/null.

From info "(bash)Redirections":

Перенаправление стандартного вывода и стандартной ошибки

Bash позволяет перенаправлять как стандартный вывод (дескриптор файла 1), так и стандартный вывод ошибок (дескриптор файла 2) в файл, имя которого является расширением WORD с помощью этой конструкции.

Существует два формата перенаправлениястандартный вывод и стандартная ошибка:

&>WORD

и

>&WORD

Из двух форм предпочтительной является первая.Это семантически эквивалентно

>WORD 2>&1
1 голос
/ 21 ноября 2011

С помощью ssh другим способом (для достижения того, чего вы, вероятно, хотите) является передача флага -f, т.е.

ssh -X -f your.host.org xterm
0 голосов
/ 21 ноября 2011

Поиск в Google по 'перенаправлению потока> &' позволит вам найти 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,

Thomas

...