如果我在终端中不带任何参数地打开hexdump:
hexdump当我在终端中键入某些内容并按Enter时,hexdump将显示我键入的任何字符的十六进制值。
但是,只有当我键入16个字符时,hexdump才会显示十六进制值,例如:

在这里,我输入了字符a 15次,然后按了Enter(因此hexdump接收了16个字符(15a + \n))。
但是,如果我键入的字符少于16个,例如:

在这里,我输入了字符a 14次,然后按了Enter(因此hexdump接收了15个字符(14个a+ \n))。在这种情况下,hexdump没有显示任何东西。
我是否可以让hexdump显示它接收到的字符长度的十六进制值,而不是等待16个字符的接收?
注意:我不想“为十六进制和xxd同时使用选项,以一行十六进制显示一个字节”(如这里的注释中所建议的)。我想要做的基本上是,例如,知道什么十六进制值的A,而不必键入额外的15个字符才能得到它。
发布于 2017-11-04 09:09:33
试试hexdump -v -e '/1 "%02X\n"'。这将显示一行一个十六进制字节,因此行输出缓冲区不会阻止该行的显示。
然后您只需键入A并返回以知道A的十六进制值,您仍然必须键入return,因为shell缓冲区也会对输入执行行缓冲。
man ascii也能工作。:-)
发布于 2020-12-14 14:50:59
可以将未缓冲的十六进制写入同一行到stdbuf。Bash示例(由于某些读取命令选项而需要它):
while read -s -n1 k; do printf $k; done | stdbuf -o0 hexdump -e '1/1 "%x"'https://unix.stackexchange.com/questions/402452
复制相似问题