/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"文件中,而标准输出则会显示在屏幕上