Shell中输出标准及错误日志
Shell中2>&1输出日志
前言
有时候我们常看到类似这样的脚本调用:
1 |
|
这里的2>&1是什么意思?该如何理解?
先说结论:
上面的调用表明将./test.sh的输出重定向到log.txt文件中,同时将标准错误也重定向到log.txt文件中。
了解下1和2在Linux中代表什么
名称 | 代码 | 操作符 |
---|---|---|
标准输入(stdin) | 0 | < 或 << |
标准输出(stdout) | 1 | >, >>, 1> 或 1>> |
标准错误输出(stderr) | 2 | 2> 或 2>> |
关于2>&1的含义
& 是一个描述符,如果1或2前不加&,会被当成一个普通文件
1>&2 意思是把标准输出重定向到标准错误
2>&1 意思是把标准错误输出重定向到标准输出
&>filename 意思是把标准输出和标准错误输出都重定向到文件filename中
为什么2>&1要放在后面
先分析如下命令:
1 |
|
本来1—>屏幕 (1指向屏幕)
执行>log后, 1—>log (1指向log.txt)
执行2>&1后, 2—>1 (2指向1,而1指向log,因此2也指向了log.txt)
再分析下面命令:
1 |
|
本来1—>屏幕 (1指向屏幕)
执行2>&1后, 2—>1 (2指向1,而1指向屏幕,因此2也指向了屏幕)
执行>log.txt后, 1—>log (1指向log.txt,2还是指向屏幕)
如此不是我们实际要的结果
简单写法
1 |
|
蚂蚁再小也是肉🥩!
Shell中输出标准及错误日志
http://heibanbai.com.cn/posts/9bbd917d/
“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付