Linux之重定向与管道
一、输入输出的定义
输入:用键盘、鼠标等硬件在系统中录入字符
输出:系统接收到需要实现功能的字符后,进行进程的处理产生的字符。
在 Linux 中输出有两种形式:编号为1的正确输出,编号为2的错误输出。默认这两种输出都被系统定向到字符设备中。
二、管理输出
普通用户没有权限进入的就会有报错
测试:普通用户student 的权限问题产生的输出结果
1.重定向
> #重定向正确输出(错误的显示在 shell 里,正确的定向输出在所指定的地方)
测试:
> #会清空原文件内容
测试:
2> #重定向错误输出
测试:
&> #重定向所有输出
测试:
2>&1 #把错误输出的编号由2转换为1 (系统默认可通过管道的输出为正确)
注意:重定向会覆盖原文件内容
2.追加 #保持原文件内容不变的情况下把输出追加到文件之后
>> ##追加正确输出
2>> ##追加错误输出
&>> ##追加所有输出
测试:
3.管道
| #把输出变成下一个程序的输入,管道是用来组合多条命令的使用的。
测试:
注意:通过管道后输出会变成输入,是无法保存在文件中的。
tee #复制输出到指定位置
测试:
三、非交互式多行录入
1.修改用户密码
vim C_pass.sh
passwd
sh C_pass.sh
是不能自动运行的
vim C_pass.sh
passwd <<END
lee
lee
END
sh C_pass.sh
可以自动进行避免交互
格式:passwd << 起始标识
>原始密码
>新密码
>再次输入新密码
>起始标志
测试:
2.多行输入
cat >> haha << end
>hi
>hello
>end
测试:
注意:在 student 用户操作,cat 必须有,以保证输出。
四、练习
1.显示当前时间,显示格式为 hh:mm:ss ,并保存到文件 time.txt 文件中。
2.显示 /etc/passwd 文件的第 15-18 行内容。
3.显示 /bin 中文件包含大写字母的文件 , 保存到bin_westos_file.txt 文件中,并统计个数显示到屏幕。
4.在 student 用户下查找 /etc 下 passwd 文件,屏蔽错误输出。
#扔系统垃圾箱/dev/null,无限空设备
5.在 student 用户下查找 /etc 下 passwd 文件,正确输出保存到 /tmp/westos.out 错误输出保存到 /tmp/westos.err。
6.在 student 用户下查找 /etc 下 passwd 文件,显示命令输出并保存输出到 /tmp/westos.all 中。
查看文件westos.all