zl程序教程

您现在的位置是:首页 >  系统

当前栏目

记linux输出重定向操作>&

2023-06-13 09:11:05 时间

记linux输出重定向操作>&

作者:matrix 被围观: 3,396 次 发布时间:2019-10-19 分类:command Linux | 一条评论 »

这是一个创建于 1048 天前的主题,其中的信息可能已经有所发展或是发生改变。

今天看到2>&1>/dev/null 2>&1有点相似但又完全不同,一直都是CV方式来使用 仅知道后者用于禁止所有输出信息。

简单整理笔记

基本操作符号和数字描述符号

>用于输出覆盖内容,>>用于输出追加内容 <用于输入,<<用于设置输入结束符号 <<end:表示当输入end的时候结束输入操作

/dev/null表示Linux中的空设备,也当是数据黑洞,无限吞噬。

类型

文件描述符

默认情况

对应文件句柄位置

标准输入(standard input)

0

从键盘获得输入

/proc/self/fd/0

标准输出(standard output)

1

输出到屏幕(即控制台)

/proc/self/fd/1

错误输出(error output)

2

输出到屏幕(即控制台)

/proc/self/fd/2

输出内容重定向

command >/dev/null 2>&1

这样执行就不会有任何信息显示和保存

补充命令之后:

command 1>/dev/null 2>&1

说明:

>/dev/null等同于1>/dev/null 意思是 当前控制台的信息输出到空设备。

2>&1使用&符号将2重定向绑定到1,意思是将错误信息指向控制台,而这个时候的控制台又指向了空设备。

如果去掉&符号的2>1会导致错误信息输出到文件名为1里面。

linux执行命令时会按顺序从左到右读取来确定0,1,2这三个输入输出的位置。

command 2>&1 >/dev/null

把两个重定向的位置写反之后就是完全不同的意思。 等同于command 2>&1 1>/dev/null

linux执行命令到2>&1会将错误输出指向1即控制台,到这里就会完成错误输出(2)的位置确定。也就不会更改了。

执行到1>/dev/null会将标准输出(1)指向空设备,而此时的错误输出(2)已经确定位置了就不会发生更改。

所以最终错误信息显示到控制台,正常信息不会看到。

参考: https://blog.csdn.net/zhaominpro/article/details/82630528 https://www.cnblogs.com/ultranms/p/9353157.html https://blog.csdn.net/wz947324/article/details/80005224