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

标签 linux shell sh dd xxd

我在通过 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/

相关文章:

linux - 新的linux程序员

linux - 需要适用于 Linux 的文本转语音和语音识别工具

bash - Linux Shell脚本和递归,变量不保留值

bash - 如何将脚本的输出重定向到文件,而不是错误?

将多个 gprof 结果文件组合成一个文件

docker - 如何编写一个可以在一个命令中运行Docker卷创建的脚本

c - 了解 fork() 语句及其进程树

Linux 庆典 : timeout a program if the program hangs in there and echo 'timeout'

bash - 为什么我得到 "unexpected token ` ;'?

shell - 如何在 Fish 中将启动目录重置为我的 HOME?