Відповіді:
hd
є синонімом hexdump -C
на FreeBSD і на деяких дистрибутивах Linux. hexdump
є з BSD днів ; od
є від світанку часу . Тільки od
це стандартизовано POSIX . В обґрунтування Single 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.....|
042577
, 18 біт, тобто 9/4 байт?
123
є число, представлене в базі 10 (десятковий), тоді як 0123
означає, що число представлене в базі 8 (восьмерична), тобто 0123
83. 0x123
було б в базі 16 (шістнадцятковим), тобто 291. Це не пов'язаний з od
вихідним форматом.
Насправді od
можуть відображатись шістнадцяткові / oct / dec та символи для друку:
$ 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......<
Основна відмінність, я думаю, лише історична. Також деякі версії hd
можуть виводити кольори.
od
не підтримує z
суфікс в-tx1z
hd
. Тим не менше, корисно, дякую :)
xxd
теж! : D