【簡単】バイナリファイルをコマンド一発で生成|echo コマンド

この記事は約2分で読めます。

ファームウェア開発をしていると、ちょっとしたバイナリファイルを作りたいときがありますよね。よくある方法は、バイナリエディタで作ったり、ちょっと頑張る人ならC言語でプログラム組んだりしますね。

ただ、ちょっとしたバイナリファイルを作成するだけなら、MSYS2@WindowsやLinux、OS Xなら簡単にできますよー。
あの echo コマンドを使うだけです。オプション -en を使えばOKです!
DOS の echo ではできません、念のため

スポンサーリンク

echo を使って簡単にバイナリファイルを作成する

例えば、全てのbitが1の 4Byte のファイルを作る場合は下記のようにすればOKです。
ちなみに xxd -g1 は1Byteづつ表示するコマンドです。ついでにおぼえておくと便利ですよ。

$ echo -en "\xff\xff\xff\xff" > hoge.bin
$ xxd -g1 hoge.bin
00000000: ff ff ff ff    

みんな大好き 0xdeadbeef の場合はこんな感じ。もし「0xdeadbeef について何??」て思った人はこのWikipediaを見てみてくださいね。

$ echo -en "\xde\xad\xbe\xef" > fuga.bin
$ xxd -g1 fuga.bin
00000000: de ad be ef       

最後にもう一つ。ARMっ子ならご存知の、無限ループ命令ですね。

$ echo -en "\xea\xff\xff\xfe" > forever_loop.bin
$ xxd -g1  forever_loop.bin
00000000: ea ff ff fe       

以上、ちょっとしたバイナリファイルを簡単に作成する方法でした!

コメント

  1. とくめー より:

    すごく細かいことなんですが,`echo`コマンドの(というか所謂Unixコマンドの)統一規格であるPOSIXでは`echo`コマンドに`-en`オプションはありません(参考: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html)。実際に,`echo`コマンドの一つの実装であるOpenBSD上の`echo`コマンドには`-e`オプションはありません(参考: http://man.openbsd.org/echo.1)。
    替わりに`printf`コマンドを使うといいと思います。但し,これもPOSIX規格でバイナリデータの数値直接指定には8進数しか使えませんので注意が必要です。
    例::
    $ printf ‘\352\377\377\376’ > forever_loop.bin

    尤も,(私は組込みOSに全く詳しくないのでどうとも言えませんが)組込みOSとしての利用が多い?Linuxに搭載されている`echo`コマンドはBashシェル組込みのもの(参考: https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html#Bash-Builtins)でもGNU製のもの(参考: https://www.gnu.org/software/coreutils/manual/html_node/echo-invocation.html)でも`-en`オプションは使えますけどね。

    • とくめー より:

      すいません。リンクの判定がおかしくなってしまいました。