输出重定向

6 篇文章 0 订阅
3 篇文章 0 订阅

输出重定向

  今天杰哥让我在手机shell中查找一个文件,然后让我用find命令,但是该手机的shell有点问题,在查找的时候会不断报错。那怎么找到我需要的文件路径呢,只见我师父小手一挥,在命令行敲出这一段命令$find -name filename 2>/dev/null,结果什么也没有输出。我马上质疑道,这个“>”重定向不是把所有的输出都放到/dev/null里面了,怎么可能找到想要的信息。我师父马上反驳道,一看你就不了解重定向,我马上解释道,我知道重定向也知道定向到/dev/null里面是什么意思,但是我没见过在前面加个“2”的,然后我师父就让我自己去查一下,仔细了解一下。我一查,果不其然,还是我才疏学浅,“2”指的是文件描述符,也就是stderr,Unix三个最基本的文件描述符0,1,2,分别对应stdin,stdout,stderr。那就很好理解了,“2>”的意思就是将所有的stderr都定向到/dev/null中,但是stdout并不会被定向进去,因而会输出出来,这也就是利用文件描述符对重定向内容进行过滤,十分的实用。

1.关于输出重定向的详细理解

  • ls . >test.1
      该条命令就是将ls命令获得的输出流,重定向到文件test.1中,如果没有该文件,则会新建该文件。
    在这里插入图片描述

  该命令省略了“>”前面的“1”,当我们不指定0/1/2时,会默认他为1,也就是stdout。

  • lt test.1 2> test.2
      因为我们shell里面没有“lt”命令,所以当我们用他的时候,就会产生一条stderr,但是我们将stderr重定向到了test.2里面,所以在命令行并不会有什么显示,但是我们cat test.2的时候,就会看到刚才产生的stderr。如果对这两个例子都了解了,那么对重定向就有一定的认识了。如果想加深了解,建议可以看一下Unix文件描述符相关的内容。
    在这里插入图片描述

2.总结一下

  • command > filename       把标准输出重定向到一个新文件中
  • command >> filename       把标准输出重定向到一个文件中(追加)
  • command 1 > fielname       把标准输出重定向到一个文件中
  • command > filename 2>&1     把标准输出和标准错误一起重定向到一个文件中
  • command 2 > filename       把标准错误重定向到一个文件中
  • command 2 >> filename       把标准输出重定向到一个文件中(追加)
  • command >> filename 2>&1    把标准输出和标准错误一起重定向到一个文件中(追加)
  • command < filename >filename2   把command命令以filename文件作为标准输入,以filename2文件作为标准输出
  • command < filename     把command命令以filename文件作为标准输入
  • command << delimiter    把从标准输入中读入,直至遇到delimiter分界符
  • command <&m     把文件描述符m作为标准输入
  • command >&m     把标准输出重定向到文件描述符m中
  • command <&-     把关闭标准输入

3.双重重定向

  • tee [-a] file
      即在重定向数据到目标文件的同时,还要保证数据能够正常输出,使用tee命令。-a 表示往文件尾添加内容。
  • last | tee last_backup
      相当于备份了一遍last的输出。
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值