Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > shellライブラリ > Shell::Filterクラス

class Shell::Filter

クラスの継承リスト: Shell::Filter < Enumerable < Object < Kernel < BasicObject

Abstract

コマンドの実行結果はすべてShell::Filterとしてかえります.

特異メソッド

new -> Shell::Filter

執筆者募集。 Shell::Filter クラス のインスタンスを返します。 通常このnewを直接使う機会はすくないでしょう。

インスタンスメソッド

self + filter

執筆者募集

filter1 + filter2 は filter1の出力の後, filter2の出力を行う.

self < src -> self

srcをフィルタの入力とする. srcが, 文字列ならばファイルを, IOオブジェクトであれ ばそれをそのまま入力とする.

[PARAM] src:
フィルタの入力を, 文字列もしくは,IO オブジェクトで指定します.

使用例

Shell.def_system_command("head")
sh = Shell.new
sh.transact {
  (sh.head("-n 30") < "/etc/passwd") > "ugo.txt"
}
self > to -> self

toをフィルタの出力とする. toが, 文字列ならばファイルに, IOオブジェクトであれ ばそれをそのまま出力とする.

[PARAM] to:
出力先を指定します.文字列ならばファイルに,IOオブジェクトならばそれに出力します.

使用例

Shell.def_system_command("tail")
sh = Shell.new
sh.transact {
  (sh.tail("-n 3") < "/etc/passwd") > File.open("tail.out", "w")
  #(sh.tail("-n 3") < "/etc/passwd") > "tail.out" # と同じ.
}
self >> to -> self

toをフィルタに追加する. toが, 文字列ならばファイルに, IOオブジェクトであれば それをそのまま出力とする.

[PARAM] to:
出力先を指定します。文字列ならばファイルに、IOオブジェクトならばそれに出力します。

使用例

Shell.def_system_command("tail")
sh = Shell.new
sh.transact {
  (sh.tail("-n 3") < "/etc/passwd") >> "tail.out"
  #(sh.tail("-n 3") < "/etc/passwd") >> File.open("tail.out", "w") # でも同じ.
}
each(rs = nil) -> ()

フィルタの一行ずつをblockに渡します。

[PARAM] rs:
レコードセパレーターを表す文字列を指定します。 nil ならば、Shell.record_separatorの値が使用されます。

使用例

sh = Shell.new
sh.cat("/etc/passwd").each { |line|
  puts line
}
input
input=

執筆者募集

フィルターを設定します。

to_a -> Array
to_s -> String

実行結果を文字列、それぞれ文字列の配列で返します。

使用例

Shell.def_system_command("wc")
sh = Shell.new
puts sh.cat("/etc/passwd").to_a

sh.transact {
  puts (cat("/etc/passwd") | wc("-l")).to_s
}
self | filter -> object

パイプ結合を filter に対して行います。

[PARAM] filter:
Shell::Filter オブジェクトを指定します.
[RETURN]
filter を返します.

使用例

Shell.def_system_command("tail")
Shell.def_system_command("head")
Shell.def_system_command("wc")
sh = Shell.new
sh.transact {
  i = 1
  while i <= (cat("/etc/passwd") | wc("-l")).to_s.chomp.to_i
    puts (cat("/etc/passwd") | head("-n #{i}") | tail("-n 1")).to_s
    i += 1
  end
}

Methods

Classes