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ライブラリ」があります。