rigコマンドをMacで使ってみる

Linuxの「ジョークコマンド」「ネタコマンド」として取り上げられることの多いコマンド rigMac で使ってみる。

環境

% sw_vers
ProductName:    macOS
ProductVersion: 12.3.1
BuildVersion:   21E258

% brew --version
Homebrew 3.5.2
Homebrew/homebrew-core (git revision ab2de8eb603; last commit 2022-06-26)
Homebrew/homebrew-cask (git revision 9713bf8928; last commit 2022-06-25)

インストール

Homebrew でインストールできる。

% brew install rig

brew infoで確認したところ、この1年でのインストール数は 250 程度らしい。この辺りからもほぼ使わることのないコマンドということが分かる。

% brew info rig
rig: stable 1.11 (bottled)
Provides fake name and address data
https://rig.sourceforge.io/
/usr/local/Cellar/rig/1.11 (11 files, 126.4KB) *
  Poured from bottle on 2022-06-26 at 18:39:05
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/rig.rb
License: GPL-2.0
==> Analytics
install: 21 (30 days), 65 (90 days), 249 (365 days)
install-on-request: 21 (30 days), 65 (90 days), 251 (365 days)
build-error: 2 (30 days)

使い方

rig コマンドを実行すると、ランダムな氏名・住所・電話番号(一部はマスキングされている)が出力される。

% rig
Giovanni Camacho
574 New First Rd
Minneapolis, MN  55401
(612) xxx-xxxx

-c オプションで出力する件数を指定することもできる。住所には州コードが含まれており、アメリカのものが出力されるようである。

% rig -c 3
Claudio Dyer
150 Sunrise Rd
Arlington, TX  76010
(817) xxx-xxxx

Jarrod Serrano
416 Wommert Ln
Beloit, WI  53511
(608) xxx-xxxx

Grace William
222 Rider Blvd
Akron, OH  44309
(216) xxx-xxxx

細かいオプションとして、-m で男性の、-f で女性の名前に限定して出力させることができる。

% rig -m
Pat Ware
930 Manchester St
Plainfield, NJ  07061
(908) xxx-xxxx

% rig -f
Petra Higgins
30 Ashland St
Burlington, NC  27215
(919) xxx-xxxx

本当にこれだけのコマンドである。
brew info に記載のあった URL を確認してみても、機能に関してはこれ以上の情報は特に得られなかった。コマンド名の rig は Random Identity Generator の略ということは分かった。

RIG - The Random Identity Generator

rig コマンドの仕組み

コマンドの help を確認してみる。

% rig -h
USAGE: rig [-f | -m ] [ -d datadir ] [ -c num ]
       datadir - Directory where data files can be found.
       If datadir is not specified, /usr/local/share/rig is used as the
       default directory.
       num - print num identities.
       -f and -m specify gender of generated identities.

上述のオプションのほか、データファイルのディレクトリを指定することができ、デフォルトでは/usr/local/share/rig が使われると記載されている。このディレクトリの中身を見てみると、.idx 形式のファイルが複数あることが確認できる。

% cd /usr/local/share/rig 
% ls
fnames.idx  lnames.idx  locdata.idx mnames.idx  street.idx

ファイルの中身を見てみると、コマンドで出力されていたような文字列がそのまま記載されていることが確認できる。

% head street.idx 
Sunrise Rd
Stonehedge Blvd
Midland St
Tulip St
Beley Rd
Bryant Blvd
Hamlet St
Willow Rd
Limetree Ln
Genesse Blvd

それぞれのファイルと、コマンドで出力されている項目との対応としては以下のようになる。

  • fnames.idx: 女性の名 ( Female Name )
  • lnames.idx: 姓 ( Last Name )
  • locdata.idx: 住所の2行目+電話番号 ( Location Data )
  • mnames.idx: 男性の名 ( Male Name )
  • street.idx: 住所の1行目 ( Street Address )

すなわち、.idx ファイルの中身を書き換えることで、コマンドのカスタマイズが可能である。Homebrew でインストールした状態では、それぞれのファイルに書き込み権限がついていないので chmod で変更してから編集する (念のためにコピーを作成してから編集している)。

% cp fnames.idx fnames.idx.orig
% chmod 755 fnames.idx
% echo Test > fnames.idx
% cat fnames.idx
Test

% rig -f
Test Floyd
175 West Street Terr
Berkeley, CA  94704
(510) xxx-xxxx

ここまでで仕組みもほぼ把握することができたが、より詳細な実装を確認したい場合は、SourceForge.net からソースコードをダウンロードすることができる。

sourceforge.net

感想

機能が非常に限定的なので、おそらく一般的なLinuxコマンドリファレンスには出てこないようなコマンドではあると感じた。
また、「何に使えるのか」と言われると確かに回答が難しいコマンドでもあると思うが、コマンド名の通りランダムな個人の情報を生成して、ダミーデータをデータベースに大量に入れたい、という場合には使えるかもしれない。