Bagaimana cara membuat hex dump yang tidak dimodifikasi dari file biner di Linux menggunakan bash? The od
dan hexdump
perintah kedua ruang insert di dump dan ini tidak ideal.
Apakah ada cara untuk hanya menulis string panjang dengan semua karakter hex, spasi minus atau baris baru dalam output?
Jawaban:
xxd -p file
Atau jika Anda ingin semuanya dalam satu baris:
xxd -p file | tr -d '\n'
sumber
Format string dapat membuat hexdump berperilaku tepat seperti yang Anda inginkan (tanpa spasi sama sekali, byte demi byte):
1/1
berarti "setiap format diterapkan satu kali dan mengambil satu byte", dan"%.2x"
merupakan format string yang sebenarnya, seperti pada printf. Dalam hal ini: angka heksadesimal 2 karakter, memimpin nol jika lebih pendek.sumber
-v
atau itu akan menjatuhkan byte berulang dan menggantinya dengan tanda bintang.; echo
membuatnya tidak mungkin digunakan sebagai bash alias)alias to_hex="hexdump -ve '1/1 \"%.2x\"' && echo"
hexdump -ve '"%.2x"'
hexdump -n 13 -e '13/1 "%.2x" "\n"'
Tampaknya tergantung pada detail versi
od
. Di OSX, gunakan ini:(Itu dicetak sebagai tipe hex byte, tanpa alamat. Dan spasi putih dihapus setelahnya, tentu saja.)
sumber
-v
dalam konteks ini, kalau tidak lewati dengan berulang*
.Perl one-liner:
sumber
Jawaban lainnya lebih disukai, tetapi untuk solusi Bash murni, saya telah memodifikasi skrip dalam jawaban saya di sini untuk dapat menghasilkan aliran hex karakter yang mewakili konten file. (Mode normalnya adalah untuk meniru
hexdump -C
.)sumber