Dalam shell, bagaimana saya bisa membaca byte dari file biner yang saya miliki, dan mencetak hasilnya sebagai angka heksadesimal?
shell
text-processing
binary
Tom Brito
sumber
sumber
Jawaban:
Menggunakan
hexdump(1)
...
sumber
od
. Ada juga hex editor vi-style bernamahexer
.hexdump -e '"\\\x" /1 "%02x"' filename
10
, yaitu 16 dalam heksadesimal. Representasi dua byte tergantung pada endianness sistem. Ketikkanman hexdump
untuk detail selengkapnya.Pilihan lain adalah od :
atau
od
memiliki banyak opsi untuk finetuning.sumber
od -t x1
format yang saya sukai.od -t test
saya dapatod: invalid character 't' in type string 'test'
--t
od --version od (GNU coreutils) 7.4
Sementara kita
od
danhexdump
, dua alat yang lebih mirip:Output sampel:
Atau, jika Anda ingin membaca byte satu per satu dan mencetaknya dalam format Anda sendiri, coba sesuatu seperti:
Output sampel:
sumber
while
lingkaran tidak bekerja untuk backslash dan karakter baris baru (dan di bash (sebagai lawan ksh93) untuk karakter kosong), dan tidak akan bekerja dengan baik di lokal utf8 untuk byte dengan bit set-8. Juga, Anda tidak perlu "od" di sana, Anda dapat menggunakanprintf '%02x\n' "'$byte"
offset
hanyalah semacam "variabel dummy" di sini; tidak memiliki penggunaan praktis. Itu hanya digunakan sebagai penggantihex
. Inilah yang kadang-kadang memengaruhi keterbacaan dengan cara negatif denganread
: variabel yang muncul tiba-tiba.$offset
dibatasi oleh subkulit, jadi saya tidak melihatnya sebagai masalah.Dua sen saya:
Saya suka ini karena Anda mengekor file buffering saat ini sambil dapat melihat hexdump langsung. Jangan lupa bahwa SEMUA yang ada di Unix adalah file dan kita dapat dengan mudah membuat perintah seperti
tail
danhexdump
untuk menyelesaikan berbagai masalah.sumber
for((i=0;i<100;i++));do echo $i >>tst2.bin;sleep 1;done&
itu bekerja dengan baik untuk memantau thx :)Komandan tengah malam adalah pilihan lain. Saya tidak tahu apakah itu tersedia untuk semua rasa unix. Anda mungkin perlu mengunduhnya terlebih dahulu.
F3 F4untuk melihat dalam editor internal / dalam mode hex.
sumber
Saya menggunakan od dengan c dan x1, ketika saya perlu mencari teks di dalam file biner:
sumber