バイナリファイルの中身を見たり直接編集したりするためには、 バイナリエディタが必要になります。 バイナリファイルを閲覧、編集するためのバイナリエディタとして、 viを利用するための方法です。
例として、lsコマンドの中身を見てみます。 別にlsでなくて、画像とかでもなんでもいいです。
バイナリエディタでの作業は、重要なバイナリファイルを誤って壊す場合があります。 必ずバックアップを取るか、コピーに対して操作するようにしましょう。
作業ディレクトリに/bin/lsをコピーします。
$ cp /bin/ls .
バイナリモードでviを開きます。
$ vi -b ./ls
開いた状態で以下のコマンドを入力するとバイナリデータを バイナリエディタ風表示に変換してくれます。
:%!xxd
そうするとエディタの画面がこのようになります。
0000000: cffa edfe 0700 0001 0300 0080 0200 0000 ................
0000010: 1300 0000 1807 0000 8500 2000 0000 0000 .......... .....
0000020: 1900 0000 4800 0000 5f5f 5041 4745 5a45 ....H...__PAGEZE
0000030: 524f 0000 0000 0000 0000 0000 0000 0000 RO..............
0000040: 0000 0000 0100 0000 0000 0000 0000 0000 ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0000060: 0000 0000 0000 0000 1900 0000 2802 0000 ............(...
0000070: 5f5f 5445 5854 0000 0000 0000 0000 0000 __TEXT..........
コロン":"より左の部分はファイルの中の位置、 4桁の数字とアルファベットの文字列が8ブロックずつ整列して表示されているのが 実際のバイナリデータを16進文字列で表示したものです。 一番右がバイナリデータをASCIIで変換したものです。
編集可能なのはこの真ん中のバイナリデータの部分です。
このまま保存してしまうとバイナリエディタ風の表示のまま 保存してしまいますので注意してください。 編集が終わったらバイナリエディタ風表示を元のバイナリに変換して保存します。
:%!xxd -r
:wq
以上、バイナリエディアとしてviを使用する方法でした。