linux系统维护篇:/dev/null 妙用

介绍

        /dev/null 是一个特殊的设备文件,该文件接收的所有数据都会被丢弃(不显示、不打印、不记录),类似于黑洞。

场景

        场景1,执行命令有输出信息(正确和错误),且直接通过输出内容判断执行命令的结果是成功还是失败。

        场景2,对于命令的输出信息,不希望打印在终端。

原理

        将所执行命令的输出信息重定向到指定位置(文件)。若需记录则指定文件,若不需要记录则使用空设备文件【/dev/null】。

重定向

        >        :将左边数据写入到右边文件,每次写入都会清空右边文件。

        >>      :将左边数据写入到右边文件,每次写入都在文件中追加内容,不会清空原来内容。

       1 > &2 :将命令输出的正常信息写入到第2输出通道。 

        2> &1 : 将命令输出的错误信息写入到第1输出通道 。

案例:正确和错误信息都写入到all.log文件中,终端屏幕不再显示打印 

文件描述符

        文件描述符是与文件输入、输出关联的整数值。常见的三种描述符为,0表示标准输入(stidin),从键盘获取的输入(stdout);1表示标准输出(stderr),输出到终端屏幕;2表示标准错误,输出到终端屏幕。

示例:

1、标准输出:指命令执行后正常的打印,也可理解为执行命令成功后的打印输出

2、标准错误:指命令执行后错误的打印,也可理解为执行命令失败的打印输出

案例用法

案例1,将执行命令的标准错误输出(错误输出)进行丢弃不再显示,简言之,命令输出中报错信息不显示输出,正常信息会显示

#command 表示执行的命令
command 2> /dev/null

案例2, 将执行命令的标准输出(正确输出)进行丢弃不再显示,简言之,命令输出中报错信息会显示,正常信息不会显示

#command 表示执行的命令
command > /dev/null

 

案例3,将执行命令的输出无论是否报错都丢弃,输出的所有信息都不显示

#command 表示执行的命令
command &> /dev/null

 

案例4、将执行命令的输出信息中,错误信息和正常信息分别写入到不同的文件

find /home/test_u1/ 1>filelist.log 2>erro.log

 

命令结果标准输出判断

案例:

nc -zvw3 172.16.89.22 999 &> /dev/null
#获取丢弃后的返回值,标准状态结果:0,执行成功,1,失败
result=$?


#直接执行命令,会有错误输出打印
[test_u1@localhost ~]$ nc -zvw3 172.16.89.22 999
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connection timed out.

#将命令的输出都丢弃后,获取结果
[test_u1@localhost ~]$ nc -zvw3 172.16.89.22 999 &> /dev/null
#获取丢弃后的返回值,标准状态结果:0,执行成功,1,失败
[test_u1@localhost ~]$ echo $?
1

上述 $? 获取到的值就可以作为命令执行的结果,判断是否执行成功。

1表示失败;0表示成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值