user215997
user215997

Reputation: 1327

What does "< /dev/null >& /dev/null" at the end of a command do?

One of the scripts I run over ssh was hanging and I found a solution for it on this site: http://www.snailbook.com/faq/background-jobs.auto.html

The site resolves the problem by adding this to the end of the command:

xterm < /dev/null >& /dev/null &

I think I know what part of it does, but can someone help explain?

The first part:

# For stdin, read from /dev/null
< /dev/null

The second part:

>& /dev/null

What does >& do? I've seen 2>&1 which is direct STDERR to STDOUT, but when there are no numbers, does that mean redirect everything to /dev/null?

Upvotes: 13

Views: 18638

Answers (3)

Thomas
Thomas

Reputation: 1160

Googling for 'stream redirection >& ' will let you find http://tldp.org/LDP/abs/html/io-redirection.html

which, among other things, tells you

  >&j

  # Redirects, by default, file descriptor 1 (stdout) to j.
  # All stdout gets sent to file pointed to by j.

Maybe this already helps.

Or search the help of standard unix shells, like bash, for stream redirection.

Rgds,

Thomas

Upvotes: 1

With ssh another way (to achieve what you probably want) is to pass the -f flag, i.e.

ssh -X -f your.host.org xterm

Upvotes: 1

Michael Hoffman
Michael Hoffman

Reputation: 34324

Yes, this means redirect both stdout and stderr to /dev/null.

From info "(bash)Redirections":

Redirecting Standard Output and Standard Error

Bash allows both the standard output (file descriptor 1) and the standard error output (file descriptor 2) to be redirected to the file whose name is the expansion of WORD with this construct.

There are two formats for redirecting standard output and standard error:

&>WORD

and

>&WORD

Of the two forms, the first is preferred. This is semantically equivalent to

>WORD 2>&1

Upvotes: 12

Related Questions