Hd ve od birbirinin yerini alabilir mi?


11

hdve odher ikisi de ikili içeriğin döküm izleyicisidir. Can hdher yerde kullanılabilir odve tersi?


4
... ve unutmayın xxd! : D
Aaron D.Marasco

Yanıtlar:


19

hdeşanlamlıdır hexdump -Cüzerinde FreeBSD ve bazı Linux dağıtımlarında. hexdumpila BSD gün ; oddan Zamanın başlangıcından . Sadece odbir POSIX tarafından standardize . Tek UNIX gerekçe geçen niçin odtercih edilerek seçildi hdya xd.

Bu komutlar çok benzer şeyler yapar: sekizli, ondalık veya onaltılık gösterimi kullanarak ikili bir dosyanın metinsel gösterimini görüntüler. İkisi arasında temel bir fark yok.

Çıkış formatını kontrol etmek için birçok seçeneğe sahiptirler ve bazı formatlara yalnızca bir veya diğer komutla ulaşılabilir. Özellikle, bir ikili dosyada ne bir bakış görmek için, hdçıktı biçimini seviyorum , sağda bir sütun tam olarak yazdırılabilir karakterler gösteren; odbunu yapamam.

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

Teşekkürler! Od ile sekizlik çıktıda, bir rakam üç bit anlamına mı geliyor? Mesela 04257718 bit mi yani 9/4 bayt mı?
Tim

@Zaman Evet, sekizli , her basamağın 3 bite (ve onaltılık , 4 bite) karşılık geldiği anlamına gelir . 042577 aslında 16 biti (2 bayt) temsil eder; bu formattaki bir bloktaki ilk basamak daima 0 veya 1 olacaktır. sekizli (042577) = onaltılık (7f45) = ondalık (32581).
Gilles 'SO- kötü olmayı kes'

Teşekkürler! Diğer kaynaklardan, sekizli sayıların ek bir 0 ile başladığını okudum. 1 ile başladığında ne anlama geliyor?
Tim

@Tim Birçok programlama dilinde, 123taban 10'da (ondalık) temsil edilen bir sayıdır, oysa 0123sayının taban 8'de (sekizli), yani 012383'te temsil edildiği anlamına gelir 0x123. Taban 16'da (onaltılı), yani 291'de temsil edilir. odçıktı biçimi ile ilgisiz .
Gilles 'SO- kötü olmayı kes

Birçok? Herhangi bir C benzeri ve türev söyleyebilirim - evet, gerçekten. Başka? Kaç?
poige

5

Aslında odhem hex / oct / dec hem de yazdırılabilir karakterleri görüntüleyebilir:

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

Temel fark, sanırım, sadece tarihseldir. Ayrıca bazı sürümler hdrenkli çıktılar verebilir.


OSX od, zson eki desteklemiyor-tx1z
üçlü

Aslında en büyük sorun, bir yerine trenlerin hatırlanmasıdır hd. Yine de, yararlı, teşekkür ederim :)
poige
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.