########################
##### 系统的输入输出 #####
########################
##系统中输入输出的管理
1.首先在linux系统中,通常我们定义为正确输出的编号为1,错误输出编号为2。
2.管理输入输出的符号
##输出重定向
> ##重定向正确输出
2> ##重定向错误输出
&> ##重定向所有输出
值得注意的是:
重定向会覆盖原文件内容
为了更形象的说明重定向的含义,以下为所举的示例:(特别注意:下面操作需转换成student普通用户来完成)
find /etc/ -name passwd > file ##定向正确输出到file
find /etc/ -name passwd 2> file.err ##定向错误输出到file
注:不难看出重定向到file里面的内容会被覆盖掉。
find /etc/ -name passwd &> file.all ##定向所有输出到file
> file ##清空file
##输出追加重定向
>> ##追加正确输出到文件最后
2>> ##追加错误输出到文件最后
&>> ##追加所有输出到文件最后
值得注意的是:
追加不会覆盖源文件内容。
同样我们来做一个实验:
find /etc/ -name passwd >> file ##追加正确输出到file
find /etc/ -name passwd 2>> file.err ##追加错误输出到file
由以上可见追加输出不会覆盖原文件的内容
find /etc/ -name passwd &>> file.all ##追加所有输出到file
##3.管道的应用
1.管道的作用
符号为 “ | ”
管道的作用是把前一条命令的输出变成后一条命令的输入
必须注意的是:
管道只允许正确输出通过
通过管道的输入将会变成输入,而变成输入的这些输出是会被第二条命令处理的
如果需要保存输出内容,那么需要复制一份输出,用到的命令是“tee”
此实验在普通用户下操作:
find /etc/ -name passwd | wc -l ##会看到的结果为2,因为错误输出不能通过管道
find /etc -name passwd 2>&1 | wc -l ##会看到19,因为编号为2的输出被“2>&1”转换为编号1
find /etc -name passwd 2>&1 | tee file | wc -l ##看到的结果仍为19,且保存一份输出到file再统计行数
##4.输入重定向####
echo hello world > file ##将输入的内容定向在file里
cat > file <<EOF ##将file文件里的内容隔行显示
hello
world
EOF