Linux系统标准输入\输出和重定向

2018-01-12 0 By admin

linux 系统启动时会打开3个有关输入和输出的文件描述符。在系统运行过程中子进程会从父进程继承绑定的文件描述符;因此所有运行的进程,都会绑定这3个描述符。并且当进程需要访问新的文件描述符时,描述符的标号从3开始记录。

一、标准输入、输出、错误

1.1、标准输入

标准输入STDIN(standard input)对应文件描述符0,虚拟设备文件/dev/stdin。
默认从键盘中读取输入数据。

1.2、标准输出

标准输出STDOUT(standard output)对应文件描述符1,虚拟设备文件/dev/stdout。
默认将结果输出到终端。

1.3、错误输出

错误输出STDERR(error output)对应文件描述符2,虚拟设备文件/dev/stderr。
默认将结果输出到终端。

二、系统重定向

改变命令或者进程的标准输入、标准输出和错误输出。即:标准输入不从键盘;输出不到屏幕

2.1、输出重定向

Command > filename 把标准输出重定向到一个文件中
Command >> filename 把标准输出重定向到一个文件中(追加)
Command > filename 2>&1 把标准输出和错误一起重定向到一个文件中
Command 2 > filename 把标准错误重定向到一个文件中
Command 2 >> filename 把标准输出重定向到一个文件中(追加)
Command >> filename2>&1 把标准输出和错误一起重定向到一个文件(追加)

2.2、输入重定向

Command < filename > filename2 Command命令以filename文件作为标准输入,以filename2文件作为标准输出
Command < filename Command命令以filename文件作为标准输入
Command << delimiter 从标准输入中读入,delimiter(分界符)为定义结束

2.3、绑定重定向

Command >&m 把标准输出重定向到文件描述符m中
Command < &- 关闭标准输入
Command 0>&- 同上

command > /dev/null 2>&1
进程执行的标准输出默认为1,以上命令省略了1,即等价于command 1 > /dev/null 2>&1
2 > $1 将错误输出重定向至标准输出,即/dev/null文件中

相关文档:

cat 命令-连接文件并打印到标准输出