hd和od可以互相替换吗?

Tim*_*Tim 12 utilities od binary

hd并且od都是二进制内容的转储查看器。可以hd在任何地方使用od,反之亦然?

Gil*_*il' 20

hd是一个同义词hexdump -C的FreeBSD和一些Linux发行。hexdump来自BSD 时代od是来自黎明的时候。只有od通过POSIX规范。该单UNIX理由讨论为什么od被选为优先于hdxd

这些命令做的事情非常相似:使用八进制、十进制或十六进制表示法显示二进制文件的文本表示。两者没有本质区别。

他们有很多选项来控制输出格式,有些格式只能通过一个或另一个命令来实现。特别是,要查看二进制文件中的内容,我喜欢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可以彩色输出。