Shell-重定向0 1 2含义解释

    技术2024-10-01  56


    title: Shell-重定向2>&1的含义解释 date: 2020-7-3 22:27:36 categories:

    Shell tags:重定向

    一.0 1 2 在Linux中代表的含义

    名称代码操作符Linux 下文件描述符(Debian 为例)标准输入0< or <</dev/stdin -> /proc/self/fd/0 ->/dev/pts/0标准输出1> ,>>,1>,1>>/dev/stdout ->/proc/self/fd/1 ->/dev/pts/1标准错误输出22> or 2>>/dev/stderr ->/proc/self/fd/2 ->/dev/pts/2

    日常使用的语法: echo "hello" > test.log 或者是: echo "hello" 1>test.log

    二.关于2>&1的含义

    1.含义:将标准错误输出重定向到标准输出 2. >&是一个整体,不可分开 – 写成2>1是不对的,意思为:将标准错误输出重定向到名为1的文件里 3. 写成2&>1也是错误的

    三.为什么2>&1要放后面

    比如: nohub java -jar app.jar >log 2>&1 & 最后一个&为后台执行 为什么2>&1一定要写到>log后面,才表示标准错误输出和标准输出都定向到log中?

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

    流程:2-->1-->log

    再来分析下 nohup java -jar app.jar 2>&1 >log &

    本来1----->屏幕 (1指向屏幕)执行2>&1后, 2----->1 (2指向1,而1指向屏幕,因此2也指向了屏幕)执行>log后, 1----->log (1指向log,2还是指向屏幕) 所以这就不是我们想要的结果。

    流程:

    1=屏幕 2---->1 = 2---->屏幕 1=log 2=屏幕

    四. 简写">log 2>&1"

    简写: &>log >&log

    原例子: nohup java -jar app.jar >log 2>&1 & 简写成: nohub java -jar app.jar &>log & nohub java -jar app.jar >&log &


    引用:Linux shell中2>&1的含义解释 一个行走的民


    更多更好的原创文章,请访问官方网站: 点我就能跳转咯-》https://nothingzh.gitee.io 也可关注“哎呦运维”微信订阅号,随时接受文章推送。

    Processed: 0.013, SQL: 9