STDIN STDOUT 和 STDERR 解释道

命令有一个输入(STDIN)和两种输出,标准输出(STDOUT)和标准错误(STDERR)。

例如:

STDIN

root@server~# read
Type some text here

标准输入用于为程序提供输入。 (这里我们使用内置 read 来读取 STDIN 中的一行。)

STDOUT

root@server~# ls file
file

标准输出通常用于命令的正常输出。例如,ls 列出文件,因此文件将发送到 STDOUT。

STDERR

root@server~# ls anotherfile
ls: cannot access 'anotherfile': No such file or directory

标准错误(顾名思义)用于错误消息。由于此消息不是文件列表,因此将其发送到 STDERR。

STDIN,STDOUT 和 STDERR 是三个*标准流。*它们通过数字而不是名称来识别 shell:

0 =标准输入
1 =标准输出
2 =标准误差

默认情况下,STDIN 连接到键盘,STDOUT 和 STDERR 都出现在终端中。但是,我们可以将 STDOUT 或 STDERR 重定向到我们需要的任何内容。例如,假设你只需要标准输出,并且应该抑制在标准错误上打印的所有错误消息。那是我们使用描述符 12 的时候。

将 STDERR 重定向到/ dev / null
采用前面的示例,

root@server~# ls anotherfile 2>/dev/null
root@server~#

在这种情况下,如果有任何 STDERR,它将被重定向到/ dev / null(一个忽略放入其中的任何内容的特殊文件),因此你不会在 shell 上获得任何错误输出。