linux下dev中⽆null⽂件,Linux——devnull详解
⼀、  /dev/null
/dev/null属于字符特殊⽂件,它属于空设备,是⼀个特殊的设备⽂件,它会丢弃⼀切写⼊其中的数据,写⼊它的内容都会永远丢失,⽽且没有任何可以读取的内容;就像是⿊洞⼀样。
我们⽤file命令查看下,说明类型是字符特殊⽂件。
[root@localhost ~]# file /dev/null
/dev/null: character special
所以我们⼀般会把/dev/null当成⼀个垃圾站,不要的东西丢进去。⽐如来清除⽂件中的内容。
⽰例:
[root@localhost oa]# ls >> a.txt
[root@localhost oa]#
<
passwd
time.sh
[root@localhost oa]# cat /dev/null > a.txt #把空重定向写到a.txt,以前的内容被覆盖了;
[root@localhost oa]#
也可以把⼀个⽂件内容读到/dev/null⾥⾯。不过当⽂件不存在的时候回报错。我们可以在前⾯加上数字2。
[root@localhost oa]# >/dev/null
cat: : 没有那个⽂件或⽬录
[root@localhost oa]# 2>/dev/null #把⽂件内容重定向写到空,以前内容被丢弃了;
⼀般标准输出和标准错误输出都是屏幕,因此错误信息还是会在屏幕上输出。 这个数字代表的是标准输出。
0:表⽰标准输⼊流(stdin),
1:表⽰标准输出(stdout)。
2:表⽰标准错误输出(stderr)
上⾯就是将标准错误( 2 )输出重定向到/dev/null,所以屏幕上不会再显⽰错误提⽰了。
⼆、  >/dev/null 2> &1
⽤这样的写法: >/dev/null 2> &1
这条命令的意思是将标准输出和标准错误输出全部重定向到/dev/null中,也就是将产⽣的所有信息丢弃.
下⾯就为⼤家来说⼀下, command > filename  2>filename  与command > filename  2>&1 有什么不同的地⽅.
⾸先 command > file 2>file 的意思是将命令所产⽣的标准输出信息,和标准错误的输出信息送到file中,command  > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使⽤了FD1和FD2两个同时去抢占file 的管道.
linux重定向
⽽command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了⼀次,也只使⽤了⼀个管道FD1,它包括了stdout和stderr的内容
> 代表重定向到哪⾥,例如:echo "123" > /
/dev/null 代表空设备⽂件
2> 表⽰stderr标准错误输出
& 表⽰ 等同于的意思,标准错误输出  重定向到  标准输出
1 表⽰stdout标准输出,系统默认值是1,所以  >/dev/null 2>&1也可以写成“1> /dev/null 2> &1”

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。