2021-06-07

linux下如何读写文件、数据以16进制形式显示
shell下读取文件可以使用dd指令,以16进制显示数据可以使用hexdump指令,一个例子:

#读取数据

#从MTD0设备中0地址开始读取256K数据,blocksize是65536byte,

dd if=/dev/mtd0 of=/tmp/a bs=65536 skip=0 count=4

#以16进制形式展示文件

hexdump -Cv /tmp/a 

#写入数据
#从MTD0设备中0x2600000地址开始写入1M数据,blocksize是262144 byte,

dd if=/tmp/a of=/dev/mtd0 bs=262144 seek=152 count=4

有两点需要注意:

1、 MTD设备挂载的写函数一般没有擦除操作,写之前需要手动进行擦除,可以直接挂接带有擦除动作的写接口。

2、MTD设备可能存在没有写权限的情况,可以使用chattr -i /dev/mtd0增加权限。

hexdump
hexdump用于以16进制、10进制、8进制、ascii码形式打印文件内容,也可以是标准输入的内容。

用法
hexdump [选项] 文件 …
|
|
|
|
|
|
|

选项说明
-b单字节8进制格式显示
-e指定格式化输出表达式
-f指定格式输出表达式文件
-n长度
-s偏移

常见用法:

  1. 字节方式显示且不要省略
    hexdump -Cv /tmp/a

2.显示某一段

hexdump -Cv /tmp/a -s 65536 -n 1024

dd指令
Linux dd命令用于读取、转换并输出数据。

dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

参数说明:

· if=文件名:输入文件名,默认为标准输入。即指定源文件。

· of=文件名:输出文件名,默认为标准输出。即指定目的文件。

· ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。 obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。 bs=bytes:同时设置读入/输出的块大小为bytes个字节。

· cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

· skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

· seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

· count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

· conv=<关键字>,关键字可以有以下11种:

conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

· --help:显示帮助信息

· --version:显示版本信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值