Linux之重定向与管道

一、输入输出的定义

输入:用键盘、鼠标等硬件在系统中录入字符

输出:系统接收到需要实现功能的字符后,进行进程的处理产生的字符。

在 Linux 中输出有两种形式:编号为1的正确输出,编号为2的错误输出。默认这两种输出都被系统定向到字符设备中。

二、管理输出

普通用户没有权限进入的就会有报错

测试:普通用户student 的权限问题产生的输出结果

Linux之重定向与管道

1.重定向

>    #重定向正确输出(错误的显示在 shell 里,正确的定向输出在所指定的地方)

测试:

Linux之重定向与管道

>    #会清空原文件内容

测试:

Linux之重定向与管道

2>    #重定向错误输出

测试:

Linux之重定向与管道

&>    #重定向所有输出

测试:

Linux之重定向与管道

2>&1    #把错误输出的编号由2转换为1 (系统默认可通过管道的输出为正确)

注意:重定向会覆盖原文件内容

2.追加    #保持原文件内容不变的情况下把输出追加到文件之后

>>    ##追加正确输出

2>>    ##追加错误输出

&>>    ##追加所有输出

测试:

Linux之重定向与管道

3.管道

|    #把输出变成下一个程序的输入,管道是用来组合多条命令的使用的。

测试:

Linux之重定向与管道

注意:通过管道后输出会变成输入,是无法保存在文件中的

tee    #复制输出到指定位置

测试:

Linux之重定向与管道

三、非交互式多行录入

1.修改用户密码

vim C_pass.sh

passwd

sh C_pass.sh

是不能自动运行的

vim C_pass.sh

passwd <<END

lee

lee

END

sh C_pass.sh

可以自动进行避免交互

格式:passwd << 起始标识

>原始密码

>新密码

>再次输入新密码

>起始标志

测试:

Linux之重定向与管道

2.多行输入

cat >> haha << end

>hi

>hello

>end

测试:

Linux之重定向与管道

注意:在 student 用户操作,cat 必须有,以保证输出。

四、练习

1.显示当前时间,显示格式为 hh:mm:ss ,并保存到文件 time.txt 文件中。

Linux之重定向与管道

2.显示 /etc/passwd 文件的第 15-18 行内容。

Linux之重定向与管道

3.显示 /bin 中文件包含大写字母的文件 , 保存到bin_westos_file.txt 文件中,并统计个数显示到屏幕。

Linux之重定向与管道

4.在 student 用户下查找 /etc 下 passwd 文件,屏蔽错误输出。

Linux之重定向与管道

#扔系统垃圾箱/dev/null,无限空设备

5.在 student 用户下查找 /etc 下 passwd 文件,正确输出保存到 /tmp/westos.out 错误输出保存到 /tmp/westos.err。

Linux之重定向与管道

6.在 student 用户下查找 /etc 下 passwd 文件,显示命令输出并保存输出到 /tmp/westos.all 中。

Linux之重定向与管道

查看文件westos.all

Linux之重定向与管道