Ruby でシェルのようなものを作ってみると、Ruby とシェルやシステムコールの理解ができて、研修の課題とかにいいんじゃないかと10年くらい前に思ってたのを、ふと思い出したので書いてみます。 基本 シェルの動作を簡単に説明すると次のような感じです。 プロンプトを出力 標準入力からコマンドラインを読み込む 読み込んだコマンドを実行する コマンドの終了を待つ 1 に戻る これをそのまま Ruby で書いてみます。 while true print '-> ' # プロンプト表示 cmd = gets or break # コマンド入力 cmd.chomp! # 末尾の改行削除 pid = Process.fork do # 子プロセス生成 Process.exec [cmd, cmd] # コマンド実行 end Process.waitall # 子プロセスの終了待ち end Process
![Rubyでシェルもどきを作る - tmtms のメモ](https://cdn-ak-scissors.b.st-hatena.com/image/square/bcc5894b0dfacbcce1769662efd9396be09c6b29/height=288;version=1;width=512/http%3A%2F%2Ftatsu-zine.com%2Fimages%2Fbooks%2F87%2Fcover_s.jpg)