重定向 >,管道 |,管道重定向 tee ,顺序传参 xargs
判断依据:正确输出返回值为0,错误输出返回值不为0
1. 重定向: >
重定向一般是将输出重定向到文本
将错误重定向到正确重定向: 2>&1
包括:
(正确)覆盖重定向 >
(正确)追加重定向 >>
错误覆盖重定向 2>
错误追加重定向 2>>
全部覆盖重定向 : &>
全部追加重定向 &>>
2. 管道: |
管道的作用是传参,将上一个命令的输出传递为下一个命令的文本输入
3. 管道重定向(三通管道): tee
| tee 会把输出重定向到一个文本,并继续向下传参(| tee无法直接进行错误重定向)
管道正确覆盖重定向 | tee
管道正确追加重定向 | tee -a
管道全部覆盖重定向:
管道全部追加重定向:
常用格式(输出报错,并收集日志):./test.sh 2>&1 1>stdout.log | tee stderr.log
4. 传参: xargs
| xargs 会把上一字符串按需切片,逐个传递给下一个命令
-d:定义分隔符(如果未定义,会默认以空格[\s],table[\t],换行符[\n]等不可见字符为分隔符)
-i {}:定义切片后参数位置
-I {} sh -c ' cmd':参数可多次调用
-E:终止符,遇到此字符后停止任务,输出不包括该片段
-n:定义以多少个字符串(以分隔符为基准)为一个片段
cmd | xargs -I {} sh -c 'cp {} "目录路径1" && cp {} "目录路径2"'
参考文档:https://unix.stackexchange.com/questions/9646/show-only-stderr-on-screen-but-write-both-stdout-and-stderr-to-file