LINUX.ORG.RU

hexedit с выбором русской кодировки - есть ли такое?

 


0

2

Понадобилось отредактировать образ слетевшего жёсткого диска в формате is-dos одного zx spectrum - совместимого ретрокомпьютера…

Образ - 4Гб. Где-то там лежат нужные мне текстовые файлы, предположительно в 866 кодировке, или ещё в чём похуже. Навскидку не припомню, какой кодировки придерживались в ikrasoft. Мне нужно либо вытащить свои конфиги, либо по байтам исправить испорченный какой-то свиньёй boot, чтобы смочь загрузиться нормальным образом.

Пока хочу просто вытащить тексты на русском, но файл большой, и сложно в нём навигационировать. Хочется видеть прямо в консоли текст в нужно кодировке. Желательно с переключением текстового вывода на всю ширину экрана.

Можно ли как-то указать кодировку hexeditу, чтобы он вместо точек показывал русские буквы заданной кодировки? Также важна максимальная ширина для текстовой колонки, если это возможно.

Гуёвые проги не переваривают или дико тормозят на файлах свыше 2Гб. Да и не хочется покидать консоль. Перебрал кучу консольного софта: hexdump -v -C, unidump, xxd, hexyl. Лучше всего себя показал hexedit. Но далеко не самый удобный для больших файлов. И не показывает символы в заданной кодировке. Ещё бы хотелось дял удобства считывания цветовой шахматки на байтах.

Да, сачкануть вот так: cat isdos_hdd.img | iconv -c -t CP866 не поулчилось, iconv перед выводом сначала всё перекодировывает, а потом уже выводит, а не потоково, а файл слишком огромный, чтобы столько ждать.

Ответ на: комментарий от hikikomori

ошибка записи '/dev/sde': На устройстве не осталось свободного места

Ты ему не сказал, сколько блоков (параметр dd count=). Он затер до конца, а дальше уже нельзя - вот и ошибка.

Zubok ★★★★★
()
Ответ на: комментарий от hikikomori

А нет какой-то более современной системы совместимой с этим форматом?

mittorn ★★★★★
()
Ответ на: комментарий от Zubok

Я пробовал разные значения bs= и count=А как понять сколько нужно? /dev/sde = 62720s

Вот .iso на флешки также записывал, и вообще count не указывал и ни разу не было проблем. Просто записывалась вся.

hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 1)
Ответ на: комментарий от Zubok

Как-то с dd получилось. Но надо проверить, дописался ли до конца.
Нужно поискать на /dev/sde не нулевые значения, как лучше бы это сделать? Так вроде бы?

sudo xxd /dev/sde | grep -v 00 нет, не сработало.

hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 2)
Ответ на: комментарий от hikikomori

Ты как первый раз на Лоре видишь мат,оскорбления,патч бармина в спец топик ссылку кинул и забыл. А модераторы уже сами там решат прав ты или нет. И тебе просто и у модерам удобно, не надо в уведомления глядеть и выискивать там обычные уведомления и запросы. =) Кастуют модеров когда надо на месте разобраться мол ШВИМ альё нигадуюя уя уя уя =) Ну или просто как обычного лоровца, а не модератора, ой всё чё я тебя учу тут сам всё занешь.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Ясен пень. Просто редко бывает нужно, поэтому тонкостей про топик не знал.

hikikomori ★★★
() автор топика
Ответ на: комментарий от anonymous

Вам не будет сложно разъяснить не отправляя меня в экспериментаты, мне не лень, но я сейчас другое ищу.

sudo grep -obUaP "\x02" /dev/sdd

Поиск байта на устройстве.
А на самом деле я бы хотел найти все байты, отличные от нуля. Но никак не могу понять, как это сделать. Если добавить ключ v, то просто завершается без выдачи, а я знаю, что на устройстве есть \x01 и два \x02.

sudo grep -obUaPv "\x00" /dev/sdd
hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 1)
Ответ на: комментарий от anonymous

Сэнсей, я таки попробовал, однако…

sudo sh -c "pv /dev/zero > /dev/sdd"
pv: write failed: На устройстве не осталось свободного места

sdd не ошибся, теперь тут.

hikikomori ★★★
() автор топика
Ответ на: комментарий от mittorn

но всё равно:

sudo dd bs=1M count=32 if=/dev/zero of=/dev/sdd status=progress && sync
dd: ошибка записи '/dev/sdd': На устройстве не осталось свободного места

хотя на этом не прерывается, и после форматирования пишет ниже:


31+0 записей получено
30+0 записей отправлено
32112640 байт (32 MB, 31 MiB) скопирован, 23,3664 s, 1,4 MB/s

Упс, разобрался.
32Mb sd карта. не гига, мегабайта.
Хотя хоть count=132 укажи, тоже проходит.

hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 2)
Ответ на: комментарий от interrupted

Спасибо за инфу. Но что-то у меня «ошибка сборки». В принципе, xxd вполне устраивает. В отличии от hexyl, не умеющей в /dev/

hikikomori ★★★
() автор топика
Ответ на: комментарий от anonymous

Я для опытов взял другую карту меньшего объёма, т.к. на ZX Spectrum в iS-DOS большие накопители и не нужны в силу архитектуры, и легче-быстрее потом искать изменения.

hikikomori ★★★
() автор топика
Ответ на: комментарий от mittorn

Не очень понял, что значит ваша цитата.

hikikomori ★★★
() автор топика
Ответ на: комментарий от Zubok

Воистену! Но всё работало, нечего не трогал!™ Я к этому шлейфу подключал по очереди с десяток ide hdd объёмом от 1 до не больше 40Гб. 2-3 завелась, и iD-DOS их увидел. Тогда я решил, что дело в картридере, но на последок поменял шлейф и вуаля. Плохой контакт именно между hdd2sd и шлейфом. Только перекрёстные тесты и помогли выявить.

hikikomori ★★★
() автор топика
Ответ на: комментарий от beastie

Откуда я знаю. Я его не пробовал, проприетарный. Остановился на xxd + hexedit

hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.