Bagaimana cara mencetak 10 byte pertama dalam heksadesimal file?

Jawaban:

11

Saya datang ke sini melihat tiga jawaban berpikir bahwa saya tidak punya apa-apa untuk ditambahkan, dan bahwa ini akan menjadi latihan dalam berapa banyak orang yang dapat memposting 1-liner yang sama pada menit pertama pertanyaan yang diajukan. Tapi saya menemukan orang menggunakan beberapa hexdumpalat baru-ketinggalan jaman . Perintah yang cara lebih dari 2 huruf; itu menyinggung beberapa basis selain The One True Base (basis 8); dan bahkan jelas dari namanya apa yang dilakukannya. Jelas ini bukan cara Unix.

Jadi, inilah kegembiraan od("octal dump").

GNU pertama, seperti yang akan Anda temukan di Linux Mint Anda:

od --format=x1 --read-bytes=10 foo

Sekarang BSD, di mana ironi itu sebenarnya adalah program yang sama dengan hexdump:

od -t x1 -N 10 foo
JdeBP
sumber
1
Saya memotong gigi pada mikroprosesor 8-bit di mana semuanya dilakukan dalam hex. Jadi bagi saya, satu pangkalan yang sebenarnya adalah 16. Saya telah menggunakan Unix sejak sekitar '84 dan satu hal yang selalu saya benci tentang itu adalah fiksasi dengan oktal: Saya tidak tahan dengan oktal dengan pengkodean 3-bitnya yang tidak akan mulus dari satu hingga beberapa byte. Dan literal integer literal dalam C dan bahasa lainnya adalah kecelakaan kereta yang masih mendatangkan malapetaka sampai hari ini. (+1, omong-omong)
Adrian Pronk
11

Opsi -l len | -len lenadalah untuk: berhenti setelah menulis <len>oktet.

Gunakan dengan file seperti ini:

xxd -l 10 file

atau

hexdump -C -n 10 file

di mana -n lensama dengan -lopsi dari xxd.

erik
sumber
5

Anda dapat menggunakannya xxduntuk melakukan itu.

$ xxd -ps -l 10 FILENAME
546865204d4954204c69

Ini mencetak 10 byte pertama ( -l 10) FILENAMEdalam format hex biasa ( -ps).

Daniel Beck
sumber