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 重定向到我们需要的任何内容。例如,假设你只需要标准输出,并且应该抑制在标准错误上打印的所有错误消息。那是我们使用描述符 1
和 2
的时候。
将 STDERR 重定向到/ dev / null
采用前面的示例,
root@server~# ls anotherfile 2>/dev/null
root@server~#
在这种情况下,如果有任何 STDERR,它将被重定向到/ dev / null(一个忽略放入其中的任何内容的特殊文件),因此你不会在 shell 上获得任何错误输出。