linux下的输入输出管理、重定向
输入:就是通过我们的键盘,鼠标和其他硬件在系统中录入的字符。
输出:就是系统接收到我们想要实现的功能字符后,经过进程的处理产生的字符(输出会有两种出现,编号为1 的正确输出以及编号为2的错误输出,这两种输出都会被系统默认定向到字符设备中)。
2、非交互式多行录入
例如,修改密码时执行以下操作
vim C_pass.sh
passwd
sh C_pass.sh
是不能自动运行的,属于交互式;而执行
passwd <<END
redhat
redhat
END
sh C_pass.sh
可以自动运行,避免交互。
b、2> 重定向错误输出(错误输出在file.error中,正确输出在shell中)
c、&> 重定向所有输出(所有输出在file.all中)
注:重定向会覆盖原文件内容!!!
如上图所示操作,使用vim test命令,在test文件中写入hello world内容,执行find /etc/ -name passwd > test后,cat test查看文件内容,原文件内容被find /etc/ -name passwd > test所产生的正确输出所覆盖。
d、2>&1 把错误输出的编号由2转换为1
>> 追加正确输出
2>> 追加错误输出
&>> 追加所有输出
如上图所示操作,使用vim test命令,在test文件中写入hello world内容,执行find /etc/ -name passwd >> test后,cat test查看文件内容,原文件内容后追加find /etc/ -name passwd > test所产生的正确输出,原文件内容依旧存在。
(3)管道:把上一条程序的输出变成下一个程序的输入,用于组合多条命令
例如:ls /bin | wc -l 即查看/bin的行数
注:通过管道后输出会变成输入,因此输出是无法保存在文件中的。
ls /bin | tee file | wc -l 即将输出复制到file中,同时查看/bin的行数,其中tee 作用是复制输出到指定位置。
执行cat file命令,可以查看已经保存了的输出。
例题:1.显示当前时间 , 显示格式为 hh:mm:ss, 并保存到文件 time.txt文件中。
2.显示 /etc/passwd 文件的第 15-18 行内容。
3.显示 /bin 中文件包含大写字母的文件 , 保存到bin_westos_file.txt 文件中,并统计个数显示到屏幕。
4.在 student 用户下查找 /etc 下 passwd 文件,屏蔽错误输出。
5.在 student 用户下查找 /etc 下 passwd 文件,正确输出保存到 /tmp/westos.out 错误输出保存到 /tmp/westos.err。
其中,/dev/null存放系统垃圾数据。
6.在 student 用户下查找 /etc 下 passwd 文件,显示命令输出并保存输出到 /tmp/westos.all 中