wcコマンドをrubyで実装

unix系のosにはwcコマンドがあり、それをrubyで実装するという事を学習しているのですが、そもそもwcコマンドに対する認識が弱かったのでおさらい。

 

wcコマンドとは

wc (UNIX) - Wikipedia

Word Count の略

UNIXオペレーティングシステムのコマンドの一種。

標準入力か指定されたファイルのリストを読み込み、各種統計情報を生成する。出力情報としては、バイト数、単語数、行数(改行文字の個数)などがある。複数のファイル名を指定した場合、各ファイルの情報と合計が表示される。

 ふむふむ。文字カウントのコマンドね。

 

通常の使用ではコマンドの横に入力したファイル名を読み込み文字をカウント。

ここまではわかる。wcのみで動かしたところ普通に文字を入力する状態が永遠に続いたので???と疑問がでた。

どうやらwcのみで入力したときは標準入力を受け付ける状態になり、標準入力を止めるにはCtrl+dを押して停止させて、その結果の文字数などをカウントしてくれるようです。

unixではCtrl+dは標準入力の終了を命じていているそうです。

ちなみにCtrl+z プログラムの一時停止(維持はしている。復帰にはjobsコマンドで維持しているプログラムを確認。fgコマンドで番号指定して復帰)

 

ということでだいたいの動きがわかったので、要件を確認

・-lオプションも実装すること。
・標準入力からも受け取れるようにして実行結果と出力を提出する。
・引数にファイル名が複数個来た場合にも対応し実行結果と出力を提出する。
・自作のls -lコマンドと自作のwcコマンドをつなげた出力を提出する。
・本物のls -lコマンド、本物のwcコマンドをつなげた出力を併記して提出すること。

 

・-lオプションも実装すること。

これは行数とファイル名が出力されればいいということ。

・標準入力からも受け取れるようにして実行結果と出力を提出する。

これはgetsメソッドなりを使って入力状態が実行結果?

出力はそれを処理した出力?ここらへんがいまいちわからない。

・引数にファイル名が複数個来た場合にも対応し実行結果と出力を提出する。

やっぱり実行結果と出力の認識がいまいち理解できていない。

・自作のls -lコマンドと自作のwcコマンドをつなげた出力を提出する。

・本物のls -lコマンド、本物のwcコマンドをつなげた出力を併記して提出すること。

これも結局出力の意味がターミナル出た結果なのか、ファイルに標準出力をリダイレクトさせることを意味しているのかが理解できていないので要質問。

 

 

ということで質問しないと始まらなさそうなので質問します!