この記事は何
皆さんは ruby -run
というコマンドを使ったことがあるでしょうか?
ruby -run
を使うとcp
やmv
など、Unixコマンドの一部をrubyスクリプト内で利用することができるようになるため、-e
オプションと一緒に
ruby -run -e cp hoge.txt hoge2.txt
のように、利用することができます。
しかし、https://docs.ruby-lang.org/ja/latest/doc/spec=2frubycmd.html を見ても、-run
オプションは
存在しません。この理由をこの記事では紹介します。
-rオプション
-run
がオプションとして存在しない理由を探る前に、まず-r
オプションを説明する必要があります。
https://docs.ruby-lang.org/ja/latest/doc/spec=2frubycmd.html
にある通り、-r
オプションはスクリプト実行前に feature で指定されるライブラリを Kernel.#require するオプションです。
例えばcsv
ライブラリを使用したい場合は、以下のように使うことができます
ruby -rcsv -e 'CSV.read("hoge.csv")'
unライブラリについて
次にun
ライブラリについて説明します。
un
ライブラリは組み込みのライブラリで
にある通り、Unix の基本コマンドの代替となるユーティリティを提供します。
このライブラリをrequire
することで、以下のメソッドが利用できるようになります。
- Kernel#chmod
- Kernel#cp
- Kernel#help
- Kernel#httpd
- Kernel#install
- Kernel#ln
- Kernel#mkdir
- Kernel#mkmf
- Kernel#mv
- Kernel#rm
- Kernel#rmdir
- Kernel#touch
- Kernel#wait_writable
-runの正体
ここまでの説明で、気づいた方もいるのではないでしょうか?
そう、-run
とはun
ライブラリを-r
オプションでrequire
しているだけなのです!
-run
がrun
と読めてしまうため、オプションと勘違いしやすいというTipsでした。