一、概念
输入和输出是linux系统中最常见的元素及特征,绝大多数命令和程序都需要输入,并且会有输出,数据流重定向和管道就是为数据的输入和输出的灵活调用而服务的。
输入和输出有通道之分,具体通道可见下表,可以简单理解为正常的输出就是stdout,报错就是stderr
编号 | 通道名称 | 描述 |
0 | 标准输入 | stdin |
1 | 标准输出 | stdout |
2 | 标准错误 | stderr |
3+ | 其他文件 | 读/写 |
其中,管道的主要用于将上一个命令的输出作为输入注入到下一个命令,方便下一个命令进行调用或者筛选。而数据流重定向则是用于将上一个命令的输出作为输入注入到下一个文件。
二、常规使用
1.数据流重定向的作用
使用 | 说明 |
>file | 重定向stdin到文件中,会覆盖内容,完全重写 |
2>file | 重定向stderr到文件中,会覆盖内容,完全重写 |
&>file | 重定向stdin和stderr到文件中,会覆盖内容,完全重写 |
>>file | 重定向stdin到文件中,会延续已有内容,不重写 |
2>>file | 重定向stderr到文件中,会延续已有内容,不重写 |
&>>file | 重定向stdin和stderr到文件中,会延续已有内容,不重写 |
2.管道
用竖线分割,将A命令的输出作为标准输入注入B命令:A|B
3.tee命令
当管道和重定向组合时,数据将直接从管道注入文件,不会输出,如果此时想要数据在注入文件的同时输出到终端,就可以使用tee命令:A| tee file