使用stdin将一些十六进制字符串放到xxd不会生成任何输出

时间:2017-03-20 18:03:10

标签: linux shell sh dd xxd

我遇到了从stdin通过xxd收集数据的问题。这是命令:

xxd -r -p | dd of=/home/user/test/hex.bin obs=16

当我在shell中执行此命令时,它等待输入。我试图把' 0006303030304e430006303030304e43'然后按回车键,但看起来xxd没有得到我的输入或没有管道输出到dd。

例如,这非常有效:

echo '0006303030304e430006303030304e43' | xxd -r -p | dd of=/home/user/test/hex.bin obs=16

我想要实现的目标: 我想放一些十六进制字符串,将其转换为二进制,然后以16位块保存到文件。脚本必须不断地监听stdin。

xxd是否以这种方式工作?我试图将\ n或\ r \ n放在十六进制字符串的末尾,但xxd输出中仍然没有。

感谢您的帮助。

祝你好运!

2 个答案:

答案 0 :(得分:1)

只需将-附加到xxd -r -p命令,使其如下所示:

echo '0006303030304e430006303030304e43' | xxd -r -p - | dd of=/home/user/test/hex.bin obs=16

我在xxd的手册页中找到了这个;更具体地说,OPTIONS部分:

  

如果将 infile 指定为-个字符,则输入来自标准输入。

答案 1 :(得分:0)

xxd仍在等待输入;输入“关闭”输入文件后键入Control-D。