Bash:2>&1 是啥意思? [复制]

Posted

技术标签:

【中文标题】Bash:2>&1 是啥意思? [复制]【英文标题】:Bash: what does 2>&1 mean? [duplicate]Bash:2>&1 是什么意思? [复制] 【发布时间】:2014-04-08 07:54:50 【问题描述】:

见过

2>&1

在 bash 命令的末尾。这是什么意思?是某种输出重定向吗?

谢谢!

【问题讨论】:

【参考方案1】:

短:它将所有在STDERR 上的输出重定向到STDOUT

> 是一个重定向运算符,它以最简单的形式将STDOUT 上的所有输出重定向到一个文件中。

test.sh > file

如果您在 > 前面加上一个数字,它将使用此特定文件描述符的输出 - 在您的示例中为 2。 1 是标准输出,2 是标准错误。

test.sh 2> file.err

会将描述符 2 = stderr 的所有输出重定向到文件。

如果您使用特殊符号 &1 而不是文件名,则输出不会写入新文件,而是写入具有给定编号的文件描述符,在本例中为 1。 所以:

test.sh 2>&1

从文件描述符 2 (stderr) 重定向到文件描述符 1 (stdout)

如果您想收集所有输出,无论它发生在哪里(stdout 或 stderr)以进行进一步处理,例如管道到另一个程序,这很有用。

【讨论】:

【参考方案2】:

1 是标准输出。 2 是标准错误。

2>&1 只是将发送到 stderr 的所有内容指向 stdout。

您将获得有关此的更多信息:here

【讨论】:

以上是关于Bash:2>&1 是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

这里的“2>&1”是啥意思? [复制]

在shell中,“ 2>&1 ”是啥意思?

$#、$1 和 $2 是啥意思? [复制]

在shell里面>&2是啥意思?

bash中的冒号破折号“:-”是啥意思[重复]

ruby 2.1.2中的“#$e”是啥意思