Добавить в корзинуПозвонить
Найти в Дзене
Old Programmer

Уроки по языку программирования bash от Old Programmer. Number 21

Доброго времени суток на канале Old Programmer. Канале о программировании и программистах. Сегодня продолжение разговора о программировании на языке bash. Несколько полезных ссылок для вас Программирование на языке bash. Чтение и запись двоичных файлов Мы продолжаем заниматься языком программирования bash. И сегодня в небольшой статье мы продолжим тему двоичных файлов. Только теперь поговорим и о записи таких файлов. Попробуем написать программу побайтового копирования двоичного файла. На самом деле в Linux и так есть команды, позволяющие копировать файлы, возьмите хотя бы команду cp, или команду xxd или даже команду tar. В данном случае мы хотели бы рассмотреть программный вариант с возможностью обработки каждого байта отдельно. Но главная наша задача не много углубить наши знания в области обработки данных в bash. И так у нас есть бинарный файл, нам создать его копию. Надо отметить, что термин «бинарный файл» означает только то, что нас не интересует, что он себя представляет реа

Доброго времени суток на канале Old Programmer. Канале о программировании и программистах. Сегодня продолжение разговора о программировании на языке bash.

Несколько полезных ссылок для вас

Язык программирования bash. Ссылки на ресурсы
Old Programmer29 марта 2022
Список разделов канала Old Programmer, канала о программировании и программистах
Old Programmer27 мая 2021
Программирование и в шутку и всерьез

Программирование на языке bash. Чтение и запись двоичных файлов

Мы продолжаем заниматься языком программирования bash. И сегодня в небольшой статье мы продолжим тему двоичных файлов. Только теперь поговорим и о записи таких файлов.

Попробуем написать программу побайтового копирования двоичного файла. На самом деле в Linux и так есть команды, позволяющие копировать файлы, возьмите хотя бы команду cp, или команду xxd или даже команду tar. В данном случае мы хотели бы рассмотреть программный вариант с возможностью обработки каждого байта отдельно. Но главная наша задача не много углубить наши знания в области обработки данных в bash.

И так у нас есть бинарный файл, нам создать его копию. Надо отметить, что термин «бинарный файл» означает только то, что нас не интересует, что он себя представляет реально: текст, исполняемый файл, документ, изображение и т. д.

Как читать бинарный файл мы уже знаем из предыдущего урока. А вот для записи в файл можно использовать команду xxd, которая умеет работать с шестнадцатеричными кодами файла — читать из файла (потока) и выводить в поток. Мы можем передавать байт при помощи конвейеризации, например, из команды echo в команду xxd и потом перенаправлять результат работы команды в файл.

Пример программы ниже. Имя исходного файла и файла, куда будет произведено копирование, указывается в командной строке.

Данный подход работает, но чрезвычайно медленно. Т.е. применим для не больших файлов. Но можно использовать команду printf для непосредственной записи в файл, опять же путем перенаправления потока. Ниже представлена такая программа. Она работает в несколько раз быстрее первой. Кроме того, я в ней добавил обработку входных параметров.

Наконец ниже представлен еще один вариант копирования из одного двоичного файла в другой. Здесь для конвейерной передачи данных мы используем непосредственно весь массив и это, конечно, тоже дает выигрыш в скорости работы кода (по сравнению с первой программой).

На этом, все. Продолжаем программировать на bash и получать от этого удовольствие.

До скорого!

Вы там держитесь. Счастья и здоровья вам. И до скорых встреч на канале Old Programmer. И не забудьте комментировать, ставить лайки и подписываться.

Программирование и в шутку и всерьез
Смелый пингвин - Linux
Смелый пингвин - Linux