我想查看当前目录中文件的内容,但从命令行以二进制格式查看。我怎样才能做到这一点呢?
$ echo -n 'Hello world!' | hd
00000000 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 |Hello world!|
0000000c
您可以打开emacs(在终端模式下,例如使用emacs -nw),然后使用Hexl模式:M-x Hexl -mode。
https://www.gnu.org/software/emacs/manual/html_node/emacs/Editing-Binary-Files.html
要将文件转换为二进制代码(十六进制表示),我们说:
xxd filename #
e.g:
xxd hello.c #
要查看二进制文件中的所有内容和代码,可以使用readelf和objdump、hexdump、... .等命令
例如,如果我们想查看一个二进制文件(可执行文件、共享库、目标文件)的所有内容,我们说:
hexdump binaryfilename
e.g.
hexdump /bin/bash
但是readelf是分析elf(可执行文件和链接格式)文件的最佳工具。如果我们说:
readelf -a /bin/bash
二进制文件bash中的所有内容都将显示给我们,我们也可以为readelf提供不同的标志,以分别查看elf文件的所有部分和头,例如,如果我们只想看到elf头,我们说:
readelf -h /bin/bash
读取文件的所有段:
readelf -l /bin/bash
读取文件的所有部分:
readelf -S /bin/sh
但是作为总结,对于读取一个普通文件,如“hello.c”和一个二进制文件,如bash在Linux路径/bin/bash,我们说:
xxd hello.c
readelf -a /bin/bash
推荐文章
- 如何使用查找命令从列表中查找所有具有扩展名的文件?
- 如何获得一个变量值,如果变量名存储为字符串?
- RVM不是一个函数,用' RVM use…’不会起作用
- 如何打破一个循环在Bash?
- 如何从终端机发送电子邮件?
- Linux Bash中双&和分号有什么区别?
- 如何合并2 JSON对象从2个文件使用jq?
- 在Bash中模拟do-while循环
- 在Bash中将输出赋给变量
- 如何在Mac OS X 10.6中使硬件发出哔哔声
- 从Docker容器获取环境变量
- 如何重定向标准derr和标准输出到不同的文件在同一行脚本?
- 如何循环通过一个目录递归删除具有某些扩展名的文件
- 在Bash中获取日期(比当前时间早一天)
- Linux: kill后台任务