专栏首页BigData_FlinkLinux中2>&1的含义

Linux中2>&1的含义

A Linux中0、1、2的含义

名称

代码

操作符

Java中表示

Linux 下文件描述符(Debian 为例)

标准输入(stdin)

0

< 或 <<

System.in

/dev/stdin -> /proc/self/fd/0 -> /dev/pts/0

标准输出(stdout)

1

>, >>, 1> 或 1>>

System.out

/dev/stdout -> /proc/self/fd/1 -> /dev/pts/0

标准错误输出(stderr)

2

2> 或 2>>

System.err

/dev/stderr -> /proc/self/fd/2 -> /dev/pts/0

从上面可以得到,

平时写的echo "hello" > t.log

也可以写成echo "hello" 1> t.log

B 关于2>&1的含义

  • 含义:将标准错误输出重定向到标准输出
  • 符号>&是一个整体,不可分开,分开后就不是上述含义了。
  • 不能写成2&>1

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

例子:nohup java -jar app.jar >log 2>&1 &

  • 最后一个&表示把这条命令放后台运行

问题:为什么2>&1放在>log后面???

回答:

  • 我们不妨把1和2都理解是一个指针,那么这么想
    • 本来1->屏幕(1指向屏幕)
    • 执行>log后,1->log(1指向log)
    • 执行2>&1后,2->1(2指向1,而1指向log,因此2也指向了log)
  • 那么再分析一下nohup java -jar app.jar 2>&1 >log &
    • 本来1->屏幕
    • 执行2>&1后,2->1(2也指向屏幕)
    • 执行>log后,1->log(这时候1指向log,2还是指向屏幕)

D 简写2>&1

  • &>log(推荐使用)
  • >&log
  • 即,上面的写法可以写成nohup java -jar app.jar &>log &

E 说明

本篇文章参考源自网络,但忘了哪篇,知道的“联手”留言便于更正

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入理解Linux shell中2>&1的含义(全网最全,看完就懂)

    为什么2>&1一定要写到>log后面,才表示标准错误输出和标准输出都定向到log中?

    民工哥
  • Linux Shell 1>/dev/null 2>&1 含义

    命令的结果可以通过%>的形式来定义输出 /dev/null :代表空设备文件 > :代表重定向到哪里,例如:echo "123" > /home/123.t...

    阳光岛主
  • linux中shell变量$#,$@,$0,$1,$2的含义解释

    咻一咻
  • Shell中的$0、$1、$2的含义

    Coxhuang
  • Linux nohup和&的使用说明,"2>1&"含义解释

    Linux中nohup和&配合使用说明,以及使用时2>1& 的解释,还有Linux进程查询等命令

    俺也想起舞
  • shell 1>&2 2>&1 &>filename重定向的含义和区别

    老七Linux
  • 详解nohup /dev/null 2>&1 含义的使用

    nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进...

    砸漏
  • reshape(-1)的含义

    新数组的shape属性应该要与原来数组的一致,即新数组元素数量与原数组元素数量要相等。一个参数为-1时,那么reshape函数会根据另一个参数的维度计算出数组的...

    狼啸风云
  • shell变量$(CURDIR),$0,$1,$2,$#含义解释

    $(CURDIR):   CURDIR是make的内嵌变量, 为当前目录 实例 SRCTREE := $(CURDIR) *$(CURDIR)为当前目...

    张诺谦

扫码关注云+社区

领取腾讯云代金券