天天一個 Linux 命令(2):od

圖片

推薦:天天一個Linux命令(1):xargsapp

功能簡介

od(Octal Dump)命令用於將指定文件內容以八進制、十進制、十六進制、浮點格式或ASCII編碼字符方式顯示,一般用於顯示或查看文件中不能直接顯示在終端的字符。od命令系統默認的顯示方式是八進制。編碼

常見的文件爲文本文件和二進制文件。od命令主要用來查看保存在二進制文件中的值,按照指定格式解釋文件中的數據並輸出,無論是IEEE754格式的浮點數仍是ASCII碼,od命令都能按照需求輸出它們的值。spa

你們也能夠了解一下hexdump命令,以十六進制輸出,但感受hexdump命令沒有od命令強大。.net

命令格式

od [OPTION]... [FILE]...

選項說明

-A RADIX
  --address-radix=RADIX
 #選擇以何種基數表示地址偏移
-j BYTES
  --skip-bytes=BYTES
 #跳過指定數目的字節
-N BYTES
  --read-bytes=BYTES
 #輸出指定字節數
-S [BYTES]
  --strings[=BYTES]
 #輸出長度不小於指定字節數的字符串,BYTES 缺省爲 3
-v
  --output-duplicates
 #輸出時不省略重複的數據
-w [BYTES]
  --width[=BYTES]
 #設置每行顯示的字節數,BYTES 缺省爲 32 字節
-t TYPE
  --format=TYPE
 #指定輸出格式,格式包括 a、c、d、f、o、u 和 x,各含義以下:
  a:具名字符;好比換行符顯示爲 nl
  c:可打印字符或反斜槓表示的轉義字符;好比換行符顯示爲 n
  d[SIZE]:SIZE 字節組成一個有符號十進制整數。SIZE 缺省爲 sizeof(int)
  f[SIZE]:SIZE 字節組成一個浮點數。SIZE 缺省爲 sizeof(double)
  o[SIZE]:SIZE 字節組成一個八進制整數。SIZE 缺省爲 sizeof(int)
  u[SIZE]:SIZE 字節組成一個無符號十進制整數。SIZE 缺省爲 sizeof(int)
  x[SIZE]:SIZE 字節組成一個十六進制整數。SIZE 缺省爲 sizeof(int)
  SIZE能夠爲數字,也能夠爲大寫字母。若是 TYPE 是 [doux] 中的一個,那麼SIZE 能夠爲C = sizeof(char),S = sizeof(short),I = sizeof(int),L = sizeof(long)。若是 TYPE 是 f,那麼 SIZE 能夠爲 F = sizeof(float),D = sizeof(double) ,L = sizeof(long double)
--help
 #在線幫助
--version
 #顯示版本信息

經常使用示例

一、設置第一列偏移地址以十進制顯示。code

od -Ad testfile
#偏移地址顯示基數有:d for decimal, o for octal, x for hexadecimal or n for none。

二、od 不顯示第一列偏移地址。orm

od -An testfile

三、以十六進制輸出,默認以四字節爲一組(一列)顯示。blog

od -tx testfile

四、以十六進制輸出,每列輸出一字節。圖片

od -tx1 testfile

五、顯示ASCII字符和ASCII字符名稱,注意換行符顯示方式的區別。ip

#顯示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

六、以十六進制顯示的同時顯示原字符。ci

[b3335@localhost]$ echo lvlv|od -tcx1
0000000   l   v   l   v  n
         6c  76  6c  76  0a
0000005

七、指定每行顯示512字節。

od -w512 -tx1 testfile

八、od 命令輸出時去除列與列之間的空格符。

當咱們須要將文件內容顯示爲十六進制,須要輸出連續的單個字節,每一個字節以十六進制顯示。這時咱們能夠經過od命令將文件以單個字節爲一組,十六進制輸出在同一行,並去除每一個字節之間的空格。目前還不知道怎麼經過指定od命令的相關選項去除列與列之間的空格,也許od命令自己並不支持。個人作法是:

  • (a)使用-An不輸出偏移地址;
  • (b)使用-v輸出時不省略重複的數據;
  • (c)使用-tx1以單個字節爲一組按照十六進制輸出,-w1每列輸出一個字節;
  • (d)最後經過管道傳遞給 awk 的標準輸入,經過awk不換行輸出全部行,拼接爲一行輸出。

具體命令以下:

od -An -w1 -tx1 testfile|awk '{for(i=1;i<=NF;++i){printf "%s",$i}}'

來源:https://dablelv.blog.csdn.net...

image

相關文章
相關標籤/搜索