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
コメント