CentOS7上にてパイプ経由rubyを使う方法はありませんか？


環境 : CentOS7 ruby2.3.0

[code]

    [root@5ecf1469c888 ~]# irb
    2.3.0 :001 > 10.times do |i| `touch #{i}.txt` end
     => 10
    2.3.0 :002 > exit
    [root@5ecf1469c888 ~]# ls
    0.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  anaconda-ks.cfg  git
    
[/code]

ワンライナーで何か作業を行う時にパイプなどでrubyに渡して処理させることは可能でしょうか？  
上記の例だと、irb環境でシェルを使っているのですが逆のことを行いたいのです。  
シェル環境でrubyを使う。

例↓イメージでいうとこのような感じ

[code]

    [root@5ecf1469c888 ~]# ls |irb puts
    Switch to inspect mode.
    /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb/magic-file.rb:8:in `initialize': No such file or directory @ rb_sysopen - puts (Errno::ENOENT)
            from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb/magic-file.rb:8:in `open'
            from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb/magic-file.rb:8:in `open'
            from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb/input-method.rb:101:in `initialize'
            from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb/context.rb:85:in `new'
            from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb/context.rb:85:in `initialize'
            from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb.rb:426:in `new'
            from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb.rb:426:in `initialize'
            from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb.rb:381:in `new'
            from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/irb.rb:381:in `start'
            from /usr/local/rvm/rubies/ruby-2.3.0/bin/irb:11:in `<main>'
    
[/code]

簡単な例でいうと  
ls で標準出力される結果を ruby のputs で表示させる。

他にはパイプで渡した結果を.splitメソッドなどを使ってやりたいのです。




rubyのコマンドラインオプション`-ne`を利用します。

（irbは対話的にrubyを扱うコマンドなのでここでは必要ありません）

  * `-e <script>` : スクリプトを実行する
  * `-n` : 実行するスクリプト全体を `while gets; ... ; end` で囲む
  * `$_` : 組み込み変数。getsで読み込んだ値が入っている

例1: 入力を一行ごとに読み込んで出力する

[code]

    $ ls | ruby -ne 'puts $_'
    
[/code]

例2: 読み込んだ行を分割する (`$F = $_.split` / `-a`オプションが必要)

[code]

    $ ls | ruby -ane 'p $F'
    
[/code]




rubyのコマンドラインオプション`-ne`を利用します。

（irbは対話的にrubyを扱うコマンドなのでここでは必要ありません）

  * `-e <script>` : スクリプトを実行する
  * `-n` : 実行するスクリプト全体を `while gets; ... ; end` で囲む
  * `$_` : 組み込み変数。getsで読み込んだ値が入っている

例1: 入力を一行ごとに読み込んで出力する

[code]

    $ ls | ruby -ne 'puts $_'
    
[/code]

例2: 読み込んだ行を分割する (`$F = $_.split` / `-a`オプションが必要)

[code]

    $ ls | ruby -ane 'p $F'
    
[/code]

