1、重定向在Linux中有时我们在命令的执行过程中,不想将执行结果显示到屏幕上,或者将其结果输出到其他位置
这时就需要重定向来解决这个问题了
首先了解一下Linux中的3种I/O设备:
0:标准输入
1:标准输出
2:标准错误输出
输出重定向:> >> 输入重定向:
>:将标准输出重定向到文件
echo "Hello" > /app/test.tab
2>:将标准错误输出重定向到文件
ls /etc /error > /app/test.tab 2> /app/error.tab
&>:将所有输出重定向到文件
ls /etc /error &> /app/test.tab
>>:将标准输出追加重定向到文件
2>>:将标准错误输出追加到文件
&>>:将所有标准输出追加到文件
<:>
<<:>
wc -l
mail -s "help" root <
指定退出时的终止符
>please help me
>thanks
>eof
2、管道符号 "|" ,用来连接命令
CMD1 | CMD2 | CMD3 | …
(1)将CMD1的标准输出传给CMD2,CMD2的标准输出输出再发给CMD3
(2)默认情况下标准错误输出不能通过管道转发,通过2>&1或|&来实现eg: [root@Centos6 ~]#cat /etc/issue /error 2>&1 | sort
cat: /error: No such file or directory
CentOS release 6.9 (Final)
Kernel \r on an \m(3)最后一个命令会在当前shell进程的子shell进程中执行
3、”-“符号在管道中"-"可以用来代替之前命令标准输出eg: tar -cvf - /app | tar -xvf - 将/app下的文件打包,打包后不记录到文件里,而是传到标准输出在经管道传给后面的
解包命令
4、tee 命令 重定向到多个目标有时我们在使用管道时需要将不同阶段的数据输出到屏幕上,而还要将数据向下传递,我们就需要用到tee命令eg: [root@Centos6 ~]#ls | tee | tr "a-z" "A-Z"