转载请注明出处:
在 Linux 中,>/dev/null
和 2>&1
是两个常用的重定向操作,它们用于控制命令的输出和错误信息。
/dev/null
是 Linux 系统中的一个特殊文件,它是一个无处不在的数据黑洞。任何写入 /dev/null
的数据都会消失,不会有任何数据被保存下来。因此,command >/dev/null
会将 command
的标准输出重定向到 /dev/null
,也就是丢弃标准输出。例如:
echo "Hello, World!" >/dev/null
在这个命令中,echo "Hello, World!"
的输出 "Hello, World!" 会被重定向到 /dev/null
,因此你不会在终端看到这个输出。
2>&1
是一个重定向操作,它将标准错误(文件描述符 2)重定向到标准输出(文件描述符 1)。因此,command 2>&1
会将 command
的标准错误和标准输出合并,也就是将标准错误输出到标准输出。例如:
ls /path/to/nonexistent 2>&1
在这个命令中,ls /path/to/nonexistent
的错误输出会被重定向到标准输出,因此你会在终端看到这个错误输出。
将这两个重定向操作结合使用,command >/dev/null 2>&1
,可以将 command
的标准输出和标准错误都丢弃。例如:
ls /path/to/nonexistent >/dev/null 2>&1
在这个命令中,ls /path/to/nonexistent
的输出和错误都会被重定向到 /dev/null
,因此你不会在终端看到任何输出。
需要注意的是,>/dev/null 2>&1
的顺序是不能写反的。如果你写成 2>&1 >/dev/null
,那么只有标准输出会被丢弃,标准错误还会被输出到终端。