重定向管道
1. 标准输出、错误
- 0 标准输入 /dev/stdin
- 1 标准输出 /dev/stdout
- 2 标准错误 /dev/stderr
2. 重定向
重定向:将默认的标准输入、输出、错误设备改变到新的目标
2.1 重定向覆盖 >
> 将默认的标准输入、输出、错误设备改变到新的目标,如果原目标存在,此操作将覆盖原目标
- 1> 或 > 标准输出重定向
- >| 强制覆盖
- 2> 标准错误重定向
- &> 、 2>&1、1>&2 标准输出和错误重定向到一起
set -C 禁止覆盖原文件
set +C 允许覆盖原文件
2.2 重定向追加 >>
>> 将默认的标准输入、输出、错误设备改到新的目标,此操作不会覆盖原目标,只会追加在原目标之后
- >> 将标准输出追加至
- 2>> 将标准错误追加至
- &>> 将标准输出、错误追加到一起
2.3 多行重定向
- 使用 “<<终止词” 命令从键盘直到终止词位置之前的所有文本都发送作为标准输入,有时被称为就地文本(here documents)
- 其中终止词可以是任何一个或多个符号,比如:!,@,$,EOF(End Of File),magedu等,其中EOF 比较常用
[root@centos8 data]# cat <<EOF
> AFAS
> dafas
> ga
> EOF
AFAS
dafas
ga
2.4 转换或删除 tr
tr 此命令可以将选中的字符进行转换或删除
- -c 取字符集的补集
- -d 删除所有属于第一字符集的字符
- -s 去重
[root@centos8 data]# cat f1.txt
aaaabaaacdagafadsg
[root@centos8 data]# tr -dc 'bcgf' < f1.txt
bcgfg
[root@centos8 data]# cat f1.txt
aaaabaaacdagafadsg
[root@centos8 data]# tr -s 'a' < f1.txt
abacdagafadsg
3.管道 |
管道 “|(管道符)” 连接多个命名,将前一个命令的输出作为下一个命令的输入,所有命令会在当前shell进程的子shell进程中执行
[root@centos8 data]# echo "bbaacc" | tr -d 'aa'
bbcc
3.1 tee命令
tee命令可以重定向到多个目标
[root@centos8 data]# cat <<EOF| tee f1.txt
> hello
> EOF
hello
[root@centos8 data]# cat f1.txt
hello