系统的输入输出
1、何为系统的输入输出?怎样理解?
一个计算机有输入设备:像键盘;有输出设备:像显示屏、打印机等
标准输出指的是命令执行所返回的正确信息,而标准错误输出可理解为命令执行失败后,所返回的错误信息。
2、输出重定向和追加
(1)、输出重定向
在字符设备上,认为1表示正确输出;2表示错误输出
1>(默认为>) ##重定向正确输出##
如上图所示,红色标记的输出正确输出,其余均为错误输出
将正确输出重新定向到file文件中,正确输出则不在字符设备上显示,而是保存在file文件中,查看file文件内容,可以看见正确输出
2> ##重定向错误输出##
同样将错误输出重定向到westos文件中,错误输出不在字符设备上显示,而是保存在westos文件中
&> ##重定向所有输出##
将所有的输出重定向到文件file1中,不在字符设备上显示,所有的输出保存在file1文件中
2>&1 ##表示将错误的转化为正确的##
注意:重定向会覆盖原来文件中的内容
建立两个文件,file1中的内容为hahaha,file2中的内容为hehehe
将file1中的内容重定向到file2中,file2中原有的内容被覆盖,只保存了file1中的内容
(2)、输出重定向的追加
1>>(默认为>>) ##追加正确输出,即将正确输出不显示在字符设备上,而是重定向追加到一个文件中,若该文件中已有内容,对其原有内容不会进行覆盖,而是添加在其原内容之后##
2>> ##追加错误输出,即将错误输出不显示在字符设备上,而是重定向追加到一个文件中,若该文件中已有内容,对其原有内容不会进行覆盖,而是添加在其原内容之后##
&>> ##追加所有输出##
输出重定向不会覆盖原文件的内容,只是将输出内容增加在原文件内容之后
3、输入重定向
< 单行输入重定向
eg:
vim file
love is beautiful
tr ‘A-Z’ ‘a-z’ <file ##将原文件输入的小写字母,重新定向为大写字母##
LOVE IS BEAUTIFUL
2)<<EOF
EOF 输入多行重定向
(EOF开始录入 再次出现EOF表示录入结束),可以将这种人机交互的过程,写出shell脚本来输入,这样可以减少手动输入。
eg:修改密码
vim passwd.sh
passwd <<EOF
123
123
EOF
如上图需要一条一条的输入命令,更改密码时也需要手动输入
在桌面建立一个shell文件,内容如上图
这里可以看到,我们执行了shell文件后,可一次执行多行命令,且修改密码成功,不需要再手动输入密码
4、管道
(1)、管道的表示符号: |
(2)、管道的作用:将前面一条命令的输出结果作为后面一条命令的输入,管道只允许正确输出通过,错误输出不通过。
如上图,我们查看了passwd中的文件,然后通过管道,然后进行了查看文件总行数命令,结果显示了,错误命令,以及正确命令的总行数,说明了只有正确输出才能通过管道
如上图,将错误输出转化为正确输出,然后将所有输出进入管道,然后作为WC -l 命令的输入,最后只显示了查看文件的输出,总行数位19
注意:在管道中,之允许正确输出通过;通过管道的输出,将会时下条命令的输入,并且被下条命令所处理;如果需要保存一份输出,则可用"tee"命令
如上图可看到,我们用tee命令将正确输出保存到file1文件中
(3)、查看命令wc
| 命令 | 功能 |
|---|---|
| wc -l | 查看文件的总行数 |
| wc -w | 查看文件的总单词数(英文字母) |
| wc -m | 查看文件的字符数 |
| wc -c | 查看文件的字节数 |
如上图红圈所表示,直接使用wc命令后显示的四个内容分别为:文件的总行数、文件的总单词数、文件的总字符数、文件名