外部コマンドを実行する方法
`...`
/%x{...}
Kernel.#system
Kernel.#spawn
IO.popen
Open3.capture3
Open3.popen3
systemu
参考:
Ruby で外部コマンドを実行して結果を受け取る方法あれこれ – Qiita
Ruby で外部コマンドを実行する方法 | Aqutras Members’ Blog
Ruby から外部コマンドを実行するときは system や Open3 に可変長引数で渡すのが便利 | ブログのおんがえし
Ruby から外部プログラムを起動 | None is None is None
Ruby からシェルコマンドを実行する (Kernel.#system ..etc) | kikeda1104’s blog
Executing shell script from Ruby code | The Lazy Log
Different ways to run Shell Commands in Ruby | Red Panthers
バッククォート / %x リテラル
コマンドを実行して、標準出力を文字列として返す。
参考:
Ruby “execute shell command” examples | alvinalexander.com
module function Kernel.#` (Ruby 2.7.0)
Kernel.#system
コマンドを実行して、成功 (終了ステータスが 0
) の場合は true
を返し、失敗 (0
以外) の場合は false
を返す。
参考:
module function Kernel.#system (Ruby 2.7.0)
Kernel.#spawn
参考:
Ruby の Spawn (別プロセスの起動) について | 酒と涙とRubyとRailsと
ruby の spawn で起動したプロセスを、終了待ちしたり、強制終了したり、親プロセスと一緒に殺す | それマグで!
module function Kernel.#spawn (Ruby 2.7.0)
IO.popen
参考:
singleton method IO.popen (Ruby 2.7.0)
Process substitution (not command substitution) in Ruby – Stack Overflow
Process.wait / Process.wait2
プロセスの終了を待つ
参考:
module function Process.#wait (Ruby 2.7.0)
シェルコマンドを実行する
参考:
Ruby からシェルコマンドを実行する (Kernel.#system ..etc) | kikeda1104’s blog
How to call shell commands from Ruby – Stack Overflow
シェルでプロセス置換を実行する
参考:
How to call bash (not shell) from ruby | Sergey Potapov
Running shell commands from Ruby | Shiroyasha
Process substitution (not command substitution) in Ruby – Stack Overflow
Shellwords.escape
シェルのコマンドライン引数として与えられるように文字列をエスケープする。
greeting = Shellwords.escape("hello,\nworld") system("echo #{greeting}")
参考:
singleton method Shellwords.escape (Ruby 2.7.0)
Shellwords.escape をアンエスケープする
バッククォートと echo
を使う。
str = Shellwords.escape("{ key: \"value\" }") puts `echo #{str}`
他の Ruby スクリプトを実行する
参考:
Calling another Ruby script | Ruby-Forum
Running another ruby script from a ruby script – Stack Overflow
管理者権限でコマンドを実行する
参考: