hd
é um sinônimo para hexdump -C
em FreeBSD e em algumas distribuições Linux. hexdump
é do dias do BSD ; od
é da aurora do tempo . Somente od
é padronizado pelo POSIX . A Justificativa única do UNIX discute por que od
foi escolhido em vez de hd
ou xd
.
Esses comandos fazem coisas muito semelhantes: exibir uma representação textual de um arquivo binário, usando notação octal, decimal ou hexadecimal. Não há diferença fundamental entre os dois.
Eles têm muitas opções para controlar o formato de saída, e alguns formatos só podem ser obtidos com um ou outro comando. Em particular, para ver o que está em um arquivo binário, eu gosto do formato de saída de hd
, com uma coluna à direita mostrando caracteres imprimíveis literalmente; od
não pode fazer isso.
$ 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.....|