关于/dev/null及用途(Linux黑洞)

/dev/null 在 Linux 中被称作「黑洞」,用于丢弃所有写入的数据且无法读取。这个特殊文件在命令行和脚本中很有用,常用于清除日志、阻止输出等。例如,`>/dev/null` 清空文件,`2>&1` 重定向错误输出。通过 `2>/dev/null` 可隐藏错误信息,双重定向则同时屏蔽标准输出和错误输出。这些技巧有助于控制命令的输出和管理系统日志。
摘要由CSDN通过智能技术生成
我们通常把Linux下的/dev/null看作"黑洞"。它非常等价于一个只写文件。所有写入它的内容都会永远丢失。而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用。

/dev/null 属于字符特殊文件,它属于空设备,是一个特殊的设备文件,它会丢弃一切写入其中的数据,写入它的内容都会永远丢失,而且没有任何可以读取的内容。所以我们一般会把/dev/null当成一个垃圾站,不要的东西丢进去。比如来清除文件中的内容。

一般标准输出和标准错误输出都是屏幕,因此错误信息还是会在屏幕上输出。 这个数字代表的是标准输出。

0:表示标准输入流(stdin),

1:表示标准输出(stdout)。

2:表示标准错误输出(stderr)

2>&1:表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

/dev/null 2>&1 这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null文件,也就是清空.所以可以看出常用来避免shell命令或者程序等运行中有内容输出。

具体几个使用场景列举如下:

  • 清除日志文件内容
cat /dev/null > /var/log/messages
#  : > /var/log/messages   有同样的效果, 但不会产生新的进程.(因为:是内建的)
cat /dev/null > /var/log/wtmp
  • 禁止标准输出
cat $filename >/dev/null
文件内容丢失,而不会输出到标准输出.
  • 禁止标准错误
rm $badname 2>/dev/null
这样错误信息[标准错误]就被丢到太平洋去了.
  • 禁止标准输出和标准错误的输出
cat $filename 2>/dev/null >/dev/null
# 如果"$filename"不存在,将不会有任何错误信息提示.
# 如果"$filename"存在, 文件的内容不会打印到标准输出.
# 因此Therefore, 上面的代码根本不会输出任何信息.
# 当只想测试命令的退出码而不想有任何输出时非常有用。
#-----------测试命令的退出 begin ----------------------#
# ls dddd 2>/dev/null 8 
# echo $?    //输出命令退出代码:0为命令正常执行,1-255为有出错。  
#-----------测试命令的退出 end-----------#  
# cat $filename &>/dev/null 
#   也可以, 由 Baris Cicek 指出.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RayCheungQT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值