アニメ『魔法科高校の劣等生』(2013)
魔法アニメで特に好きなアニメです。魔法を学問のように扱っている世界観がいいです。勉強ができる優等生は、当然魔法がうまく使えるし、勉強できない下級生はまともに魔法が使えません。
魔法とエンジニアリングの融合も、惹きつけられる発想です。今年は映画もあるようなので見たいなあと思っています。
コマンドラインは、コマンドという呪文を唱え、そして小さな呪文を組み合わせ、より大きな仕事ができる、ってところが、魔法っぽいなあと思います。
大魔法を使えるようになるために、小さなコマンドもばかにせず日々吸収していきたいです。
ラリーウォール(Larry Wall)を崇拝している私なので、いつもバイナリファイル生成はPerlでやってしまいますが、当然Perlを使わなくてもバイナリファイルぐらい作れますね。
今回はxxdコマンドを使ってみます。
takk@deb8:~$ echo '0: 00 01 02 03 04' | xxd -r > test.bin takk@deb8:~$ od -tx1 test.bin 0000000 00 01 02 03 04 0000005
アドレス:値1 値2 値3 …
という形式でテキストを作れば、xxd -rコマンドでバイナリファイルに変換できます。
連番でバイナリ生成してみましょう。
takk@deb8:~$ printf '%02x ' 0 {1..10} | xxd -r > test.bin takk@deb8:~$ od -tx1 -Ax test.bin 000000 01 02 03 04 05 06 07 08 09 0a 00000a takk@deb8:~$
0 {1..10}の、0がアドレス、1〜10が値となります。
アドレスに0以外を設定すると、指定したアドレスまでの値を0で補完してくれます。
takk@deb8:~$ echo '5: 00' | xxd -r > test.bin takk@deb8:~$ od -tx1 -Ax test.bin 000000 00 00 00 00 00 00 000006 takk@deb8:~$
指定したアドレスまでの0補完なので、指定アドレス以降は、書いた値がそのままバイナリとなります。
takk@deb8:~$ echo '5: 33' | xxd -r > test.bin takk@deb8:~$ od -tx1 -Ax test.bin 000000 00 00 00 00 00 33 000006 takk@deb8:~$ echo '5: 11 22' | xxd -r > test.bin takk@deb8:~$ od -tx1 -Ax test.bin 000000 00 00 00 00 00 11 22 000007 takk@deb8:~$
アドレスだけ指定して、値を何も書かないと、このように空ファイルが生成されます。
takk@deb8:~$ echo '5: ' | xxd -r > test.bin takk@deb8:~$ od -tx1 -Ax test.bin 000000 takk@deb8:~$ ls -l test.bin -rw-r--r-- 1 takk takk 0 5月 11 22:08 test.bin takk@deb8:~$
256バイトのオール0のバイナリを生成する場合は、生成したバイト数-1をアドレスとして、00を書けばよいです。
takk@deb8:~$ echo '255:00' | xxd -r > test.bin takk@deb8:~$ od -tx1 -Ax test.bin 000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 * 000250 00 00 00 00 00 00 000256 takk@deb8:~$
コメント