Saya perlu membagi file biner menjadi dua. Saya bertanya-tanya apakah kepala dan / atau ekor dapat digunakan tetapi kemudian saya bertanya-tanya ... apakah aman untuk menggunakan pengalihan, pemipaan dll dengan data biner? Apakah baris baru menjadi berantakan, atau nulls diabaikan, atau mundur atau menghapus melakukan sesuatu yang istimewa? (bash, kubuntu 18,04 LTS)
command-line
18.04
bash
kubuntu
B.Tanner
sumber
sumber
split
perintahnya.Jawaban:
Ya, aman jika Anda mengirimnya ke proses lain atau menyimpannya ke file. Ada potensi "keanehan" jika Anda membiarkan stdout biner mencetak ke terminal karena dapat berisi urutan keluar (secara acak) yang sementara dapat mengacaukan tampilan terminal.
sumber
reset
dan menekan enter untuk memperbaikinya.reset<enter>
tidak benar-benar mengetik urutan karakter seperti yang terlihat oleh terminal ...stty sane; tput rs1
urutan perintah akan melakukan trik ketika ada kasus sudutreset
tidak berfungsi. Kasus-kasus seperti itu, selain disebutkan oleh Bakuriu, dapat mencakup lebar garis terminal / kolom atau saya menduga pengaturan terkait dengan komunikasi serial (baudrate / parity).Masalah utama dengan menggunakan perintah like
head
atautail
adalah bahwa mereka berorientasi garis dan file biner tidak. Jika mereka memiliki baris baru di dalamnya, mereka sering tidak digunakan untuk mewakili akhir baris dan jika mereka, mereka mungkin hanya menjadi bagian dari string seperti pesan program atau bidang data.Jika data terstruktur dengan cara apa pun, maka Anda harus memperhitungkannya dalam memilih titik perpecahan sehingga Anda tidak mematahkan struktur di tengah.
Jika Anda mengetahui struktur file, Anda dapat menggunakan perintah seperti
dengan opsi untuk hanya menyalin begitu banyak blok data dengan ukuran tertentu mulai dari offset tertentu (yang bertambah) ke dalam file.
Sepertinya
split
perintah seperti yang disebutkan oleh @egmont akan mengotomatiskan proses ini untuk Anda, tetapi tampaknya berorientasi garis secara default, jadi Anda harus menentukan opsi tambahan seperti--bytes count
memberi tahu seberapa besar masing-masing bagian file harus menjadi.Sebagai catatan tambahan, jika Anda tidak tahu apa yang ada di file, tetapi curiga file itu mengandung setidaknya beberapa data tekstual yang bermakna,
strings
perintahnya adalah cara yang bagus untuk melihat pertama kali untuk melihat apa yang Anda hadapi.akan menemukan semua karakter yang dapat dicetak yang panjangnya setidaknya enam karakter dan menampilkannya dalam pager sehingga mereka tidak terbang di terminal. Menggunakan angka yang sedikit lebih besar dari standar 4 karakter membantu menghilangkan potongan kecil data yang hanya bisa dicetak, tetapi tidak digunakan seperti itu dalam file.
Jika nanti Anda harus menjelajahi file lebih detail dengan editor biner seperti
hexedit
, Anda akan memiliki beberapa landmark yang menunjukkan di mana sesuatu yang menarik mungkin ditemukan.strings
memiliki opsi -t x
yang akan mendahului setiap string yang dicetak dengan offset ke dalam file dalam heksadesimal (o untuk oktal / d untuk desimal) sehingga Anda tahu di mana menemukannya nanti. Bahkan file yang sangat pendek banyak yang harus ditangani ketika Anda harus melihatnya dari karakter ke karakter.sumber