- 1 hexdumpコマンドとは?
- 2 検証環境
- 3 オプション一覧
- 4 事前準備
- 5 オプションなしで実行した場合
- 6 ASCII文字を表示する方法(-C)
- 7 表示する範囲を指定する方法
- 8 繰り返し部分を表示する方法(-v)
- Z 参考情報
1 hexdumpコマンドとは?
ファイルの内容を8進数や16進数で表示するコマンドです。
2 検証環境
CentOS版数は以下のとおりです。仮想マシンは最小構成で作成しました。
[root@server ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
カーネル版数は以下のとおりです。
[root@server ~]# uname -r 3.10.0-1160.el7.x86_64
3 オプション一覧
オプション一覧は以下のとおりです。
[root@server ~]# hexdump -h hexdump: 無効なオプション -- 'h' Usage: hexdump [options] file... Options: -b one-byte octal display -c one-byte character display -C canonical hex+ASCII display -d two-byte decimal display -o two-byte octal display -x two-byte hexadecimal display -e format format string to be used for displaying data -f format_file file that contains format strings -n length interpret only length bytes of input -s offset skip offset bytes from the beginning -v display without squeezing similar lines -V output version information and exit
4 事前準備
事前準備としてテスト用ファイル(test.bin)を作成します。テスト用ファイルは、17バイト目から32バイト目にASCIIコードが含まれています。
[root@server ~]# echo -en "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f" > test.bin [root@server ~]# echo -en "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" >> test.bin
5 オプションなしで実行した場合
オプションなしでhexdumpを実行すると、テスト用ファイル(test.bin)が16進数で2バイト単位で表示されます。
[root@server ~]# hexdump test.bin 0000000 8180 8382 8584 8786 8988 8b8a 8d8c 8f8e 0000010 2120 2322 2524 2726 2928 2b2a 2d2c 2f2e 0000020
6 ASCII文字を表示する方法(-C)
-Cは、ASCII文字を表示するオプションです。-Cを使って、テスト用ファイルに含まれるASCII文字を表示してみます。17byteから32byte目がASCII文字であることがわかります。
[root@server ~]# hexdump -C test.bin 00000000 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f |................| 00000010 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./| 00000020
7 表示する範囲を指定する方法
7.1 先頭からnバイトを表示する方法
-nは、表示するバイト数を指定するオプションです。テスト用ファイルの先頭から8バイトを表示してみます。
[root@server ~]# hexdump -C -n 8 test.bin 00000000 80 81 82 83 84 85 86 87 |........| 00000008
7.2 sバイト目からnバイトを表示する方法
-sは、表示開始位置を指定するオプションです。テスト用ファイルの8バイト目から2バイトを表示してみます。
[root@server ~]# hexdump -C -s 8 -n 2 test.bin 00000008 88 89 |..| 0000000a
7.3 sバイト目から最後まで表示する方法
テスト用ファイルの16バイト目から最後まで表示してみます。
[root@server ~]# hexdump -C -s 16 test.bin 00000010 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./| 00000020
8 繰り返し部分を表示する方法(-v)
テスト用ファイル(test1.bin)を作成します。
[root@server ~]# echo -en "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" > test1.bin [root@server ~]# echo -en "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" >> test1.bin [root@server ~]# echo -en "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" >> test1.bin [root@server ~]# echo -en "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" >> test1.bin [root@server ~]# echo -en "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" >> test1.bin
オプションを指定しないと、以下のように繰り返し部分が省略されます。
[root@server ~]# hexdump -C test1.bin 00000000 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./| * 00000050
-vオプションを指定して、hexdumpコマンドを実行してみます。繰り返し部分が表示されていることがわかります。
[root@server ~]# hexdump -Cv test1.bin 00000000 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./| 00000010 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./| 00000020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./| 00000030 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./| 00000040 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f | !"#$%&'()*+,-./| 00000050
Z 参考情報
私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