Linux 重定向与管道
Posted 荒唐了年少
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 重定向与管道相关的知识,希望对你有一定的参考价值。
Linux —— 重定向与管道
系统的输入输出包括:
默认输入设备:标准输入,STDIN,描述符为0
默认输出设备:标准输出,STDOUT,描述符为1
标准错误输出,STDERR,描述符为2
标准输入,标准输出,标准错误输出是三个不同的数据流
系统默认标准输入是从键盘读取,标准输出和标准错误输出是输出到显示器
Linux中I/O重定向:
输出重定向,
>:覆盖输出,作为输出目标的文件原有内容会被覆盖
示例:
[email protected]:/home/linlin/linlin/test# echo ‘The dog is so cute‘
The dog is so cute
[email protected]:/home/linlin/linlin/test# echo ‘The dog is so cute‘ > file
[email protected]:/home/linlin/linlin/test# cat file
The dog is so cute
覆盖
[email protected]:/home/linlin/linlin/test# echo ‘The cat is so smart‘ > file
[email protected]:/home/linlin/linlin/test# cat file
The cat is so smart
>>:追加输出,保留作为输出目标的原有文件
示例:
[email protected]:/home/linlin/linlin/test# echo ‘The dog is so cute‘ >> file
[email protected]:/home/linlin/linlin/test# cat file
The cat is so smart
The dog is so cute
在使用输出重定向时,可能由于某个输出目标文件内容很重要,这时就需要使用追加
输出,但在实际使用过程中,很容易错把>当做>>使用,为了防止这个错误,我们可以
使用set命令
set:shell内置功能开关
set -C:禁止对已存在文件使用覆盖重定向
强制覆盖输出使用 >|
set +C:允许对已存在内容重定向
[email protected]:/home/linlin/linlin/test# set -C
[email protected]:/home/linlin/linlin/test# echo ‘The cat is so smart‘ > file
bash: file: cannot overwrite existing file
tee:从标准输入读取数据,输出到标准输出,并保存至文件
2>:标准错误输出重定向
2>>:标准错误追加重定向
&>:重定向标准输出和标准错误输出到同一个文件
注意 &>> 不支持
<:输入重定向
<<结束符:表示在此处生成文档,当输入为结束符时表示输入结束
here document具体解释https://linux.die.net/abs-guide/here-docs.html
管道:把一个命令的输出作为另一个命令的输入
体现了Linux的基本思想之一:组合小命令完成复杂任务
使用格式:
命令1 | 命令2 | ......
例如,取出某文件的倒数第3行
[email protected]:/home/linlin/linlin/test# cat file
10086
213
3134
21343452
2341
[email protected]:/home/linlin/linlin/test# tail -3 file | head -1
3134
以上是关于Linux 重定向与管道的主要内容,如果未能解决你的问题,请参考以下文章