/dev/null和标准*使用

"/dev/null" 是一个特殊的设备文件,它在 Unix 和类 Unix 系统中用于丢弃数据或忽略输出。当数据被写入 /dev/null 时,实际上是将数据丢弃,而读取 /dev/null 则会立即返回文件结尾(EOF)。
在 Unix/Linux 系统中,一切皆文件的思想也适用于设备。/dev/null 是一个特殊的设备文件,它不对应任何实际的硬件设备,而是一个空设备。当数据被写入 /dev/null 时,操作系统会立即丢弃这些数据,而读取 /dev/null 则会立即返回文件结尾,就好像在一个空文件中读取一样
 
标准输入输出和标准错误:
0 —— stdin(标准输入)
1 —— stdout(标准输出)
2 —— stderr (标准错误)
 
所以/dev/null和标准*结合使用,可有:
$ cmd 2>/dev/null    // 表示将cmd出来的标准错误输出到/dev/null,只留下标准输出和标准输入的信息打印到终端
$ cmd &>/dev/null    // 将标准输出和标准错误输出都重定向到 /dev/null,即丢弃所有输出,不在终端上显示
$ cmd 2>&1 >/dev/null    // 将标准错误重定向到标准标准输出,和上面的指令一个意思,都是丢弃所有输出,不在终端上显示
$ cmd 2> error.log    // 将命令的错误输出重定向到文件
$ cat file.txt | grep "pattern"    // 通过管道将一个命令的输出作为另一个命令的输入
$ make |grep "test" 2> test.log    // grep命令的标准错误信息记录到"test.log"文件中,而标准输出则会显示在屏幕上

 

 
posted @ 2024-03-29 16:06  lethe1203  阅读(31)  评论(0编辑  收藏  举报