1、输入输出
Stdin[标准输入流]:输入是指系统外接向系统中传递的信息,编号为0
传递数据的方式有:鼠标、键盘、输入命令
stdout [标准正确输出]:
在命令顺利执行完成后产生的字符串, stdout在Linux中的输出编号1
stderr [标准错误输出] :
在命令失败执行完成后产生的字符串, stderr在Linux中的输出编号为2
2.重定向输出
输出重定向是指,以文件覆盖的方式,把命令的输出输出到指定的文件或设备中。
重定向输出的正确命令:<命令> 空格 <符号> <文件>
符号 | 用途 |
---|---|
【>】 | 重定向正确输出 |
【2>】 | 重定向错误输出 |
【&>】 | 重定向所有输出 |
示例:
我们在普通用户身份下执行find 命令,分别对该条命令的输出进行重定向
find /etc/ -name passwd #以名字的方式在etc中寻找passwd文件
我们可以看到执行find 命令后,正确输出和错误输出都会显示在屏幕上
- 正确输出重定向:把命令执行后的正确输出保存在某个文件中,屏幕不显示
find /etc/ -name passwd > file # 把正确输出保存在file文件中,屏幕只显示错误输出
- 错误输出重定向:把命令执行后的错误输出保存在某个文件中,屏幕不显示
find /etc/ -name passwd 2>file #把错误输出保存在file文件中,屏幕只显示错正确输出
- 所有输出重定向:
find /etc/ -name passwd &> file #把所有输出保存在file文件中,屏幕没有输出
用途:
a: 执行【> 文件名】 #清空文本
b: <命令> 空格 <符号> /etc/null #屏蔽输出
3.追加
<命令> 空格 <符号> 空格< 文件> ##把输出追加在文件后面,不会覆盖文件原内容
符号 | 用途 |
---|---|
【>>】 | 追加正确输出 |
【2>>】 | 追加错误输出 |
【&>>】 | 追加所有输出 |
示例:
1. 在file文件内容后追加字符(<echo>为标准输出,相当于printf)
2.在文件1的内容后面追加文件2的内容
cat file2 >> file1 #追加file2的内容到file1
4.管道
<命令> + <管道符> +<命令> #把前一条命令的输出变成后一条命令的输入(用管道处理多条命令会更有效率)
符号 | 用途 |
---|---|
【|】 | 管道符 |
【2>&1】 | 将编号为2的输出转换为1 |
【tee】 | 复制输出到指定位置 |
示例:
1. <find /etc/ -name passwd 2>&1|wc -l > #统计find命令的所有输出个数(find的输出是wc命令的输入)
2.<find /etc/ -name passwd 2>&1 | tee file |wc -l> #把find命令的所有输出保存在file 文件里,同时用wc统计个数
3.用管道符来查看历史记录的第3-5条
history | head -n 5 | tail -n 3
把history的输出作为head的输入,显示history前5行,再用head的输出作为tail的输入,显示head输出的后三行
5.输入重定向
输入重定向就是改变输入的方向,不再使用键盘作为命令输入的来源,而是使用文件作为命令的输入。
command < file #把file文件作为命令的输入
command <<EOF 内容 ....... EOF #多行输入重定向,EOF为标准写法,也可以写其他字符,但前后必须一致作为起始和结束标识
示例:
1.把file文件内容的大写全部转换成大写显示
2.我们用root用户修改密码时,会输入两次密码, 因此可以用多条输入重定向来一次执行passwd命令