Gil*_*il' 20
hd
是一个同义词hexdump -C
上的FreeBSD和一些Linux发行。hexdump
来自BSD 时代;od
是来自黎明的时候。只有od
是通过POSIX规范。该单UNIX理由讨论为什么od
被选为优先于hd
或xd
。
这些命令做的事情非常相似:使用八进制、十进制或十六进制表示法显示二进制文件的文本表示。两者没有本质区别。
他们有很多选项来控制输出格式,有些格式只能通过一个或另一个命令来实现。特别是,要查看二进制文件中的内容,我喜欢hd
的输出格式,右侧的列按字面显示可打印字符;od
不能那样做。
$ od /bin/sh | head -n 2 # od default: octal, 2-byte words
0000000 042577 043114 000402 000001 000000 000000 000000 000000
0000020 000002 000076 000001 000000 170020 000101 000000 000000
$ od -Ax -t x1 /bin/sh | head -n 2 # od showing bytes in hexadecimal
000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
000010 02 00 3e 00 01 00 00 00 10 f0 41 00 00 00 00 00
$ hd /bin/sh | head -n 2 # hd default output: nice
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 3e 00 01 00 00 00 10 f0 41 00 00 00 00 00 |..>.......A.....|
Run Code Online (Sandbox Code Playgroud)
小智 6
实际上od
可以同时显示十六进制/八进制/十进制和可打印字符:
$ od -Ax -tx1z /bin/sh | head -n2
000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 >.ELF............<
000010 03 00 3e 00 01 00 00 00 32 4e 00 00 00 00 00 00 >..>.....2N......<
Run Code Online (Sandbox Code Playgroud)
我想,主要区别只是历史性的。还有一些版本hd
可以彩色输出。