Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

ライブラリ「un」で依存性のないUNIXコマンドが使える

unライブラリを使うと、基本的UNIXコマンドを依存性を気にせず使えます。

library un

要約
Unix の基本コマンドの代替となるユーティリティ。
Makefile 内でシステムに依存しないように用意されました。 mkmf が使用します。

含有リスト

ruby -run -e cp -- [-prv] SOURCE DEST
ruby -run -e ln -- [-sfv] TARGET LINK_NAME
ruby -run -e mv -- [-v] SOURCE DEST
ruby -run -e rm -- [-frv] FILE
ruby -run -e mkdir -- [-pv] DIRS
ruby -run -e rmdir -- [-v] DIRS
ruby -run -e install -- [-pv -m mode] SOURCE DEST
ruby -run -e chmod -- [-v] OCTAL-MODE FILE
ruby -run -e touch -- [-v] FILE
ruby -run -e wait_writable -- [OPTION] FILE
ruby -run -e mkmf -- [OPTION] EXTNAME [OPTION]
ruby -run -e httpd -- [OPTION] DocumentRoot
ruby -run -e help [COMMAND]

Kernelクラス(sleepやputsが定義されている奴)にメソッドが追加・上書きされます。
というわけで、上に示したコマンドであれば、(Ruby環境があれば)依存性を排除して実行できます。

これはmkmfで主に用いられるもののようです。
これは拡張ライブラリのMakefileで利用されます。
依存性でコケると面倒ですから、こういったライブラリが用意されたのでしょうね。

実際使ってみた

$ ruby -run -e mkdir foo; touch foo/bar.rb
$ ls foo/
bar.rb

とまぁ、当たり前の結果しか出来ません。
普通に使う分に旨味はありません。

おまけ

なんで「un」なのかと思いましたが、-r(拡張ライブラリ読み込み)と組み合わせると「-run」になるんですね。
なんでライブラリ名と-rをくっ付ける事ができるのか……と思ってましたが、こういった事情もあるんですかね。(
なお、似た発想である疑いがあるものに「ubygemライブラリ」があります。