Linux系统的输入输出

1.理解系统的输入输出

2.管理系统的输入输出

输出重定向

> 定向正确输出
2> 定向错误输出
&> 定向所有输出

注意:定向会覆盖原有内容

示例:

注意:以下实验必须在普通用户下执行(root用户下执行没有错误输出因为root用户有所有文件的权限)

在student用户下执行命令:find /etc/ -name passwd    注:在/etc/文件下寻找passwd文件

系统会输出正确和错误的输出(错误的输出是因为student用户没有此文件的权限)

运行:find /etc/ -name passwd> file  

由上图和上上个图的对比可以发现当将正确输出导入到file文件中时候,命令的显示结果就只有错误的输出了,查看file文件

file文件中只有正确的输出

如果将错误的输出导入到文件file中,实验结果相反

将所有的输出都导入到file文件中(可以设想以下实验结果:命令之后在shell中没有显示输出,file文件中既有正确输出也有错误输出)

实验结果与预期相符

>file 清空file

实验结果:

输出追加

>> 追加正确输出到文件的末尾
2>> 追击错误的输出到文件的末尾
&>> 追加所有输出到文件的末尾

 注意:输出追加不会覆盖原文件的内容

示例:

 如上图: file文件原有内容为hello world,运行find /etc/ -name passwd >>file命令后,shell将错误输出输出到屏幕上正确输出追加到file文件之后

运行 find /etc/ -name passwd 2>>file 命令后,将正确输出输出到shell上,错误输出追加到文件file之后,如下图:

 

命令:find /etc/ -name passwd &>>file

结果:将所有输出追加到file文件后,shell上不显示,如下图

管道命令(pipe)

 如果我们想知道/etc/下有多少个文件,我们可以使用ls /etc/进行查阅,不过ls /etc/命令之后输出太多导致一下子就将屏幕填满了导致,不知道前面输出的内容是什么,这时候我们就想用less进行查看,可以用如下命令进行协助

ls -al /etc/ |less

之后就可以用less进行查看了

注意:“|“符只能处理前面命令传来的正确信息不会传递错误信息

管道命令必须接受来自前一个命令的数据成为输入的数据继续处理才行(mv ,ls,cp等命令不能在管道符后面)

test

  • 显示当前时间,显示格式为hh:mm:ss并保存到文件time.txt文件中(这里用的tee命令,实际上tee会将接收到的数据同时传到屏幕上和指定的文件中)
  • 显示/etc/passwd文件的第15-18行内容
  • 显示/bin文件中所有包含大写字母的文件,保存到bin_westos_file.txt文件中,并统计个数到屏幕
  • 在student用户下在/etc/目录下查找passwd文件,屏蔽错误输出
  • 在student用户下查找/etc下passwd文件正确输出保存到/tmp/westos.out,错误输出保存到/tmp/westos.err文件中
  • 在student用户下查找/etc下passwd文件,显示命令输出并保存输出到/tmp/westos.all文件中
  •  

"<"从键盘上输入的数据改用文件内容来代替

命令:cat>catfile<file     ###将file文件中的文件内容输入到catfile中

"<<"结束输入

命令:cat>catfile<<"eof"

zai

在输入eof后系统会结束输入

猜你喜欢

转载自blog.csdn.net/halobios_/article/details/86071917