Blogフリュー株式会社の技術ブログです2014年04月3日Rubyで標準出力を書き換えるRubyプログラミング言語お久しぶりです。前までプロビジョニングとかImmutableInfrastructureにハマっていた国平です。Chefを触り始めたあたりから、Rubyが楽しくなってきて、最近では隙あればRubyスクリプトを書き殴ってます。今回は、Rubyの超小ネタをご紹介します。バッチ処理を動かしてる時って、進捗度を標準出力に出したいですよね。そんな時に役立つ小ネタがこれです。何も言わずに↓のスクリーンショットを見て下さい。分かりますか?標準出力に、進捗を表示しているのですが、処理の進捗に合わせて出力した内容を書き換えてます。いう表示ができると、スクリプトがプロっぽくなりますよね。この出力を行う方法をご紹介します。標準出力に文字を出すカーソル位置を現在行の先頭に戻す1に戻るこの3ステップです。"\e[#{n}D"STDOUT.flush</code>で、OKです。1文字動かすなら、↓ですね。"\e[1D"STDOUT.flush</code>当然、左だけでなく上下左右に移動することが出来ます。thing...おまけで、今度は逆に減っていくパターンを考えます。今度は、最初に”#”を10個表示して、どんどん減っていくような表示をさせます。これは、最初に”#”が10個表示されて、その上に更に”#”を9個,8個,7...と書き換えて行っているので、最初に表示された後ろの方の”#”がそのまま残ってしまっています。上書きするような実装に書き換えます。0.5end</code>実行すると今度は上手く”#”が減っていきます。まとめRubyではカーソルを移動させることで、標準出力に出した内容を書き換えることができます。この機能を利用することで、RubyでCLIスクリプトを書くときに、リッチっぽい表示ができるようになります。この内容はWindows環境で動作するかは未確認です。試す時は、Vagrantなどを使って試してみることをおススメします。