系统的输入与输出
简单的输入符号
1.<
<可以进行单行的输入。
例:在westos文件里输入大写的WESTOS,通过**<显示为小写westos**,但不对原文件进行修改
首先,通过vim对westos文件输入WESTOS
下来输入"tr ‘A-Z’ ‘a-z’ < westos"即可显示
2.<<+任意字符
<<可以进行多行的输入。
例:通过<<对当前用户登录密码修改为123
①创建一个test.sh文件,并且使用vim对其进行编辑(vim可以直接创建)
②在其中输入
“passwd<<EOF
123 录入第一行
123 录入第二行
EOF”
之后退出并保存
③再输入“sh test.sh”即可完成修改
注:使用<<时,前后的”<<“后面的字符应保持一致
管理输入输出的符号
1.输出重定向
> 正确输出的重定向
2> 错误输出的重定向
&> 所有输出的重定向
注:默认正确为编号1,错误为编号2。且重定向会覆盖原文件的内容。
注:由于root用户下权限的原因,没有错误输出,因此以下实验在非root用户下进行
例:
①定向正确输出到file(此时会显示错误输出)
需执行命令:
[student@foundation85 Desktop]$ find /etc/ -name passwd > file
②定向错误输出到file(此时会显示正确输出)
[student@foundation85 Desktop]$ find /etc/ -name passwd 2> file1
③定向所有输出到file2
[student@foundation85 Desktop]$ find /etc/ -name passwd &> file2
④当定向输出空白时即为清空file
[student@foundation85 Desktop]$ > file
2.输出追加
>> 在文件中追加正确输出
2>> 在文件中追加错误输出
&>> 在文件中追加所有输出
注:追加不会覆盖原文件内容
例:
①追加正确输出到file1(此时会显示错误输出)
需执行命令:
[student@foundation85 Desktop]$ find /etc/ -name passwd >> file1
②追加错误输出到file(此时会显示正确输出)
[student@foundation85 Desktop]$ find /etc/ -name passwd 2>> file
③追加所有输出到file2
[student@foundation85 Desktop]$ find /etc/ -name passwd &>> file2
输入重定向
通过<与<<EOF可以实现输入的重定向
例:
在shell中对file输入
“hello
WORLD”
需执行命令:
[student@foundation85 Desktop]$ cat <file >>EOF
>hello
>WORLD
>EOF
管道
管道,即“|”,管道的作用是把前一条指令的输出变成后一条指令的输入。
注:
1.管道只允许正确输出通过
2.通过管道的输出就直接变成了输入,而输入则需要被第二条指令处理
3.如果需要保存前一条指令的输出,则需要复制一分输出,需要用到“tee”指令
例:
①利用管道统计输出的行数(此时会显示错误输出,并且在最后会显示正确输入的行数,因为错误输出不能通过管道)
需执行命令:
[student@foundation85 Desktop]$ find /etc/ -name passwd | wc -l
②利用管道统计输出的行数(此时会显示总行数,因为错误输出的编号为2,而通过“2>&1”可以将编号变为1)
需执行命令:
[student@foundation85 Desktop]$ find /etc/ -name passwd 2>&1 | wc -l
③利用管道统计输出的行数,并且通过tee将前一条指令的输出保存到file中
需执行命令:
[student@foundation85 Desktop]$ find /etc/ -name passwd 2>&1 | tee file | wc -l