Пожалуйста, порекомендуйте шестнадцатеричный редактор для оболочки


64

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


1
Я думаю, что вы можете сделать это, используя vim
Deepal

Ответы:


24

emacs имеет hexl-режим для шестнадцатеричного редактирования.


4
hexl-режим не подходит для больших файлов или разделов диска, так как он загружает весь файл в буфер emacs. Это отлично подходит для небольших файлов, если вы уже знакомы с emacs.
Питер Кордес

1
@PeterCordes, для редактирования диска, просто ddобласть, которую вы хотите отредактировать в файл, откройте ее в emacs, а затем ddверните обратно.
Псуси

6
@psusi Проблема в том, что мне не нужно прилагать усилия для редактирования файла
Коул Джонсон,

1
@ColeJohnson, мы не говорим о редактировании файла; мы говорим о редактировании всего сырого жесткого диска.
Псуси

2
@psusi На моей машине с Windows я могу использовать HxD и открыть диск, как и любой другой файл.
Коул Джонсон

76
xxd

Этот инструмент является наиболее доступным, который я нашел для задач такого типа (доступен по умолчанию как в последних версиях Ubuntu, так и в macOS). При необходимости вы можете удалить читаемую часть ascii справа, -pиспользуя -rфункцию, и вы можете вернуться (изменить ввод ascii на двоичные данные) с помощью функции. Вот несколько простых примеров использования:

Преобразование в гекс с представлением ascii:

echo example | xxd

Преобразование в hexdump (без представления ascii справа):

echo example | xxd -p

Преобразование из hexdump обратно в двоичные данные:

echo 746573740a | xxd -p -r

Вы можете сделать это намного сложнее в сценариях оболочки. Я на самом деле использовал это и «dd» для сканирования определенных последовательностей и изменения их заранее определенным образом, все из сценария оболочки, используя только bash dd, и xxd. Вам на самом деле не нужен dd для этого, так как вы можете «искать» в определенном месте и записывать в это место нужную вам последовательность байтов. Самым большим преимуществом этого подхода является простота написания сценариев.


2
xxd, по-видимому, установлен на Ubuntu 16.04 по умолчанию, а это СЛАДКИЙ! Спасибо!
ГленПетерсон

Также доступно по умолчанию на MacOS!
thom_nic

34

Также есть DHEX

apt-cache show dhex

Основанный на ncurses шестнадцатеричный редактор с режимом diff

Это больше, чем просто другой шестнадцатеричный редактор: он включает в себя режим сравнения, который можно использовать для простого и удобного сравнения двух двоичных файлов. Так как он основан на ncurses и является темным, он может работать в любом количестве систем и сценариев. Благодаря использованию журналов поиска можно легко отслеживать изменения в разных итерациях файлов.

Если вы не знакомы с vim или emacs, похоже, у этого нет особой кривой обучения.


3
Единственный недостаток dhex imho - он не может вставлять / удалять байты. В противном случае это очень хороший консольный редактор hex.
Николи

Когда я запускаю «dhex / path / to / big / file», я получаю «ошибка открытия inputfile / path / to / big / file». Мне нравится dhex, и я все время использую его для файлов нормального размера.
sondra.kinsey

@ sondra.kinsey: Я только что попробовал файл 20 ГБ на моей машине с 8 ГБ ОЗУ, и у меня не было проблем. Это на 64-битной Ubuntu 16.04, с dhex 0.68-2build1 (amd64). Так и должно работать.
mivk

@mivk, я безуспешно пробовал dhex с файлом 44 ГБ, используя dhex_0.68-2build1_i386 в Ubuntu 17.04 с 3 ГБ ОЗУ. hexedit и wxHexEditor открывают один и тот же файл без жалоб.
sondra.kinsey

@ sondra.kinsey: может быть проблема / ошибка с 32-битной версией dhex и файлами более 4 ГБ?
mivk

26

Вы можете также использовать vi / vim в качестве шестнадцатеричного редактора (он может вызывать xxd).

Войдите в шестнадцатеричный режим:

:%!xxd

Выйти из шестнадцатеричного режима:

:%!xxd -r

Источник: Использование vi в качестве шестнадцатеричного редактора.


1
Я был бы осторожен с этим. Я обнаружил :%!xxdдобавление новых символов (т.е. новой строки) в файл.
Quazi Irfan

