Re: смотрелка двоичных файлов со структурой
Sergey Spiridonov -> debian-russian@lists.debian.org @ Thu, 26 Mar 2015 17:42:52 +0100:
>> SS> Речь идёт не о смотрелке различных форматов. Смотрелка это нечто другое.
>> SS> Например, какая смотрелка у ZIP? Squeeze? Unzip -v? Это не то что
>> SS> требуется. Нужен именно просмотр бинарной структуры файла.
>> SS> А таких утилит в дистрибутиве нет.
>>
>> Так. Давай с самого начала. КОМУ и ЗАЧЕМ ИМЕННО нужен просмотр
>> БИНАРНОЙ СТРУКТУРЫ zip? Ну, кроме человека, который пытается исправить
>> баг в unzip - тут понятно.
SS> А ты можешь сказать кому и зачем нужна утилита cat или file? В том и
SS> дело что это утилита общего назначения и представить, где её будут
SS> использовать трудно заранее.
Я не прошу привести ВСЕ примеры. Достаточно некоторых. Но реальных,
без какой бы то ни было гипотетичности.
Я пользуюсь иногда cat и file, могу рассказать, зачем.
cat очень часто используется, помимо просто вывода коротких файлов для
просмотра, когда нужно посмотреть файл с удаленного сервера. Или иным
образом обработать, если инструмент для обработки у меня локальный. Но
наиболее частый use case -
ssh server cat file | less
Вот прям из history:
ssh minas cat /etc/exim4/data/spam-subjects | less
Реже используется в обратную сторону - создать файл на сервере из вывода
локальной программы -
program | ssh server cat > file
Еще можно использовать, чтобы собирать в один файл программу и данные
(перловый хендл DATA). Тут довольно хитрый use case - нужно в скрипте
запустить на удаленной машине скрипт с данными, не копируя туда файлы
(read-only filesystem). perl хорош, в частности, тем, что умеет сожрать
скрипт с stdin, так что можно сказать ssh server perl < script, но тогда
скрипт и данные должны быть в одном файле. Впрочем, в последний раз я
для этого использовал не cat, а type, потому что локальной машиной в той
задаче была винда. Но отлаживал скрипт на линуксе, и вот команда из
history:
(cat win-upgrade/pre-remove.perl; echo 'mfd/*.azt') | ssh mfd@192.168.50.13 perl
file, надо сказать, используется довольно редко. В норме в ситуации,
когда с какой-нибудь винды приехал файл с неправильным расширением (и
виндовый юзер по этому поводу не может его посмотреть), чтобы file
догадался, если получится, что там за формат на самом деле. Пару раз
использовал, чтобы выяснить, 32- или 64-битовый вот этот вот бинарник.
Еще пару раз - разгребая найденные fsck потерянные файлы. Та же, по
сути, задача, что с виндой.
Из history:
file src/tmp/mvk
file 006.009.jps
file /gate/exchange/Песни-project/Untitled-96/Gnomes.cpr
В первом случае я проверял 32 vs. 64, а во втором и третьем выяснял
формат.
>> Use case, пожалуйста. В подробностях, с полной конкретикой, от РЕАЛЬНОЙ
>> задачи. Вот конкретный файл (можно фрагмент файла), мы хотим сказать
>> программе про него то-то и то-то (КОНКРЕТНО), хотим увидеть то-то и
>> то-то (КОНКРЕТНО).
SS> Не знаю, что тебе ещё надо.
Прежде чем спрашивать, что мне ЕЩЁ надо, нехило бы ответить хотя бы на
первый вопрос. Я не просто так спрашиваю про хотя бы один КОНКРЕТНЫЙ
пример.
Вон у меня выше use cases про cat и file. Они более чем конкретны, прям
с именами файлов.
SS> Ты не видел никогда в жизни бинарный просмотрщик со смотрелкой
SS> структур? Но пусть даже так, я привёл пример zip, исполняемый
SS> бинарник, описание, ссылки даже со скриншотами.
Почему не видел? Видел. Вьюер ИЗВЕСТНЫХ структур. Универсального
(юзабельного), правда, не видел. Который покажет и фотографию, и
разделы бинарника, и информацию о содержимом zip. Даже в винде, где все
время стремятся сделать одну программу, которая делает сразу всё, и то
никто не пытается решать НАСТОЛЬКО общую задачу просмотра в одной
программе. Под разные классы структур даже там используют разные
программы.
А вот вьюер НЕИЗВЕСТНЫХ структур не видел. По описанной ранее причине.
Reply to: