在shell脚本中使用2>&1有什么用处

这个问题在这里已经有了答案:

  • 在shell中,“2>&1”是什么意思? 15个答案

  • 简短的回答是,您将stderr重定向到stdout以便您将写入FD2错误消息以及FD1上的正常输出写入FD1 。 (FD =文件描述符)。 它通常允许您捕获想要保存在日志文件中的错误消息的输出等。否则,仅通过将stdout重定向到日志就不能捕获这些错误消息。

    通过简短的背景介绍,您的shell有3个众所周知的文件描述符,涵盖基本的读写操作:

    0 - stdin(你的输入缓冲区)

    1 - stdout(你的普通输出描述符)

    2 - stderr(你的正常错误描述符)

    当你读或写时,几乎所有的编程语言,包括你的shell,都使用这些通用的文件描述符来管理输入/输出。 在你的shell中,你可以重定向或合并stdoutstderr 。 一般格式是:

    m > &n    ## where n & m are 1, 2
    

    例如,可以将任何命令的stdoutstderr与文件结合使用:

    ./someprogram > myfile 2>&1
    

    基本上说,“从stdout someprogramstdout重定向到myfile而在stdout包含stderr

    有几个很好的参考,一个是BASH编程 - 介绍如何:所有关于重定向

    注意:确保您也了解重定向可以发生在临时(每个命令的基础上),或者可以使用exec为脚本的范围进行设置。

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

    上一篇: What is the use of 2>&1 in shell scripting

    下一篇: Bash: what does 2>&1 mean?