0
点赞
收藏
分享

微信扫一扫

linux - 2>&1

在linux系统中,0 1 2 是文件描述符,含义如下:

  • 0 表示stdin标准输入
  • 1 表示stdout标准输出
  • 2 表示stderr标准错误

所以2>&1的含义:将标准错误输出重定向到标准输出

符号>&是一个整体,不可分开。比如有些人可能会这么想:2是标准错误输入,1是标准输出,>是重定向符号,那么"将标准错误输出重定向到标准输出"是不是就应该写成"2>1"就行了?是这样吗?如果是尝试过,你就知道2>1的写法其实是将标准错误输出重定向到名为"1"的文件里去了。写成2&>1也是不可以的。

 

为什么2>&1要放在后面?

命令1:

nohup java -jar app.jar >log 2>&1

  1. 本来1----->屏幕 (1指向屏幕)
  2. 执行>log后, 1----->log (1指向log)
  3. 执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log)

命令2(换下位置):

nohup java -jar app.jar 2>&1

  1. 本来1----->屏幕 (1指向屏幕)
  2. 执行2>&1后, 2----->1 (2指向1,而1指向屏幕,因此2也指向了屏幕)
  3. 执行>log后, 1----->log (1指向log,2还是指向屏幕)

 


ps:

我们平时所使用的

echo 'hellozy'

也可以写成

echo 'hellozy' 1> a.log    # 1和>之间不能有空格

 



举报

相关推荐

0 条评论