Bash:2>&1 是什么意思?
简单来说,它会将所有在 STDERR
上输出的内容重定向到 STDOUT
。
>
是一个重定向运算符,它可以将所有 STDOUT
上的输出简单地重定向到一个文件中。
test.sh > file
如果你在前面加上一个数字,则它将使用来自特定文件描述符的输出 - 在你的例子中是 2。其中 1 表示 stdout,2 表示 stderr。
test.sh 2> file.err
将重定向来自描述符 2 = stderr 的所有输出到该文件中。
如果你使用特殊的符号 &1
而不是一个文件名,则该输出不会被写入到一个新文件中,而是写入到带有给定数字的文件描述符中,在这种情况下是 1。
test.sh 2>&1
将从文件描述符 2(stderr)重定向到文件描述符 1(stdout)
如果你想收集所有输出(无论是 stdout 还是 stderr)以进行进一步处理,例如将其输入到另一个程序中,则此方法非常有用。