/dev/null 和 /dev/zero的区别
1./dev/null:表示 的是一个黑洞,通常用于丢弃不需要的数据输出, 或者用于输入流的空文件
1.1 将无用的输出流写入到黑洞丢弃。
curl -Iwww.baidu.com 2>/dev/null | head -l 错误信息定位到黑洞
1.2 清空文件
cat /dev/null > /home/omc/h.txt
1.3 在书写定时任务总,规范的写法就是将所有定时任务脚本结尾加上>/dev/null 2>&1,让所有的输出流(包括错误的和正确的)都定向到空设备丢弃。
00 01 * * * /bin/sh/server/scripts/mysqlbak.sh >/dev/null 2>&1
2./dev/zero:当我们使用或者读取他的时候,她是会提供无限连续不断的空的数据流
2.1覆盖其他的文件信息
2.2产生指定大小的空文件,如交换文件,模拟虚拟文件系统
一、区别:
2>/dev/null
意思就是把错误输出到“黑洞”
>/dev/null 2>&1
默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”
2>&1 >/dev/null
意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕
二、解释:
1、文件描述符
Linux系统预留可三个文件描述符:0、1和2,他们的意义如下所示:
0——标准输入(stdin)
1——标准输出(stdout)
2——标准错误(stderr)
标准输出——stdout
假设:在当前目录下,有且只有一个文件名称为ljl.txt的文件,这时我们运行这个命令【ls ljl.txt】,就会获得一个标准输出stdout的输出结果:ljl.txt
错误输出——stderr
按照上面的假设,我们运行另一条命令【ls gss.txt】,这样我们就会获得一个标准错误stderr的输出结果“ls:无法访问gss.txt:没有那个文件或目录”。
2、重定向
重定向的符号有两个:>或>>,两者的区别是:前者会先清空文件,然后再写入内容,后者会将重定向的内容追加到现有文件的尾部。举个例子:
(1)、重定向标准输出stdout
如上图所示,对比没有添加重定向的操作,这条命令在使用之后并没有将123.txt打印到屏幕。在紧接的cat操作后,可以发现本来应该被输出的内容被记录到stdout.txt中。
(2)、重定向标准错误stderr
如上图所示,文件描述符2,标准错误的重定向也是同样的原理被记录在了文件stderr.txt这个文件里面了。
(3)、可以将stderr单独定向到一个文件,stdout重定向到另一个文件
cmd 2> stderr.txt 1>stdout.txt
(4)、也可以将stderr和stdout重定向到同一个文件
cmd > output.txt 2>&1
或采用下面的方法,可以少写几个字,能达到同样的效果
cmd &> output.txt
cmd >& output.txt #两个表达式效果一样的
3、Linux特殊文件
/dev/null是一个特殊的设备文件,这个文件接收到任何数据都会被丢弃。因此,null这个设备通常也被称为位桶(bit bucket)或黑洞。
所以,2>/dev/null的意思就是将标准错误stderr删掉。
附:linux中单进程的文件数据结构图
上图是linux中单进程的文件数据结构图,最左边使我们熟悉的fd标志,也就是文件描述符,一个进程内所有的文件描述符按照顺序排列构成一张文件描述符表,其中包括fd0,fd1,fd2。(注意:这里并没有说标准输入,标准输出,错误输出,原因后面讲)
那么,问题来了,假如我们想fd1写入数据时,最终数据会到哪儿呢?事实上fd1作为文件描述符,它本身并不是文件的真正的“入口”,文件真正的“入口”在文件描述符表的第二列:记录了每个文件描述符所对应文件位置的文件指针。换言之,如果我们更换fd1所对应的文件指针,就改变了fd1指向文件的”真正位置”。
fd0,fd1,fd2指向的文件默认情况下分别是/dev/stdin、/dev/stdout和/dev/stderr,这才是真正的标准输入,标准输出,错误输出,如果将数据写入到/dev/stdout中,就会在屏幕上显示数据,fd0,fd1,fd2只是标志而已,真正起作用的是他们对应的文件指针!
所以重定向命令’>’所做的工作就是就是改变了fd所对应的文件指针!
参考来自:https://blog.csdn.net/gramdog/article/details/80374119,https://blog.csdn.net/zhongqi2513/article/details/78613768,https://blog.csdn.net/a1439458305/article/details/79586567
————————————————
版权声明:本文为CSDN博主「林建龙」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/longgeaisisi/article/details/90519690
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
凌华智能与Elma强强联手为轨道交通及关键任务应用提供高可靠加固系统解决方案
汽车显示屏——第1部分
尼得科从5月开始量产AI数据中心新型冷却系统产品
意法半导体披露公司全球计划细节,重塑制造布局和调整全球成本基数
高通对Arm提起反诉
关于中断的问题,急急急
Protel 99 SE 视频教程 —— 第四节 生成网络表文件
Protel 99 SE 视频教程 —— 第五节 创建PCB元器件
程序进中断
LM75A数字温度传感器和温度监控器应用范例
OPA603构成的10MHz低通滤波器
国内半导体设备企业,拟精简至10家
RS232与5402通信求助
LM75A数字温度传感器和温度监控器-02
人形机器人中的毫米波雷达感应和传感器融合
TSMC 选择更小的衬底进行初始 PLP 运行
LP2950 LP2951 100mA低压差调节器
用相同参数构成的每倍频程24dB低通滤波器(μPC882)
电源频率噪声滤波器(μPC822)
外部扩展的RAM出了问题,求救
Protel 99 SE 视频教程 —— 第三节 库文件的操作
罗克韦尔自动化携手上海气候周开启“气候灯塔”新纪元
外部ram的读写
复旦大学研发出史上最快闪存,每秒操作25亿次!
LP2950 LP2951 100mA低压差调节器 (英)
Protel 99 SE 视频教程 —— 第二节 原理图设计系统的基本操作
OPA2604构成的三阶低通滤波器
同时获得4种特性的滤波器(TL082)
LPC PRO编程器功能介绍
Protel 99 SE 视频教程 —— 第一节 创建设计文档