Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Rubyのヒアドキュメントを使ってUNIXコマンドを便利に使う

みんな大好きヒアドキュメントさん。

普段はルイズコピペのような長文を扱うために使う場合が多いですね。
ところが、この子と文字列をコマンドとして扱うバッククォート(`)を合わせてあげると少し面白いことができます。
例えば、

hoge = String.new
hoge =<<`EOC`
date
EOC

とやれば、

"Fri Oct  4 19:09:42 JST 2013\n"

という文字列を得ます。

返ってくるのはStringクラスなので、付随したメソッドも当然利用可能です。

hoge = String.new
hoge =<<`EOC`.split("\n")
who
EOC

なんて事をやると

["shuzo console  Oct  4 07:38 ", 
 "shuzo ttys000  Oct  4 07:38 ", 
 "shuzo ttys002  Oct  4 18:34 "]

といった感じで返って来ます。
この例では一個しか実行していませんが、
コマンドを連続して実行することも当然できます。
文字列処理はRubyが得意とする所なのでUNIXコマンドと上手に組み合わせれば色々楽が出来そうです。