Bash STDIN,STDOUT和STDERR的说明

示例

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

例如:

标准输入

root@server~# read
Type some text here

标准输入用于向程序提供输入。(这里我们正在使用read内置函数从STDIN中读取一行。)

标准输出

root@server~# ls file
file

标准输出通常用于命令的“常规”输出。例如,ls列出文件,以便将文件发送到STDOUT。

斯特德

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

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

STDIN,STDOUT和STDERR是三个标准流。它们通过数字而不是名称来标识到外壳程序:

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上不会输出任何错误。