Linuxのテキストフィルタ処理~odコマンド・hexdumpコマンド~
今回の内容
今回は、odコマンド・hexdumpコマンドについて解説します。
odコマンド
ファイルを8進数や他の形式(10進数など)で出力するには、「od(Octal Dump)」コマンドを使用します。
名前は「Octal Dump」に由来し、8進数で(Octal)出力する(Dump)という意味です。
デフォルトでは8進数で表示します。
バイナリ形式の実行可能ファイルの内容を見るのに便利です。
odコマンド | |
---|---|
意味 | ファイルの内容を8進数、16進数で表示する。(デフォルトは、8進数) |
——————–
[root@localhost ~]# cat test1.txt あいうえお かきくけこ [root@localhost ~]# [root@localhost ~]# od test1.txt 0000000 100743 161602 102201 100743 161606 104201 100743 005212 0000020 100743 161613 106601 100743 161617 110601 100743 005223 0000040 [root@localhost ~]#
——————–
hexdumpコマンド
hexdumpコマンドは、ファイルを16進数または他の形式で出力するコマンドです。
16進数進数で(HEXadecimal)出力する(Dump)という意味です。
デフォルトでは16進数で表示しますが、オプションを使うと10進数や8進数など他の形式で出力することも可能です、
hexdumpコマンド | |
---|---|
意味 | ファイルの内容を8進数、16進数で表示する。(デフォルトでは、16進数) |
書式 | hexdump [オプション] [ファイル名] |
[root@localhost ~]# cat test1.txt あいうえお かきくけこ [root@localhost ~]# [root@localhost ~]# hexdump test1.txt 0000000 81e3 e382 8481 81e3 e386 8881 81e3 0a8a 0000010 81e3 e38b 8d81 81e3 e38f 9181 81e3 0a93 0000020 [root@localhost ~]#
——————–
odコマンドのオプションを使ってみよう
odコマンドは、オプションがあります。オプションは複数ありますが、一部紹介します。
オプション | 説明 |
---|---|
-An | 冒頭のアドレスを表示しない |
-t u1 | 1バイト単位で10進数で出力 |
-N1 | 表示するのは1バイトまで |
——————–
今回は、上記のオプションを使って/dev/zeroファイルを読みだして表示してみましょう。
[root@localhost ~]# cat /dev/zero ※catコマンドでは、何も表示されません [root@localhost ~]# od -A n -tu1 -N 1 /dev/zero 0 [root@localhost ~]#
——————–
そうすると出力結果が「0」と表示されます。/dev/zeroファイルは、「0」ばかりを生成し続けるファイルです。
こんなファイルを何に使うのか疑問に思いますよね?
ところが/dev/zeroファイルは、いろんな場面で活躍します。
例えば、あなたがペンでラブレターを書いたとしましょう。
そのラブレターには、こんな内容が書かれています。
「めぐみさんのことがすききです」
よく見ると文末が「すききです」になってます。
しかし、もしお母さんやお父さんや兄弟に拾われて、見られたらとても恥ずかしいですよね?
そこで、近くにあったで墨汁で「めぐみさんのことがすききです」の部分を黒塗りにしました。
これで安心です。もし誰かにラブレターを見られたとしても黒塗りなので絶対にわかりません。
/dev/zeroファイルは、まさに「墨汁で黒塗り」にするような役割をするファイルです。
ファイルの中身やディスクを「0」で上書きして(埋め尽くして)、完全に消去するといった使い方もできるわけです。
実際に、test1.txtファイルに中身(めぐみさんのことがすききです)を/dev/zeroファイルを使って、
すべて「0」で上書きして、最後にodコマンドで確認してみましょう!
——————–
[root@localhost ~]# cat test1.txt めぐみさんのことがすききです [root@localhost ~]# [root@localhost ~]# wc -c test1.txt 43 test1.txt [root@localhost ~]#
——————–
[root@localhost ~]# cat test1.txt めぐみさんのことがすききです [root@localhost ~]# [root@localhost ~]# dd if=/dev/zero of=test1.txt bs=43 count=1 ↑ddコマンドを実行すると、中身がぜんぶ「0」でサイズが43Byteのファイル「test1.txt」が出来あがります。 1+0 records in 1+0 records out 43 bytes (43 B) copied, 0.000401413 s, 107 kB/s [root@localhost ~]# [root@localhost ~]# cat test1.txt ※何も表示されません [root@localhost ~]#
——————–
[root@localhost ~]# od -A n -tu1 -N 1 test1.txt 0 [root@localhost ~]#
これで無事に「test1.txt」の中身は上書きされましたね!
——————–
まとめ
odコマンドやhexdumpコマンドは、LPICの試験においては、出題率は低いように感じますが、バイナリ形式の実行可能ファイルの内容を見るのに便利だったりと実務で使用することもあるかもしれません。しっかり覚えておきましょう!
それでは今回はこのあたりで。
確認問題
ファイル内容を8進数表示するコマンドで、正しい選択肢を1つ選びなさい。
A) cat
B) dd
C) od
D) wc
ファイル内容を16進数表示するコマンドで、正しい選択肢を1つ選びなさい。
A) hexdump
B) hexdump
C) hexdomp
D) hexaump