当前位置:首页>Linux>Linux系统的标准输入输出

Linux系统的标准输入输出

  • 2026-08-25 10:44:58
Linux系统的标准输入输出
在Linux系统中,标准输入和输出是外界与程序进行数据交互的基本通道,其主要通过文件描述符来标识,通过使用标准输出可实现将命令或脚本输出显示到屏幕或指定文件或者不显示,使用标准输入可实现程序以不同形式接收数据。
01
标准文件描述符
Linux通过文件描述符来标识每个文件对象,包括输入和输出,其文件描述符为一个非负整数,唯一标识会话中打开的文件,并且每个进程一次最多可以打开9个文件描述符,bash shell保留了前3个文件描述符,即0,1,2用于特殊用途。
3个特殊文件描述符及其用途:
  • 0——标准输入(缩写STDIN)
  • 1——标准输出(缩写STDOUT)
  • 2——标准错误(缩写STDERR)
shell采用以上文件描述符将其默认的输入输出送至合适的位置。
02
标准输入
对终端界面来说,标准输入就是键盘,此时shell将会从STDIN文件描述符对应的键盘获取输入内容并处理,如下所示:
$ cat THIS IS ONETHIS IS TWO
当直接运行cat命令时,直接从STDIN即键盘接收输入,输入一行就显示一行。
而使用输入重定向(<)接收输入内容时,将用重定向指定的文件替换标准输入文件描述符,如下所示:
$1nbsp;cat < inputfile This is one. This is two. This is three. $
此时,cat命令将从inputfile文件接收输入内容,因此通常使用这种方法将大量数据导入任何能够从STDIN接收数据的shell命令中。
03
标准输出
在终端界面上,标准输出就是终端显示器。
shell的所有输出(shell脚本和运行的程序)会被送至标准输出,即终端显示器。默认情况下,大多数bash命令将输出送至STDOUT文件描述符,如下所示:
$ ls -l total 3  -rw-rw-r-- 1 root root 53 2026-01-30 11:30 test  -rw-rw-r-- 1 root root 0 2026-01-30 11:32 test2  -rw-rw-r-- 1 root root 73 2026-01-30 11:23 test3  $
也可通过输出重定向(>或>>)来指定输出的位置,如下所示:
$1nbsp;ls -l > outfile  $1nbsp;cat outfile  total 3  -rw-rw-r-- 1 root root 53 2026-01-30 11:30 test  -rw-rw-r-- 1 root root 0 2026-01-30 11:32 test2  -rw-rw-r-- 1 root root 73 2026-01-30 11:23 test3  $
通过上述输出重定向,原本该显示到屏幕的输出内容被保存到了指定文件。
04
标准错误
shell使用STDERR文件描述符处理错误消息,当shell或shell中运行的脚本或程序出现错误时,产生的错误消息将被送往该位置,默认情况下,STDOUT和STDERR指向同一个地方,即错误消息默认被送往显示器。 shell对于错误消息的处理是跟普通输出的处理是分开的,因此 STDERR并不会随着STDOUT的重定向发生改变,通常用于将错误消息重定向之日志文件中用于运维人员分析排查。
常用方法如下:
只重定向错误:将文件描述符索引值放在重定向符号之前
ls -al testfile 2> err.txt
错误和输出分别重定向输出到不同位置
ls -l test1 test2 test3 2>err.txt 1>ouput.txt
错误和输出重定向至同一文件
ls -al test1 test2 test3 &> mix.txt
特殊重定向符&>表示命令生成的所有输出(正常输出和错误消息)会被送往同一位置。
正常输出在屏幕上,错误信息输出到指定文件
ls -al test1 test2 test3 2> err.txt

最新文章

随机文章