如果我hexdump
在终端中没有任何参数地打开:
hexdump
当我在终端中输入内容并按 时Enter
,hexdump
将显示我输入的任何字符的十六进制值。
但hexdump
如果我输入 16 个字符,则仅显示十六进制值,例如:
在这里,我输入了该字符a
15 次并按下Enter
(因此hexdump
收到了 16 个字符 (15 a
+ \n
))。
但如果我输入的字符少于 16 个,例如:
在这里,我输入了该字符a
14 次并按下Enter
(因此hexdump
收到了 15 个字符 (14 a
+ \n
))。在这种情况下hexdump
没有显示任何内容。
我可以hexdump
显示接收到的任意长度字符的十六进制值,而不是等待接收 16 个字符吗?
笔记: 我不想 ”使用 hexdump 和 xxd 选项将每行一个字节显示为十六进制“(正如此处评论中所建议的那样)。我想做的基本上是例如知道 A 的十六进制值是多少,而不必键入额外的 15 个字符来获取它。
答案1
尝试hexdump -v -e '/1 "%02X\n"'
。每行显示一个十六进制字节,因此行输出缓冲不会阻止该行的显示。
然后,您只需键入 A 并 return 即可知道 A 的十六进制值。您仍然需要键入 return,因为 shell 缓冲区还对输入进行行缓冲。
man ascii
也有效。 :-)
答案2
可以写入同一行无缓冲包装十六进制转储到 stdbuf。 Bash 示例(由于一些读取命令选项而需要它):
while read -s -n1 k; do printf $k; done | stdbuf -o0 hexdump -e '1/1 "%x"'