·
日常编程 ·
110980
这篇文章主要介绍了linux用cat查看二进制文件出现乱码的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
目录
今天用cat查看文件时突然全屏乱码,登出重新登陆之后还是未解决。于是在网上找了一些解决办法。
乱码截图
经过了解才知道是因为我打开的文件名为二进制。
先说解决方法
1、盲打输入 echo -e '\xf' 并回车。(或者复制粘贴过去)与这个命令相对的是echo -e '\xe',在正常状态下输入此命令会把终端搞出乱码来。
2、输入:reset 指令重置,之后就恢复正常了
在bash下用cat显示二进制文件后就会出现乱码,并且整个终端显示包括shell提示符都是乱码,这个跟语言环境无关。
如果说在查看文件之前我们不确定文件格式,可以使用 file -i查看文件的编码格式。这个命令会输出文件的相关信息,包括编码格式。
file -i 文件名
- fsimage_0000000000000000000: application/octet-stream; charset=binary
- #fsimage0000000000000000000:应用程序/八位字节流;字符集=二进制
想要查看文件内容则用命令:
1、使用 vim 打开二进制文件(这种方法适用于需要对二进制文件进行修改的场景)
vim 是一个强大的文本编辑器,可以用来查看和编辑二进制文件。
以下是使用 vim 打开二进制文件的步骤:
- 使用 vim -b 命令打开二进制文件:vim -b 文件名
- 将内容转换为十六进制格式::%!xxd
- 编辑文件内容后,将其转换回文本格式::%!xxd -r
- 保存并退出::wq
2、使用 od 命令(od 命令与 hexdump 类似,但提供了更多的格式选项)
od 命令可以用来查看文件内容,并且可以指定输出格式。以下是一些常用的选项:
- 以十六进制格式显示文件内容:od -tx1 文件名
- 以 ASCII 格式显示文件内容:od -tc 文件名
- 从指定偏移量开始输出:od -j 偏移量 文件名
3、使用 hexdump 命令
hexdump 是一个用于查看二进制文件的命令,可以将二进制文件转换为十六进制格式并打印出来。
以下是一些常用的选项:
- 显示文件的 ASCII 格式:hexdump -C 文件名
- 以单字节转换为八进制显示:hexdump -b 文件名
- 从指定偏移量开始输出:hexdump -s 偏移量 文件名
4、除了上述方法,还有一些其他工具可以用来分析二进制文件
例如:
file:确定文件类型。
ldd:打印共享对象依赖关系。
ltrace:库调用跟 踪器。
strings:打印文件中的可打印字符的字符串。
readelf:显示有关 ELF 文件的信息。
objdump:从对象文件中显示信息。
strace:跟踪系统调用和信号。
nm:列出对象文件中的符号。
gdb:GNU 调试器。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持骃骐网。
您可能感兴趣的文章:
- Linux Netcat(nc)命令的使用方法详解
- linux设置tomcat开机启动的两种方式
- 配置tomcat内存大小全过程(windows、linux)
- linux查找日志cat和grep方式
- Linux中使用Docker容器构建Tomcat容器的完整教程
- Linux Tomcat的服务器查看接口请求方式的方法
pytube 因 youtube 后端接口变更频繁触发 http 400 错误,本质是请求结构失效;升级至最新版 pytube 可快速修复,但长期应转向更活跃维护的替代方案(如 pytubefix 或 yt-dlp)并增强错误处理机制。 pytube 因 youtube 后端接口变更频繁触发 http 400 错误,本质是请求结构失效;升级至最新版 pytube 可快速修复,但长期应转向更活跃维护...
Gemini Python SDK 默认请求超时时间过短,导致频繁触发 DeadlineExceeded (504) 错误;而直接使用 curl 却能快速响应,根本原因在于 SDK 的 gRPC 客户端默认 timeout 设置不合理(通常仅约 60 秒且可能受底层重试逻辑影响),需显式延长超时阈值。 gemini python sdk 默认请求超时时间过短,导致频繁触发 `deadlineexc...
FastAPI 路由返回空对象 {} 是因同步数据库操作与异步路由不匹配导致的 ORM 实例延迟加载失效;根本原因是未正确使用异步数据库会话方法(如 await db.scalar()),导致返回对象在序列化前已脱离会话上下文。 fastapi 路由返回空对象 `{}` 是因同步数据库操作与异步路由不匹配导致的 orm 实例延迟加载失效;根本原因是未正确使用异步数据库会话方法(如 `await d...
GDAL(v3.8+)在读取符合CF-1.0规范的NetCDF地理坐标时,可能因x/y坐标变量使用float32(f4)精度不足而误判为非规则网格,导致gdalinfo显示原点坐标(0,0)而非真实投影坐标;升级为float64(f8)或显式添加GeoTransform+spatial_ref属性可彻底解决。 gdal(v3.8+)在读取符合cf-1.0规范的netcdf地理坐标时,可能因`x`/...
本文系统梳理 JupyterLab 环境下调用 matplotlib.pyplot(如 plt.plot() 或 plt.scatter())引发内核意外终止("The kernel appears to have died")的多重成因与实证有效解法,涵盖环境变量配置、图形后端切换、freetype 版本兼容、内核隔离重建等关键路径。 本文系统梳理 jupyterlab 环境下调用 `matpl...
在google colab中使用darknet训练yolov4时,出现“libcuda.so.1: cannot open shared object file”错误,本质是旧版darknet未适配colab当前cuda环境所致;推荐切换至维护活跃的hank-ai/darknet并更新构建流程。 在google colab中使用darknet训练yolov4时,出现“libcuda.so.1: c...
在Keras 3.x(包括TensorFlow内置Keras)中,Embedding层已移除input_length参数,需改用input_shape显式指定输入序列长度,否则会报错“Unrecognized keyword arguments”。 在keras 3.x(包括tensorflow内置keras)中,`embedding`层已移除`input_length`参数,需改用`input_...
Python中文乱码本质是编码与解码不匹配,核心解决法是读写文件时显式指定正确encoding参数;常见情形包括UTF-8带BOM需用'utf-8-sig'、GBK文件应选'gbk'、不确定时可用chardet探测或按'utf-8-sig','utf-8','gbk','latin-1'顺序尝试。 乱码不是文件“坏了”,而是 Python 用错了钥匙去开锁。绝大多数情况,open() 没写 enc...
Windows 的 py 启动器默认使用注册表中设定的“默认 Python 版本”,而非自动选择系统中最新安装的版本;可通过 py -0p 查看已注册版本,并用 py -3.12 --default 显式设置最新版为默认。 windows 的 `py` 启动器默认使用注册表中设定的“默认 python 版本”,而非自动选择系统中最新安装的版本;可通过 `py -0p` 查看已注册版本,并用 `py...
在 DynamoDB 中,对同一主键(partition key)多次调用 put_item 会完全覆盖整条记录,而非合并字段;若需增量添加或更新属性,应改用 update_item 并配合 SET 操作。 在 dynamodb 中,对同一主键(partition key)多次调用 `put_item` 会完全覆盖整条记录,而非合并字段;若需增量添加或更新属性,应改用 `update_item` ...