Будь ласка, рекомендуйте шестигранний редактор для оболонки


64

Чи можете ви порекомендувати шестигранний редактор, який можна запустити з оболонки? Мені потрібно вміти редагувати не лише перегляд вмісту.


1
Я думаю, ви можете зробити це за допомогою vim
Deepal

Відповіді:


24

emacs має шестигранний режим для шістнадцяткового редагування.


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

1
@PeterCordes, для редагування диска просто ddобласть, яку ви бажаєте відредагувати у файл, і відкрийте його в emacs, потім ddповерніть його назад.
psusi

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

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

2
@psusi На своїй машині Windows я можу використовувати HxD і відкривати диск, як і будь-який інший файл.
Коул Джонсон

76
xxd

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

Перетворення в шістнадцятковий з видом ascii:

echo example | xxd

Перетворення в гексад-дамп (відсутній вигляд ascii праворуч):

echo example | xxd -p

Перетворення з шестинадцяткового назад у двійкові дані:

echo 746573740a | xxd -p -r

Ви можете отримати набагато складніше з цим у скриптах оболонки. Я фактично використовував це і "дд", щоб сканувати певні послідовності та змінювати їх заздалегідь визначеним способом, все із скрипту оболонки, використовуючи нічого, крім bash dd, та xxd. Насправді вам для цього не потрібен ні дд, оскільки ви можете "шукати" певне місце і записувати в це місце послідовність байтів, яка вам потрібна. Найбільшою перевагою такого підходу є його легко написаний сценарій.


2
Здається, xxd встановлений на Ubuntu 16.04 за замовчуванням, що є SWEET! Дякую!
GlenPeterson

Також доступно за замовчуванням на MacOS!
thom_nic

34

Є також DHEX

apt-cache show dhex

ncurses на основі шестигранного редактора з різним режимом

Це більше, ніж просто ще один шістнадцятковий редактор: він включає різний режим, за допомогою якого можна легко та зручно порівнювати два двійкові файли. Оскільки він заснований на ncurses і є тематичним, він може працювати на будь-якій кількості систем та сценаріїв. За допомогою використання журналів пошуку можна легко відслідковувати зміни в різних ітераціях файлів.

Якщо ви не знайомі з vim або emacs, у цього, схоже, немає великої кривої навчання.


3
Тільки недоліком dhex imho є те, що він не може вставляти / видаляти байти. Інакше це дуже приємний шестигранний редактор консолі.
Ніколи

Коли я запускаю "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

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

Я натрапив на перетворення , яке відповідає обом цим вимогам, а також ОП.

  • Tweak підтримує режим вставки (не особливо корисно, якщо ви редагуєте виконуваний файл або зображення файлової системи, але може бути надзвичайно зручним в інших форматах файлів, таких як PNG).
  • Вирізання, копіювання та вставлення у файл, який ви редагуєте, надзвичайно ефективний. Незалежно від того, наскільки великий фрагмент даних ви пересуваєте - навіть якщо це розділ на 200 Мб зображення CD - Tweak завжди виконає операцію ефективно миттєво.
  • Tweak підтримує ледаче завантаження вхідного файлу: замість того, щоб всмоктувати все це в пам'ять відразу, він просто запам'ятовує, які частини буфера редагування є копіями, які частини вхідного файлу і посилаються на файл на диску, коли це потрібно. Налаштування лише потребує значного часу, коли вам справді потрібно, щоб прочитати весь файл. Єдині дві операції з цим властивістю - це пошук та збереження модифікованої версії файлу на диску. Все інше - миттєве.

Хммм, програма, готова змінити буфер при кожному помилковому натисканні клавіші, і не вказує користувачеві як (або вийти!) Користуватися програмою. Гидота! Виявляється, команда "вихід" - це те саме, що і emacs ... але це не спрацювало для мене з першого разу, тому я спробував усе, що я міг придумати, перш ніж спробувати. Я відмовився від emacs десятиліття тому, але пам’ятайте найважливішу команду: Ctrl-X, Ctrl-C. Якщо вам подобаються emacs, то, можливо, вам сподобається tweak, але для мене це було незручно. Я можу спробувати ще раз, якщо мені справді потрібно редагування. Запустіть man tweakз терміналу огляд та список команд.
Ламбарт

@Lambart Вся суть режиму вставки налаштування полягає в зміні буфера, тому ваша точка дійсно не дійсна. Крім того, ви повинні прочитати сторінку man, перш ніж використовувати її. Якщо цього не робити, а потім скаржитися, що це не говорить вам, як вийти, це просто лінь.
Gogeta70

4

Bless Hex Editor - це бінарний (шестнадцятковий) редактор і в даний час надає такі функції:

  • Ефективне редагування великих файлів даних та блокових пристроїв.
  • Багаторівневі скасування повторних операцій.
  • Настроювані представлення даних.
  • Швидке відображення даних на екрані.
  • Кілька вкладок.
  • Швидке пошук та заміна операцій.
  • Таблиця перетворення даних.
  • Розширені можливості копіювання / вставки.
  • Виділення відповідності шаблону вибору у файлі.
  • Архітектура на основі плагіна.
  • Експорт даних у текст та html (інші з плагінами).
  • Побітові операції над даними.
  • Вичерпний посібник користувача.

Ви можете завантажити його звідси: http://packages.debian.org/sid/all/bless/download .

Щоб встановити його, див. Як встановити файл .deb через командний рядок?

Потрібно більше?


10
Питання задається редактором командного рядка.
psusi

1
@psusi Ні, ОП запитав про шестнадцатеричном редакторі , який може бути запущений з оболонки , а НЕ всередині оболонок / терміналу. Він може бути запущений з оболонки за допомогою blessкоманди після встановлення.
Radu Rădeanu

33
Нічого, з чого не можна бігти з оболонки; він би не згадував про це, якби не мав на увазі командний рядок.
psusi

Насправді я шукав «ubuntu hex viewer», що означає переглядач на основі вікон, і пошуковий сайт привів мене сюди. Тож ця відповідь була тим, що я шукав.
kinORnirvana



2

Є також ht. Встановіть його як

sudo apt-get install ht

а потім запустіть його, набравши hte.

Я ще не пробував цього з дуже великими файлами / розділами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.