Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > shellライブラリ

library shell

要約

Ruby 上で sh/csh のようにコマンドの実行及びフィルタリングを手軽に行うためのライブラリです。

sh/csh の制御文は Ruby の機能を用いて実現します。

サンプル

Example 1:

sh = Shell.cd("/tmp")
sh.mkdir "shell-test-1" unless sh.exists?("shell-test-1")
sh.cd("shell-test-1")
for dir in ["dir1", "dir3", "dir5"]
  unless sh.exists?(dir)
    sh.mkdir dir
    sh.cd(dir) do
      f = sh.open("tmpFile", "w")
      f.puts "TEST"
      f.close
    end
    print sh.pwd
  end
end

Example 2:

sh = Shell.cd("/tmp")
sh.transact do
  mkdir "shell-test-1" unless exists?("shell-test-1")
  cd("shell-test-1")
  for dir in ["dir1", "dir3", "dir5"]
    if !exists?(dir)
      mkdir dir
      cd(dir) do
        f = open("tmpFile", "w")
        f.print "TEST\n"
        f.close
      end
      print pwd
    end
  end
end

Example 3: Using Pipe

sh.cat("/etc/printcap") | sh.tee("tee1") > "tee2"
(sh.cat < "/etc/printcap") | sh.tee("tee11") > "tee12"
sh.cat("/etc/printcap") | sh.tee("tee1") >> "tee2"
(sh.cat < "/etc/printcap") | sh.tee("tee11") >> "tee12"

Example 4:

print sh.cat("/etc/passwd").head.collect {|line| /keiju/ =~ line }

クラス

class Shell

Shell オブジェクトはカレントディレクトリを持ち, コマンド実行はそこからの相対パスになります.

class Shell::CommandProcessor
class Shell::Filter

コマンドの実行結果はすべて Shell::Filter か、そのサブクラスのインスタンスとして返ります。

  class Shell::BuiltInCommand

クラスとして実装されている全てのビルトインコマンドのスーパークラスです。

   class Shell::AppendIO
    class Shell::AppendFile
   class Shell::Cat
   class Shell::Concat
   class Shell::Echo
   class Shell::Glob
   class Shell::Tee
   class Shell::Void

何もしないコマンドです。

  class Shell::SystemCommand
class Shell::ProcessController

モジュール

module Shell::Error

shell で使用する例外のための名前空間です。

例外クラス

class Shell::Error::CantApplyMethod

メソッドを適用できないときに発生する例外です。

class Shell::Error::CantDefine

コマンドを定義出来ないときに発生する例外です。

class Shell::Error::CommandNotFound

コマンドが見つからないときに発生する例外です。

class Shell::Error::DirStackEmpty

空のディレクトリスタックから要素を取り出そうとしたときに発生する例外です。

同時にrequireされるライブラリ

shell/builtin-command

Shell で使用するビルトインコマンドを定義しているライブラリです。

shell/command-processor

Shell で使用可能なコマンドの大半を定義するライブラリです。

shell/error

shell で使用する例外を定義したライブラリです。

shell/filter

Shell::Filter を定義しているライブラリです。

shell/process-controller

プロセスを制御するためのクラスを定義したライブラリです。

shell/system-command
library shell