linux中文件输出管理
1.输入输出的定义
1.输入
就是我们的键盘,鼠标和我们用这些硬件在系统中录入的字符
2.输入
就是系统接收到我们想要实现的功能字符后,经过进程的处理产生字符
输入会有两种出现
编号1为正确输出
编号2为错误输出
默认这两种输出都会被系统定向到字符设备中
2.如何管理输出
1.非交互式多行录入
vim C_pass.sh
passwd
sh C_pass.sh
是不能自动运行的
passwd <<END
lee
lee
END
sh C_pass.sh
可以自动运行避免交互
可以看到密码直接修改成功
2.如何管理输出
1.重定向
> 重定向正确输出
2> 重定向错误输出
&> 重定向所有输出
2>&1 把错误输出的编号由2转换为1
下面我用student用户做以下实验
find /etc/ -name passwd > file.out
shell里面出现错误输出,正确输出被放到file.outlimian
find /etc/ -name passwd 2> file.out
通过cat可以看到:文件的错误输出被放入file.out,shell上显示正确输出
find /etc/ -name passwd &> file.all
通过cat可以看到:文件的所有输出被放入file.out,shell上不显示输出
"注意:从定向是会覆盖原文件内容的!!!"
vim westos
hello westos
find /etc/ -name passwd > westos
cat westos
原文件内容不见了
2.追加
保持原文件内容不变的情况下把输出追加到文件之后
>> 追加正确输出
2>> 追加错误输出
&>> 追加所有输出
find /etc/ -name passwd >> westos
find /etc -name passwd 2>> westos
find /etc -name passwd &>> westo
在这里我们以追加错误输出为例:
在错误的输出定义到westos中后,依然保留了正确输出
3.管道
把输出变成下一个程序的输入
管道是用来组合多条命令的使用的
ls /bin | wc -l
ls /bin表示列出 / bin ,通过管道让第一条指令的输出变成第二条指令的输入,最终统计出/bin的行数
"注意:通过管道后输出会变成输入,那么是无法保存在文件中的"
tee 复制输出到指定位置
ls /bin | tee file | wc -l
cat file file中已经保存了输出