旧博客迁移文章,内容可能已失去价值,仅为留念,做了简单重新排版,勉强可看。
在查询如何给 Letsencrypt
证书配置 OCSP Stapling
时,看到一段自动更新脚本,里面有 2>&1 >/dev/null
这种用法,并不能理解,百度之,查到最多的还是 >/dev/null 2>&1
这种用法。还是 google 大法好!
要理解这两者的区别,我们要先理解清楚标准输入输出
以及输出重定向
的知识。
类型 | 设备 | 设备文件名 | 文件描述符 |
---|---|---|---|
标准输入 | 键盘 | /dev/stdin | 0 |
标准输出 | 显示器 | /dev/sdtout | 1 |
标准错误输出 | 显示器 | /dev/sdterr | 2 |
对于前者,是最常见的使用,用于将正确和错误输出都输出到设备 /dev/null
,也就是不输出到屏幕上。
>/dev/null 2>&1
其中 >/dev/null
相当于 1>/dev/null
,那么上述写法可以改为
1>/dev/null 2>&1
首先 1>/dev/null
将标准输出重定向到 /dev/null
,这时所有的正确输出都将输出到 /dev/null
。然后 2>&1
将标准错误输出重定向到标准输出,而此时标准输出已经被重定向到 /dev/null
,所以标准错误输出也将输出到 /dev/null
。
理解了上述内容,理解第二种用法,就简单许多了。
2>&1 >/dev/null
首先 2>&1
将标准错误输出重定向到标准输出,那么这时错误输出就会输出到屏幕上。然后 >/dev/null
则将标准输出重定向到 /dev/null
,这时正确输出就不会显示到屏幕上。所以这种用法的作用就是将正确输出隐藏起来,只显示错误输出。
最后总结一下:
>/dev/null 2>&1
用来将正确输出和错误输出都重定向到空设备
2>&1 >/dev/null
用来将正确输出重定向到空设备,屏幕只显示错误输出。
本文链接:https://blog.xiaoyuyu.cn/post/stdout-stderr.html,参与评论 »
--EOF--
发表于 2016-02-23 05:26:00。
本站使用「署名 4.0 国际」创作共享协议,转载请注明作者及原网址。更多说明 »
提醒:本文最后更新于 3308 天前,文中所描述的信息可能已发生改变,请谨慎使用。
Comments