Linux 输出重定向


Linux 一切皆文件

标准输入、输出、错误

Linux中有三种标准输入输出,分别是STDINSTDOUTSTDERR,对应的数字是0,1,2。

STDIN是标准输入,默认从键盘读取信息;

STDOUT是标准输出,默认将输出结果输出至终端;

STDERR是标准错误,默认将输出结果输出至终端。

而一般默认

STDIN 打开 /dev/stdin 也就是标准输入

STDOUT 打开 /dev/stdout 也就是标准输出

STDERR 打开 /dev/stderr 也就是标准错误

所以一般使用的时候,用 0,1,2代替

重定向命令

重定向命令>就是改变fd所对应的指针

常用的重定向命令

>/dev/null 2>&1 // 会将标准输出,错误输出都重定向至/dev/null,也就是全部丢弃

// 首先将fd1的文件指针更改为指向/dev/null
// 然后将fd2的文件指针更改为fd1所对应的文件指针,也就是/dev/null文件

验证示例:

touch exists.log
ll exists.log not_exists.log
// 输出
// ls: cannot access not_exists.log: No such file or directory
// -rw-rw-r-- 1 www www 0 Jun  8 15:01 exists.log

ll exists.log not_exists.log >/dev/null 2>&1

结果我们看到什么输出都没有

/dev/null在类Unix系统中称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。

2>&1 >/dev/null // 只会将标准输出重定向至/dev/null

// 首先将fd2的文件指针更改为fd1所对应的文件指针,也就是STDOUT文件
// 然后将fd1的文件指针更改为指向/dev/null

验证示例:

touch exists.log
ll exists.log not_exists.log 2>&1 >/dev/null
// 只输出错误
// ls: cannot access not_exists.log: No such file or directory

文章作者: 江湖义气
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 江湖义气 !
  目录