1
@iamcreasy это не xxdкто делает это, а сама Vim.
Руслан

3
Не забудь :set binary! В противном случае VIM может повредить файл, добавив конец строки (CR / LF / CRLF) в конец файла (в зависимости от того, какой формат установлен в ( set ff=[mac/unix/dos])). Это очень вероятно, чтобы сломать исполняемые файлы и двоичные файлы данных. И это так. Много. Убедиться, что VIM находится в двоичном режиме, предотвратит это.
Брэден Бест

8

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

Я наткнулся на твик , который отвечает обоим этим требованиям, а также ОП.

  • Твик поддерживает режим вставки (не особенно полезен, если вы редактируете исполняемый файл или образ файловой системы, но может быть чрезвычайно удобен в других форматах файлов, таких как PNG).
  • Вырезание, копирование и вставка в редактируемый файл чрезвычайно эффективны. Независимо от того, насколько большой объем данных вы перемещаете - даже если это 200-мегабайтный раздел образа компакт-диска - Tweak всегда будет эффективно выполнять операцию мгновенно.
  • Твик поддерживает ленивую загрузку входного файла: вместо того, чтобы сразу загружать все это в память, он просто запоминает, какие части буфера редактирования являются копиями каких частей входного файла, и обращается к файлу на диске, когда это необходимо. Твик должен занять значительное время, когда он действительно нужен для чтения всего файла. Только две операции с этим свойством - поиск и сохранение измененной версии файла на диск. Все остальное мгновенно.

Хммм, программа, которая готова изменять буфер с каждым ошибочным нажатием клавиши и не инструктирует пользователя, как (или выйти!) Использовать программу. Тьфу! Оказывается, команда "exit" такая же, как и в emacs ... но она не сработала в первый раз, поэтому я попробовал все остальное, что мог придумать, прежде чем повторить попытку. Я отказался от emacs десятилетия назад, но помню самую важную команду: Ctrl-X, Ctrl-C. Если вам нравится emacs, вам может понравиться tweak, но для меня это было неловко. Я могу попробовать еще раз, если мне действительно нужно редактирование. Запустите man tweakиз терминала для обзора и списка команд.
Ламбарт

@Lambart Весь смысл режима вставки твика состоит в том, чтобы изменить буфер, поэтому ваша точка зрения на самом деле там недопустима. Кроме того, вы должны прочитать справочную страницу, прежде чем использовать ее в любом случае. Не делать этого, а потом жаловаться, что это не говорит вам, как выйти, просто лень.
Gogeta70

4

Bless Hex Editor является бинарным (шестнадцатеричным) редактором и в настоящее время предоставляет следующие возможности:

  • Эффективное редактирование больших файлов данных и блочных устройств.
  • Многоуровневые операции отмены и восстановления.
  • Настраиваемые представления данных.
  • Быстрый рендеринг данных на экране.
  • Несколько вкладок.
  • Быстрый поиск и замена операций.
  • Таблица преобразования данных.
  • Расширенные возможности копирования / вставки.
  • Выделение совпадений шаблона выбора в файле.
  • Архитектура на основе плагинов.
  • Экспорт данных в текст и HTML (другие с плагинами).
  • Побитовые операции с данными.
  • Полное руководство пользователя.

Вы можете загрузить его отсюда: http://packages.debian.org/sid/all/bless/download .

Чтобы установить его, см. Как установить файл .deb через командную строку?

Нужно больше?


10
Вопрос задает редактор командной строки.
Псуси

1
@psusi Нет, ОП спросил о шестнадцатеричном редакторе, который можно запустить из оболочки , а не внутри оболочки / терминала. Его можно запустить из оболочки с помощью blessкоманды после установки.
Раду Рэдяну

33
Там нет ничего, что вы не можете запустить из оболочки; он бы не упомянул об этом, если бы не имел в виду командную строку.
Псуси

На самом деле я искал "Ubuntu Hex Viewer", имея в виду окна просмотра, и поисковый сайт привел меня сюда. Таким образом, этот ответ был тем, что я искал.
кинорнирвана

2

Попробуйте hexed , это сделано для использования в скриптах и ​​создания файлов.



2

Есть также ht. Установить как

sudo apt-get install ht

а затем запустите его, набрав hte.

Я не пробовал это с действительно большими файлами / разделами, все же.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.