linux dd的返回值输出到文件,linux – 将dd数据从输出通过netcat分离到解...

dd if=/dev/zero bs=1024K count=1 | nc -q 0 | grep copied

dd状态输出无法进入grep. grep正在读取nc的输出,而不是dd.如果dd在其stdout上写了那个输出,它会转到nc,而不是grep.

值得庆幸的是,dd不会将该状态消息写入其stdout(否则它将被发送到< IP_ADDR>我们不想要),但它会将其写入分离的流:stderr(因为它是诊断消息,不是它的正常输出).

要让dd的stderr连接到一个转到grep的管道(和nc的stdout stderr不变),你可以这样做:

{ {

dd if=/dev/zero bs=1M count=1 2>&3 3>&- |

nc -q 0 3>&-

} 3>&1 >&4 4>&- | grep copied 4>&-; } 4>&1

假设shell的stdin / stdout / stderr转到I,O,E(如果从终端运行,则所有将在读写模式下打开tty设备),在上面我们将:

cmd \ fd | stdin stdout stderr 3 4

---------+------------------------------------

dd | I pipe1 pipe2 closed closed

nc | pipe1 O E closed closed

grep | pipe2 O E closed closed

或者让dd的stderr和nc的stdout stderr转到grep(但是dd的stdout仍然转到nc):

{ </

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值