请推荐一个shell的十六进制编辑器

avi*_*ran 83 command-line text-editor software-recommendation

你能推荐一个可以从 shell 运行的十六进制编辑器吗?我不仅需要能够编辑查看内容。

Gob*_*ord 103

xxd
Run Code Online (Sandbox Code Playgroud)

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

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

echo example | xxd
Run Code Online (Sandbox Code Playgroud)

转换为 hexdump(右侧没有 ascii 视图):

echo example | xxd -p
Run Code Online (Sandbox Code Playgroud)

从十六进制转储转换回二进制数据:

echo 746573740a | xxd -p -r
Run Code Online (Sandbox Code Playgroud)

您可以在 shell 脚本中使用它变得更加复杂。我实际上已经使用 this 和 "dd" 来扫描特定序列并以预定义的方式修改它们,所有这些都来自 shell 脚本,只使用 bash、.ddxxd. 您实际上也不需要 dd ,因为您可以“寻找”到特定位置并将所需的字节序列写入该位置。这种方法的最大优点是易于编写脚本。

  • 问题是需要一个编辑,而不是一个观众。xxd 是观众 (4认同)
  • xxd 似乎默认安装在 Ubuntu 16.04 上,这是 SWEET!谢谢! (2认同)

miv*_*ivk 38

还有DHEX

apt-cache show dhex

具有差异模式的基于 ncurses 的十六进制编辑器

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

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

  • dhex imho 的唯一缺点是它不能插入/删除字节。否则它是一个非常好的控制台十六进制编辑器。 (3认同)

klc*_*ant 35

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

进入十六进制模式:

:%!xxd
Run Code Online (Sandbox Code Playgroud)

退出十六进制模式:

:%!xxd -r
Run Code Online (Sandbox Code Playgroud)

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

  • 不要忘记`:set binary`!否则,VIM 可能会通过在文件末尾添加行尾 (CR/LF/CRLF) 来损坏文件(取决于您将格式设置为 (`set ff=[mac/unix/dos] `))。这很可能会破坏可执行文件和数据二进制文件。确实如此。很多。确保 VIM 处于二进制模式将防止这种情况发生。 (5认同)
  • 我会小心的。我发现`:%!xxd` 向文件中添加了新字符(即新行)。 (4认同)
  • @iamcreasy 这样做的不是 `xxd`:而是 Vim 本身。 (2认同)

psu*_*usi 24

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

  • @psusi 问题是,我_不应该_必须去编辑文件 (7认同)
  • hexl-mode 不适用于大文件或磁盘分区,因为它将整个文件加载到 emacs 缓冲区中。如果您已经习惯使用 emacs,那么它非常适合小文件。 (5认同)
  • @PeterCordes,要编辑磁盘,只需将要编辑的区域“dd”到文件中,然后在 emacs 中打开它,然后“dd”回来。 (2认同)
  • @psusi 在我的 Windows 机器上,我可以使用 HxD 并像打开任何其他文件一样打开磁盘。 (2认同)

小智 13

这个使用起来非常简单:

sudo apt-get install hexcurse
Run Code Online (Sandbox Code Playgroud)

  • 这是要击败的人。所有其他答案似乎只是十六进制转储或不必要的 vim 杂技。十六进制编辑器应该有一个多个光标,一个在十六进制上,一个在输出表示上。 (2认同)

小智 9

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

我遇到了调整,它满足这两个要求,以及 OP。

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