O hd e o od podem substituir um ao outro?

11

hd e od são ambos visualizadores de dump de conteúdo binário. Pode hd ser usado sempre que od é e vice-versa?

    
por Tim 24.07.2011 / 16:06

2 respostas

17

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.....|
    
por 24.07.2011 / 16:27
3

Na verdade, od pode exibir caracteres hex / oct / dec e imprimíveis:

$ 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......<

A principal diferença, eu acho, é apenas histórica. Além disso, algumas versões hd podem produzir cores.

    
por 08.09.2014 / 19:20