在命令末尾添加"< /dev/null >& /dev/null"是做什么用的?

13

我在通过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,它将标准错误重定向到标准输出,但如果没有数字,是否表示将所有内容重定向到/dev/null


有没有类似这个脚本的Windows版本? - MOB
3个回答

12

是的,这意味着要将标准输出和标准错误都重定向到/dev/null。

根据 info "(bash)Redirections":

重定向标准输出和标准错误

Bash允许使用此结构将标准输出(文件描述符1)和标准错误输出(文件描述符2)重定向到WORD扩展后其名称为文件的内容。

有两种格式可以重定向标准输出和标准错误:

&>WORD

>&WORD

在这两种形式中,第一种更受推荐。这在语义上等价于

>WORD 2>&1

但是什么是/dev/null?我猜它是将所有输出重定向到空(没有文件)? - 1.21 gigawatts

1

使用ssh命令的另一种方法(可能实现您想要的)是传递-f标志,即:

ssh -X -f your.host.org xterm

1

在谷歌上搜索“流重定向>&”将让您找到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 shell的帮助,比如bash,以进行流重定向。
问候,
托马斯

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接