>/dev/null 2>&1 解读

相信大家经常在程序中遇到 >/dev/null 2>&1语句,这边做详细地解读

1、/dev/null 表示Linux的空设备文件,可将其等价与一个只写文件,所有写入它的内容都会永远丢失,什么也读取不到

2、其中2,1都属于文件表述符

    0:表示标准输入 ,默认情况从键盘获得输入,对应文件句柄位置/proc/self/fd/0

    1:表示标准输出,默认情况输出到屏幕(即控制台),对应文件句柄位置/proc/self/fd/1

    2:表示错误输出,默认情况输出到屏幕(即控制台),对应文件句柄位置/proc/self/fd/2

3、shell重定向介绍(参考:https://www.cnblogs.com/ultranms/p/9353157.html

在shell命令中,默认是从键盘获得输入,并将结果输出到控制台上,程序可以通过输入输出重定向处理外部的输入,然后将运算结果输出到指定位置,在程序运行的过程中,会有些关键性的信息,比如异常堆栈,外部接口调用情况等,这些都会统统写到日志文件里

(输出重定向)
">"(右尖括号)在unix/linux shell中表示输入到的意思,就是将">"左边的内容输入到">"右边

基本一些命令如下:

    command > filename  将标准输出重定向到新文件中

    command 1>filename 将标准输出重定向到新文件中

    command >> filename 将标准输出追加到文件中

    command1 >> filename 将标准输出追加到文件中

    command 2 > filename 将标准错误定向到新文件中

    command2 >> filename 将标准错误追加到文件中

当使用">"时,会判断右边文件存不存在,如果存在就先删除,然后创建新文件 ;当使用”>>“进行追加时,则不会删除原来已经存在的文件

eg:创建测试目录,目录下只有文件A

(1)ls A B   =>会报error 无法访问B,没有文件或者目录,,同时也会列出A

(2)ls A B >out  2>err  =>表示标准输出到out中,标准错误输出到err中 

(输入重定向)

”<“(左尖括号)对输入做重定向,如果符号的左边没有写值,那么默认为0,一些基本指令如下:

    command < filename 以filename作为标准输入

    command 0< filename 同上

    command << delimiter 从标准输入中读入,直到遇到delimiter分隔符

eg:假设文件input值为aaa 

(1)cat > out <input  => 则out的内容就是input文件中的内容

(2)cat > out <<end => 输入完敲下回车后,命令没有结束,等待输入数据,直到我们敲end之后,cat命令才会结束

4、高级用法 重定向绑定

2>&1 这条命令就是用了重定向绑定,采用&将两个输出绑定到一起,将错误输出和标准输出到同一个地方

(1)>/dev/null 2>&1  与  >/dev/null 2>/dev/null 这样写会导致标准输出和错误输出抢占资源。可能导致文件内容覆盖,缺失等情况

(2)>/dev/null 2>&1  与 2>&1 >/dev/null 错误输出开始会跟标准默认输出一样输出到屏幕上,后来标准输出又定向到/dev/null中

nobup command & 启动一些后台服务

nobup command >/dev/null 2>&1 &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值