Я должен разделить двоичный файл на два. Я задавался вопросом, могли ли голова и/или хвост использоваться, но затем я задался вопросом..., действительно ли безопасно использовать перенаправление, передавая по каналу и т.д. с двоичными данными? Новые строки становятся имевшими предосудительные отношения, или аннулирует проигнорированный, или клавиша Backspace, или удалите, делают что-то специальное? (удар, kubuntu 18.04 LTS)
Да безопасно, если Вы передаете его по каналу к другому процессу или сохраняете его в файл. Существует потенциальная "странность" при разрешении двоичному файлу stdout печать к терминалу, так как это может содержать escape-последовательности (наугад), которые могут временно испортить дисплей терминала.
Основная проблема с использованием команд как head
или tail
это, они ориентированы на строку, и двоичные файлы не. Если у них действительно есть новые строки в них, они часто не используются для представления конца строки и если они, они могут быть, просто часть строк как сообщения программы или поля данных.
Если данные структурированы всегда, то необходимо принять это во внимание в выборе точек разделения, таким образом, Вы не повреждаете структуры в середине.
Если Вы знаете структуру файла, можно использовать команду такой как
dd -if input-file -of output-file ...
с опциями только скопировать столько блоков данных определенного размера, запускающегося при конкретном (увеличенном) смещении в файл.
Это похоже split
команда, как упомянуто @egmont автоматизирует этот процесс для Вас, но это, кажется, ориентировано на строку по умолчанию, таким образом, необходимо будет указать дополнительные опции такой как --bytes count
сказать это, насколько большой каждая часть файла должна быть.
Как примечание стороны, если Вы не знаете то, что находится в файле, но подозреваемом, это содержит по крайней мере некоторые значимые текстовые данные, strings
команда является отличным способом взятия первого, надеются видеть то, с чем Вы имеете дело.
strings -n 6 file | less
найдет все выполнения печатаемых символов по крайней мере шестью символами в длине и отобразит их в пейджере, таким образом, они не летят на терминале. Используя число, немного больше, чем значение по умолчанию 4 символов, помогает устранить крошечные отрывки данных, которые просто, оказывается, являются печатаемыми, но не используются тот путь в файле.
Если позже необходимо исследовать файл более подробно с двоичным редактором такой как hexedit
, у Вас будут некоторые ориентиры, которые указывают, где что-то интересное могло бы быть найдено.
strings
имеет опцию -t x
это будет предшествовать каждой печатной строке с ее смещением в файл в шестнадцатеричном (o для octal/d для десятичного числа), таким образом, Вы будете знать, где найти его позже. Даже очень короткие файлы много для контакта с тем, когда необходимо посмотреть на них символ символом.