odコマンドでASCIIコード表を作ってみます。
odの-taオプションを使うと、ダンプ時に文字コードの場合は文字を、制御コードの場合は制御の種類を表示することができます。
takk~$ echo -ne "\x0" | od -ta 0000000 nul 0000001 takk~$ echo -ne "\x1b" | od -ta 0000000 esc 0000001 takk~$ echo -ne "\x41" | od -ta 0000000 A 0000001 takk~$
ベースになるコマンドとしてはodの他には、seqとperlです。
takk~$ seq 0 127 | perl -ne 'print chr' | od -ta
0000000 nul soh stx etx eot enq ack bel bs ht nl vt ff cr so si
0000020 dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us
0000040 sp ! " # $ % & ' ( ) * + , - . /
0000060 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
0000100 @ A B C D E F G H I J K L M N O
0000120 P Q R S T U V W X Y Z [ \ ] ^ _
0000140 ` a b c d e f g h i j k l m n o
0000160 p q r s t u v w x y z { | } ~ del
0000200
takk~$
まず、左側のアドレスがデフォルトでは8進表示です。これを16進にするには、-Axオプションを使います。それから、アドレスは2桁で良いのでcutしておきます。
takk~$ seq 0 127 | perl -ne 'print chr' | od -ta -Ax | cut -b5-
00 nul soh stx etx eot enq ack bel bs ht nl vt ff cr so si
10 dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us
20 sp ! " # $ % & ' ( ) * + , - . /
30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
40 @ A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z [ \ ] ^ _
60 ` a b c d e f g h i j k l m n o
70 p q r s t u v w x y z { | } ~ del
80
ヘッダ(\ 0〜f)を付けて末尾の空行(80〜)を削除します。
takk~$ echo -n "\ ";printf " %3x" `seq 0 15`;echo;seq 0 127 |
> perl -ne 'print chr'|od -ta -Ax | cut -b5- | head -n -1
\ 0 1 2 3 4 5 6 7 8 9 a b c d e f
00 nul soh stx etx eot enq ack bel bs ht nl vt ff cr so si
10 dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us
20 sp ! " # $ % & ' ( ) * + , - . /
30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
40 @ A B C D E F G H I J K L M N O
50 P Q R S T U V W X Y Z [ \ ] ^ _
60 ` a b c d e f g h i j k l m n o
70 p q r s t u v w x y z { | } ~ del
takk~$
これで完成です。
白黒が味気ないなあと思ったら、以下のようにhtmlに書き出してみましょう。ランダムで色を決めてます。
takk~$ (echo -n "\ ";printf " %3x" `seq 0 15`;echo;
> seq 0 127 | perl -ne 'print chr' | od -ta -Ax -v |
> cut -b5- | head -n -1 ) | perl -pe 'BEGIN{print"<TABLE border=1>"};
$c=sprintf("#%06x",int rand 0xffffff);
s|([^\s]+)|<TD bgcolor=$c>$1</TD>|g;
s|^(.*)$|<TR>$1</TR>|;END{print"</TABLE>"}' > a.html



コメント