命令具有一个输入(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上不会输出任何错误。