我有一个问题,通过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,否则它将永远不会终止。