linux各种数据流重定向

  • > :以覆盖的方法将『正确的数据』输出到指定的文件或装置上

  • 1> :以覆盖的方法将『正确的数据』输出到指定的文件或装置上

  • 1>>:以累加的方法将『正确的数据』输出到指定的文件或装置上

  • 2> :以覆盖的方法将『错误的数据』输出到指定的文件或装置上

  • 2>>:以累加的方法将『错误的数据』输出到指定的文件或装置上

  • <:将原本需要由键盘输入的数据,改由文件内容来取代

  • <<:代表的是『结束的输入字符』

  • <<<:将字符串重定向到stdin。

例如:『我要用 cat 直接将输入的信息输出到 catfile 中, 且当由键盘输入 eof 时,该次输入就结束』,那我可以这样做:

[root@www ~]# cat > catfile << "eof"
> This is a test.
> OK now stop
> eof  <==输入这关键词,立刻就结束而不需要输入 [ctrl]+d

[root@www ~]# cat catfile
This is a test.
OK now stop
其中eof可以使用其他的任意字符串代替。
还有一个“<<-”,主要是为了在输出是忽略掉语句前面的一个或者多个tab符,看下面的例子:
#!/bin/bash
cat << EOF
     123
     456
EOF
输出为:
     123
     456
如果改成:
#!/bin/bash
cat <<- EOF
      123
      456
EOF
输出为:
123
456
  • 2>& 1:将正确和错误的数据全部写入到指定文件或装置上
例如:
yan@yan-vm:~$ ll /root/ /home/ > result 2>& 1
yan@yan-vm:~$ cat result
/home/:
total 16
drwxr-xr-x  4 root       root        4096 Jun  4 13:03 ./
drwxr-xr-x 23 root       root        4096 Apr 12 20:43 ../
drwx------  2 normaluser normalgroup 4096 Jun  4 13:14 normaluser/
drwxr-xr-x 24 yan        yan         4096 Jun  5 06:36 yan/
ls: cannot open directory /root/: Permission denied
用户yan无法访问/root,所以Permission denied是错误数据,其他的都是正确的数据。
下面我们来衍生几种用法,大家猜猜看运行结果是什么:
ll /root/ /home/ > result 1>&2
ll /root/ /home/ 2> result 1>&2
ll /root/ /home/ 2>&1 > result 
结果:
yan@yan-vm:~$ ll /root/ /home/ > result 1>&2
/home/:
total 16
drwxr-xr-x  4 root       root        4096 Jun  4 13:03 ./
drwxr-xr-x 23 root       root        4096 Apr 12 20:43 ../
drwx------  2 normaluser normalgroup 4096 Jun  4 13:14 normaluser/
drwxr-xr-x 24 yan        yan         4096 Jun  5 06:36 yan/
ls: cannot open directory /root/: Permission denied
yan@yan-vm:~$ cat result
yan@yan-vm:~$
分析:正确的数据合并到错误的数据,将正确的数据写到result中,但是此时正确的数据为空,所以写入到result文件中为空,
将错误的数据(包含正确的数据)显示到屏幕上。

yan@yan-vm:~$ ll /root/ /home/ 2> result 1>&2
yan@yan-vm:~$ cat result
/home/:
total 16
drwxr-xr-x  4 root       root        4096 Jun  4 13:03 ./
drwxr-xr-x 23 root       root        4096 Apr 12 20:43 ../
drwx------  2 normaluser normalgroup 4096 Jun  4 13:14 normaluser/
drwxr-xr-x 24 yan        yan         4096 Jun  5 06:36 yan/
ls: cannot open directory /root/: Permission denied
分析: 正确的数据合并到错误的数据,将错误的数据写到result中,此时错误的数据中包含正确的数据,所以result中包含正确和错误的数据。
将正确的数据写到屏幕上,但是此时正确的数据为空,所以没有任何信息显示在屏幕上。

yan@yan-vm:~$ ll /root/ /home/ 2>&1 > result
ls: cannot open directory /root/: Permission denied
yan@yan-vm:~$ cat result
/home/:
total 16
drwxr-xr-x  4 root       root        4096 Jun  4 13:03 ./
drwxr-xr-x 23 root       root        4096 Apr 12 20:43 ../
drwx------  2 normaluser normalgroup 4096 Jun  4 13:14 normaluser/
drwxr-xr-x 24 yan        yan         4096 Jun  5 06:36 yan/
yan@yan-vm:~$
分析:2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>result 后输出才被重定向到result,但标准错误仍然保持在终端。


  • <<<
todd@todd-pc:~$ cat <<< "abc"
abc
todd@todd-pc:~$

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值