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



我有一个问题,通过xxd从stdin收集数据。这是命令:

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 是这样工作的吗?我尝试将 或 \r 放在十六进制字符串的末尾,但 xxd 输出上仍然没有任何内容。

感谢您的任何帮助。

此致敬意!

xxd仍在等待输入;按回车键后键入 Control-D 以"关闭"输入文件。

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

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

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

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

如果您不使用 Ctl-D 终止标准输入,则需要将其馈送,直到缓冲区填充管道,然后任何内容都移动到下一个进程。 最后,您仍然必须输入 Ctl-D,否则它将永远不会终止。

最新更新