UNIX/Linuxの部屋 beavコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド beav バイナリビュアー・バイナリエディタ このエントリーをはてなブックマークに追加

最終更新


beav コマンドは emacs ライクな操作方法を持つバイナリビュアー・バイナリエディタである。少なくとも FreeBSD と Debian において外部パッケージから利用可能である。



beav コマンドの基本的な使い方
beav コマンドの引数にファイル名を渡す。
% beav [ファイル名]

すると下記のように画面になる。
     0: 02 74 3D 00 0C 00 04 01  2E 00 00 00 00 74 3D 00  .t=..........t=.
    10: 0C 00 04 02 2E 2E 00 00  31 75 3D 00 10 00 08 06  ........1u=.....
    20: 6B 65 72 6E 65 6C 00 D3  32 75 3D 00 18 00 08 0C  kernel..2u=.....
    30: 61 63 63 66 5F 64 61 74  61 2E 6B 6F 00 8F 78 C0  accf_data.ko..x.
    40: 33 75 3D 00 18 00 08 0C  61 63 63 66 5F 68 74 74  3u=.....accf_htt
    50: 70 2E 6B 6F 00 8F 78 C0  34 75 3D 00 10 00 08 06  p.ko..x.4u=.....
    60: 61 68 61 2E 6B 6F 00 D3  35 75 3D 00 10 00 08 06  aha.ko..5u=.....
    70: 61 68 63 2E 6B 6F 00 D3  36 75 3D 00 14 00 08 0B  ahc.ko..6u=.....
    80: 61 68 63 5F 65 69 73 61  2E 6B 6F 00 38 75 3D 00  ahc_eisa.ko.8u=.
    90: 14 00 08 0A 61 68 63 5F  70 63 69 2E 6B 6F 00 D3  ....ahc_pci.ko..
    A0: 39 75 3D 00 10 00 08 06  61 68 64 2E 6B 6F 00 D3  9u=.....ahd.ko..
    B0: 3A 75 3D 00 10 00 08 06  61 69 6F 2E 6B 6F 00 D3  :u=.....aio.ko..
    C0: 3B 75 3D 00 10 00 08 06  61 6D 72 2E 6B 6F 00 D3  ;u=.....amr.ko..
    D0: 3C 75 3D 00 14 00 08 08  69 66 5F 61 6E 2E 6B 6F  xu=.....if_an.ko
    E0: 00 B9 10 D3 3D 75 3D 00  14 00 08 09 69 66 5F 61  ....=u=.....if_a
    F0: 74 68 2E 6B 6F 00 15 D3  3F 75 3D 00 14 00 08 09  th.ko...?u=.....
   100: 69 66 5F 61 75 65 2E 6B  6F 00 24 D3 B3 76 3D 00  if_aue.ko.$..v=.
   110: 14 00 08 09 69 66 5F 61  78 65 2E 6B 6F 00 15 D3  ....if_axe.ko...
   120: B4 76 3D 00 14 00 08 09  69 66 5F 62 66 65 2E 6B  .v=.....if_bfe.k
   130: 6F 00 1A D3 B5 76 3D 00  14 00 08 09 69 66 5F 62  o....v=.....if_b
   140: 67 65 2E 6B 6F 00 16 D3  B6 76 3D 00 14 00 08 09  ge.ko....v=.....
   150: 62 72 69 64 67 65 2E 6B  6F 00 73 CE B7 76 3D 00  bridge.ko.s..v=.
BEAV  I kernel       File: /boot/kernel [RW]    CURSOR=00000000, 1   HEX 8   0H:


主な使い方は下記のとおり。
  • Ctrl-n・Ctrl-p・Ctrl-f・Ctrl-b でカーソル移動
  • 狙いの場所で 0〜9、A〜F を押すことでデータを更新
  • Ctrl-x Ctrl-s で更新を保存
  • Ctrl-c で beav コマンドを終了

beav コマンドの詳細キーバインド
beavn コマンドの詳細なキーバインドを説明する。なお、"C-f" などの意味は下記のとおり。
  • "C-f" とあるものは「Ctrl キーを押しながら f キーを押す」
  • "C-x C-s" とあるものは「Ctrl キーを押しながら x キーを押して、(Ctrl キーをそのまま押し続けながら s を押す」
  • "ESC s" は「ESC キーを押してから ESC キーから指を離し、s キーを押す」

C-f 1文字進む
C-b 1文字戻る
C-n 1行進む
C-p 1行戻る
C-v 1画面下に進む
ESC v 1画面上に戻る
ESC < バッファの先頭に移動
ESC > バッファの終端に移動
C-x C-s セーブ
C-c 終了 (emacs 式の C-x C-s でも終了できるようだ)
ESC s 検索
ESC t 次検索
0-9、A〜F を入力 カーソル位置を入力した 16進数で更新
C-x i 1バイト挿入
ESC d 1バイト削除
C-g 現在入力中のコマンドを抜ける
ESC ? ヘルプを表示
C-x 2 ウィンドウを上下に分割
C-x n 次ウィンドウに移動
ESC a ASCII 表示モードに切り替え

beav のマニュアル
上記以外にもまだまだキーバインドがある。ただしオンラインマニュアルにはほとんど情報がない。(FreeBSD では) 詳しいドキュメントが /usr/local/share/doc/beav/beav.txt に書いてあるので参照してほしい (英文)。

beav の開発体制
beav コマンドは 1993年に最新バージョン beav-1.40 がリリースされ、その後誰も機能追加は行っていないものの、FreeBSD の port や Debian の package としてほそぼそとパッチが当てられている模様である。よって、誰かが開発を引き継がない限りは大幅な機能追加は望めそうにない。

関連コマンド
beav 以外のバイナリエディタとして、emacs の hexl-mode がある。http://X68000.q-e-d.net/~68user/unix/pickup?emacs#prgmemo-emacs-hexl-mode を参照。

バイナリファイルを 16進数でダンプするコマンドとして、hexdump・hd・od コマンドなどがある (編集はできない)。