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文件中
相关文档: