Linux的重定向及管道

ll /proc/$$/fd  查看当前进程所打开的文件描述符,如下图所示,0,1,2输入输出都默认在/dev/pts/4 这个终端上

  • 0:输入信息
  • 1:输出信息
  • 2:错误信息

像如下图所示,xxx即为错误的输出

如下图所示,rm 文件名出现的提示也归纳为错误

我们新开一个终端

然后在另外一个终端可以看到,注意这里是默认为/dev/pts/5中

重定向redirect

标准输出

在/dev/pts/4上做重定向输出到/dev/pts/5(等同于ls 1>/dev/pts/5)

注意看这里有新信息

去/dev/pts/5看下,输出了/dev/pts/4的内容

hostname 把输出重定向到文件data.log,如果没有会创建data.log文件,cat一下可以看到文件的内容,同样的方法使用uname -r 重定向,会发现原来的东西会被覆盖掉,此时就需要用到>>(追加)

我们用rm 删除文件重定向,发现删除文件的提示信息也算错误被输出到data.log

我们想把标准输出的信息放在一个文件里面。错误的输出信息放到另外一个文件里面去,如下图所示即可实现

如果把对的错的都放一个文件里使用 &>即可实现

还有一种写法达到和&>一样的效果,2>&1的意思是把错误的往1里面放,1的输出到/data/all.log所以错误的输出也是往/data/all.log

如果把写法反过来放,就是不对的,因为执行次序是从左往右执行,执行2>&1的时候还没明确标准输出1>往哪里放,所以还是默认在屏幕打印。后面就是把标准输出打印到/data/all.log上,产生下面的结果

同理,下图也是正确的

标准输入

把data.txt的文件作为输入的内容传给bc,从而计算出结果

 把seq -s +10命令输入到文件作为bc的输入项,可以计算出结果

 输出错误格式给bc,然后把错误重定向到erro.log文件

 管道符 CMD1 | CMD2 (左边是标准输出,右边是标准输入)

使用管道符进行运算,不用创建临时文件。

把错误执行结果传给bc。等价于 1+2 2>&1 | bc

tr命令

tr和管道灵活用法(替换、删除、去重)

去重后再添加+号

单使用cat命令,输入line1输出line1,cat>a.txt输入line1,重定向到a.txt

多行重定向,将输入以!结束的时候才会重定向到a.txt,不像上面的输入一行重定向一行

把2+4作为标准输入给bc

下图,会生成一个临时文件,执行完后就没了

tee命令

把标准输出的内容同步生成到文件中

 输出的结果同步输出到test.log

这个命令的文件会覆盖,如果不想覆盖需要加-a 参数

cat 命令发送邮件,第一种方法是以EOF结尾输入,第二种是定义文件内容的方式输入给mail

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT阿科

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值