[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: