Linux操作系统的输入输出管理

一、理解系统的输入输出

运行一个程序时,需要从某个位置读取输入信息,然后cpu处理,最后将输出显示到屏幕或文件

进程通过文件描述的编号通道来获取输入并输出

Linux操作系统的输入输出管理

二、管理输出的符号

1、输出重定向

>      ##重定向正确输出

2>    ##重定向错误输出

&>   ##重定向所有输出

注意:

> file   重定向会覆盖原文件内容

示例:

注意:以下实验必须在student用户下完成

find /etc/ -name passwd > file    ##定向正确输出到file

Linux操作系统的输入输出管理

find /etc/ -name passwd 2> file.err    ##定向错误输出到file.err

Linux操作系统的输入输出管理

find /etc/ -name passwd &> file.all    ##定向所有输出到file.all

Linux操作系统的输入输出管理

2、输出追加

>>     ##追加正确输出到文件最后

2>>   ##追加错误输出到文件最后

&>>  ##追加所有输出到文件最后

注意:

追加不会覆盖源文件内容

示例:

find /etc/ -name passwd >> file          ##追加正确输出到file

Linux操作系统的输入输出管理

find /etc/ -name passwd 2>> file.err      ##追加错误输出到file.err

Linux操作系统的输入输出管理

find /etc/ -name passwd &>> file.all      ##追加所有输出到file.all

Linux操作系统的输入输出管理

三、管道的应用

管道的作用

“|”管道的作用是把前一条命令的输出变成后一条命令的输入

注意:

管道只允许正确输出通过

通过管道的输出将会变成输入,而变成输入的这些输出是会被第二条命令处理的

如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee”,tee会覆盖文件内容

此实验在普通用户下操作:

find /etc/ -name passwd | wc -l     ##会看到的结果为2,因为错误输出不能通过管道符

Linux操作系统的输入输出管理

find /etc/ -name passwd 2>&1 | wc -l     ##会看到19,因为编号为2的输出会被“2>&1”转化为位编号1

Linux操作系统的输入输出管理

find /etc/ -name passwd 2>&1 |tee file |wc -l     ##保存一份输出到file再统计行数

Linux操作系统的输入输出管理

四、输入重定向

cat > file <<EOF

hello

world

EOF

Linux操作系统的输入输出管理