在 shell 脚本中,1 is file descriptor for standard output和2 is for standard error. 现在,由于这两者都指向控制台
2>&1. 他们不是已经指向同一个设备了吗?
简短的回答是您正在重定向stderr到,stdout因此您将同时收到写入的错误消息FD2以及FD1写入FD1. (FD = 文件描述符)。它通常允许您捕获要保存在日志文件等中的错误消息的输出,否则仅通过重定向stdout到日志就无法捕获这些输出。
作为简要背景,您的 shell 有 3 个众所周知的文件描述符,涵盖基本的读写:
0 - 标准输入(您的输入缓冲区)
1 - stdout(您的正常输出描述符)
2 - stderr(您的正常错误描述符)
当你读或写时,几乎任何编程语言,包括你的 shell,都会使用这些通用的文件描述符来管理输入/输出。在您的 shell 中,您可以重定向或组合来自stdout和 的输出stderr。一般格式为:
m > &n ## where n & m are 1, 2
Run Code Online (Sandbox Code Playgroud)
例如,您可以将stdout和stderrfrom 任何命令组合到一个文件中:
./someprogram > myfile 2>&1
Run Code Online (Sandbox Code Playgroud)
这基本上是说,“将输出从someprogramonstdout重定向到myfile同时包含stderr在stdout.
有几个很好的参考资料,其中一个是BASH Programming - Introduction HOW-TO: All about redirection
注意:请确保您还了解重定向可以临时(基于每个命令)发生,也可以使用exec.
| 归档时间: |
|
| 查看次数: |
4753 次 |
| 最近记录: |