Linuxod命令详细介绍及⽤法实例
Linux od命令详解
1.功能
od命令⽤于将指定⽂件内容以⼋进制、⼗进制、⼗六进制、浮点格式或ASCII编码字符⽅式显⽰,通常⽤于显⽰或查看⽂件中不能直接显⽰在终端的字符。od命令系统默认的显⽰⽅式是⼋进制,名称源于Octal Dump。
常见的⽂件为⽂本⽂件和⼆进制⽂件。od命令主要⽤来查看保存在⼆进制⽂件中的值,按照指定格式解释⽂件中的数据并输出,不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。
⼤家也可以了解⼀下hexdump命令,以⼗六进制输出,但感觉hexdump命令美誉od命令强⼤。
2.命令格式
od [<;选项><;参数>] [<⽂件名>]
3.命令选项
A<RADIX>,--address-radix=RADIX:选择以何种基数表⽰地址偏移;
-j<BYTES>,--skip-bytes=BYTES:跳过指定数⽬的字节;
-N,--read-bytes=BYTES:输出指定字节数;
-S<BYTES>, --strings[=BYTES]:输出长度不⼩于指定字节数的字符串;
-v,--output-duplicates:输出时不省略重复的数据;
-w<BYTES>,--width=<BYTES>:设置每⾏显⽰的字节数,od默认每⾏显⽰16字节。如果选项--width不跟数字,默认显⽰32字节;
-t<TYPE>,--format=TYPE:指定输出格式,格式包括a、c、d、f、o、u和x,各含义如下:
a:具名字符;
printf输出格式linuxc:ASCII字符或者反斜杠;
d[SIZE]:⼗进制,正负数都包含,SIZE字节组成⼀个⼗进制整数;
f[SIZE]:浮点,SIZE字节组成⼀个浮点数;
o[SIZE]:⼋进制,SIZE字节组成⼀个⼋进制数;
u[SIZE]:⽆符号⼗进制,只包含正数,SIZE字节组成⼀个⽆符号⼗进制整数;
x[SIZE]:⼗六进制,SIZE字节为单位以⼗六进制输出,即输出时⼀列包含SIZE字节。
--help:在线帮助;
--version:显⽰版本信息。
4.⽤法⽰例
(1)设置第⼀列偏移地址以⼗进制显⽰。
od -Ad testfile
偏移地址显⽰基数有:d for decimal, o for octal, x for hexadecimal or n for none。
(2)od命令不显⽰第⼀列偏移地址。
od -An testfile
(3)以⼗六进制输出,默认以四字节为⼀组(⼀列)显⽰。
od -tx testfile
(4)以⼗六进制输出,每列输出⼀字节。
od -tx1 testfile
(5)显⽰ASCII字符和ASCII字符名称,注意换⾏符显⽰⽅式的区别。
#显⽰ASCII字符
[b3335@localhost]$ echo lvlv|od -a
0000000 l v l v nl
0000005
#显⽰ASCII字符名称
[b3335@localhost]$ echo lvlv|od -tc
0000000 l v l v \n
0000005
(6)以⼗六进制显⽰的同时显⽰原字符。
[b3335@localhost]$ echo lvlv|od -tcx1
0000000 l v l v \n
6c 76 6c 76 0a
0000005
(7)指定每⾏显⽰512字节。
od -w512 -tx1 testfile
(8)od命令输出时去除列与列之间的空格符。
当我们需要将⽂件内容显⽰为⼗六进制,需要输出连续的单个字节,每个字节以⼗六进制显⽰。这时我
们可以通过od命令将⽂件以单个字节为⼀组,⼗六进制输出在同⼀⾏,并去除每个字节之间的空格。⽬前还不知道怎么通过指定od命令的相关选项去除列与列之间的空格,也许od命令本⾝并不⽀持。我的做法是:
(8.1)使⽤-An不输出偏移地址;
(8.2)使⽤-v输出时不省略重复的数据;
(8.3)使⽤-tx1以单个字节为⼀组按照⼗六进制输出,-w1每列输出⼀个字节;
(8.4)最后通过管道传递给awk的标准输⼊,通过awk不换⾏输出所有⾏,拼接为⼀⾏输出。
具体命令如下:
od -An -w1 -tx1 testfile|awk '{for(i=1;i<=NF;++i){printf "%s",$i}}'
参考⽂献
[1]od帮助⽂档
感谢阅读,希望能帮助到⼤家,谢谢⼤家对本站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论