What does the ampersand indicate in this bash command 1>&2

Quick one, 2>&1 redirects stderr to stdout, but what does the ampersand mean? I know if we had 2 > 1 it would output to a file named 1 , what does the ampersand do?


它将文件描述符1复制到文件描述符2中.FD2是stderr,FD1是stdout,因此它将输出到stderr而不是stdout。


2>&1 redirects standard error (file handle 2) to the same file that standard output (file handle 1) is currently going to.

It's also a position-dependent thing so:

prog >x 2>&1 >y

will actually send standard error to x and standard output to y as follows:

  • Connect standard output to x ;
  • Then connect standard error to same as current standard output, which is x ;
  • Then connect standard output to y ;

  • The ampersand belongs to the "1", so the snippet really has three parts: "2", ">", "&1". They mean, respectively, "take the data from output stream 2 (which is standard error)", "redirect it", and the redirection target, which is output stream 1. So "&" here allows you to redirect to an existing stream, rather than to a file.

    链接地址: http://www.djcxy.com/p/25604.html

    上一篇: 在Bash中捕获stdout和stderr

    下一篇: &符号在此bash命令1>&2中表示的是什么?