我在通过 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 位 block 的形式保存到文件中。该脚本必须不断地监听标准输入。
xxd 是这样工作的吗?我尝试将\n 或\r\n 放在十六进制字符串的末尾,但 xxd 输出中仍然没有任何内容。
感谢您的帮助。
最好的问候!
最佳答案
只需将 -
附加到 xxd -r -p
命令,如下所示:
echo '0006303030304e430006303030304e43' | xxd -r -p - | dd of=/home/user/test/hex.bin obs=16
我在 xxd
的手册页中找到了这个;更具体地说,OPTIONS
部分:
If infile is specified as a
-
character, then input is taken from standard input.
关于linux - 使用标准输入将一些十六进制字符串放入 xxd 不会生成任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42910838/