请为外壳推荐一个十六进制编辑器


Answers:


24

emacs 具有用于十六进制编辑的十六进制模式。


4
hexl-mode不适合大文件或磁盘分区,因为它将整个文件加载到emacs缓冲区中。如果您已经熟悉emacs,则对小型文件非常有用。
彼得·科德斯

1
@PeterCordes,用于编辑磁盘,只需dd要将要编辑的区域写入文件,然后在emacs中将dd其打开,然后将其返回即可。
psusi 2015年

6
@psusi问题是,我不必费心去编辑文件
Cole Johnson

1
@ColeJohnson,我们不是在谈论编辑文件;我们正在谈论编辑整个原始硬盘。
psusi

2
@psusi在我的Windows机器上,我可以使用HxD并像打开其他任何文件一样打开磁盘。
科尔·约翰逊

75
xxd

这个工具是我找到的最常用于此类任务的工具(默认情况下在最新的Ubuntu和macOS上都可用)。如果需要,可以删除右侧的ascii可读部分,-p并可以使用-r函数还原(将ascii输入更改为二进制数据)。以下是一些简单的示例用法:

使用ascii视图转换为十六进制:

echo example | xxd

转换为十六进制转储(右侧无ascii视图):

echo example | xxd -p

从hexdump转换回二进制数据:

echo 746573740a | xxd -p -r

您可以在shell脚本中使用它来变得更加复杂。实际上,我已经使用了这个和“ dd”来扫描特定的序列,并以一种预定义的方式从shell脚本中以预定义的方式对其进行修改,只不过使用bash ddxxd。实际上,您也不需要dd,因为您可以“搜索”到特定位置并将所需的字节序列写入该位置。这种方法的最大优点是易于编写脚本。


2
默认情况下,似乎在Ubuntu 16.04上安装了xxd,这是SWEET!谢谢!
GlenPeterson

默认情况下在MacOS上也可用!
thom_nic

34

也有DHEX

apt-cache show dhex

ncurses基于diff模式的十六进制编辑器

这不仅仅是另一个十六进制编辑器:它包括diff模式,可用于轻松方便地比较两个二进制文件。由于它基于ncurses且具有主题性,因此它可以在任何数量的系统和方案上运行。利用搜索日志,可以轻松跟踪文件不同迭代中的更改。

如果您不熟悉vim或emacs,那么这似乎没有太多的学习曲线。


3
唯一的缺点是dhex imho无法插入/删除字节。否则,它是一个非常好的控制台十六进制编辑器。
Nicholi

当我运行“ dhex / path / to / big / file”时,出现“打开输入文件/ path / to / big / file错误”。我喜欢dhex,并一直将其用于普通大小的文件。
sondra.kinsey

@ sondra.kinsey:我刚刚在8GB RAM机器上尝试了20GB文件,没有问题。这是在Ubuntu 16.04 64位上,以及dhex 0.68-2build1(amd64)。因此它应该工作。
mivk

@mivk,我在带有3GB RAM的Ubuntu 17.04上使用dhex_0.68-2build1_i386用44GB文件尝试了dhex失败。hexedit和wxHexEditor会打开同一文件而不会产生任何投诉。
sondra.kinsey '17

@ sondra.kinsey:也许是32位dhex版本和超过4GB文件的问题/错误?
mivk

25

您也许也可以将vi / vim用作十六进制编辑器(它可以调用xxd)。

进入十六进制模式:

:%!xxd

退出十六进制模式:

:%!xxd -r

资料来源:使用vi作为十六进制编辑器


1
我会小心的。我发现:%!xxd在文件中添加了新字符(即新行)。
Quazi Irfan

1
@iamcreasy不是xxd谁做的:而是Vim本身。
Ruslan

3
别忘了:set binary!否则,VIM可能会通过在文件末尾添加行尾(CR / LF / CRLF)来破坏文件(取决于您将格式设置为(set ff=[mac/unix/dos]))。这很有可能破坏可执行文件和数据二进制文件。确实如此。很多。确保VIM处于二进制模式将防止这种情况发生。
Braden Best,

8

我知道这是一个古老的问题,但是我对这里的所有答案都不满意。我正在寻找一个十六进制编辑器,该编辑器允许我创建自己的二进制文件(也称为插入模式),并且可以处理非常大的文件。

我遇到了tweak,它可以同时满足这两个要求以及OP。

  • Tweak支持插入模式(如果您正在编辑可执行文件或文件系统映像,则不是特别有用,但是在其他文件格式(例如PNG)中可能非常方便)。
  • 在您正在编辑的文件内剪切,复制和粘贴非常有效。无论您要走动的数据量有多大,即使它是CD映像的200Mb部分,Tweak始终可以立即有效地执行操作。
  • Tweak支持延迟加载输入文件:它不会立即将所有内容都吸收到内存中,而只是记住编辑缓冲区的哪些部分是输入文件的哪些部分的副本,并在需要时引用磁盘上的文件。仅当您真正需要它来读取整个文件时,Tweak才需要花费大量时间。使用此属性的唯一两个操作是搜索,并将文件的修改后的版本保存到磁盘。其他一切都是即时的。

Hmmm,一个程序,准备通过每次击键错误来修改缓冲区,并且不指示用户如何(或退出!)使用该程序。!原来,“ exit”命令与emacs相同……但是它对我第一次没有作用,因此在尝试再次尝试之前,我尝试了我能想到的所有其他方法。几十年前,我放弃了emacs,但记住最重要的命令:Ctrl-X,Ctrl-C。如果您喜欢emacs,则可能会喜欢tweak,但对我来说很尴尬。如果我真的需要编辑,可以再试一次。man tweak从终端运行以获取概述和命令列表。
伦巴特

@Lambart tweak插入模式的全部要点是修改缓冲区,因此您的要点在那里并不是真的有效。此外,无论如何,您都应该阅读手册页。不这样做,然后抱怨它没有告诉您如何退出只是懒惰。
Gogeta70

4

Bless Hex Editor是一个二进制(十六进制)编辑器,当前提供以下功能:

  • 高效编辑大型数据文件和块设备。
  • 多级撤消-重做操作。
  • 可定制的数据视图。
  • 在屏幕上快速呈现数据。
  • 多个标签。
  • 快速查找和替换操作。
  • 数据转换表。
  • 先进的复制/粘贴功能。
  • 在文件中突出显示选择模式匹配项。
  • 基于插件的架构。
  • 将数据导出到文本和html(其他带有插件)。
  • 对数据进行按位运算。
  • 全面的用户手册。

您可以从此处下载它:http ://packages.debian.org/sid/all/bless/download 。

要安装它,请参阅如何通过命令行安装.deb文件?

需要更多?


10
问题是要求命令行编辑器。
psusi 2013年

1
@psusi不,OP问一个可以从shell运行的十六进制编辑器而不是 shell /终端内部运行bless安装后,可以使用命令从shell运行它。
RaduRădeanu2013年

33
没有什么是您无法从shell运行的;除非他指的是命令行,否则他不会提及它。
psusi

实际上,我在搜索“ ubuntu十六进制查看器”,这意味着要记住基于窗口的查看器,并且搜索网站将我带到了这里。所以这个答案就是我要寻找的。
kinORnirvana



2

也有ht。安装为

sudo apt-get install ht

然后通过键入来运行它hte

不过,我还没有尝试过很大的文件/分区。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.