Class Shell
In: shell.rb
shell/error.rb
shell/command-processor.rb
shell/system-command.rb
shell/filter.rb
shell/version.rb
shell/builtin-command.rb
shell/process-controller.rb
Parent: Object
  version.rb - shell version definition file
      $Release Version: 0.6.0$
      $Revision: 11708 $
      $Date: 2007-02-12 17:01:19 -0600 (Mon, 12 Feb 2007) $
      by Keiju ISHITSUKA(Nihon Rational Software Co.,Ltd)

Methods

Included Modules

Error

Classes and Modules

Module Shell::Error
Class Shell::AppendFile
Class Shell::AppendIO
Class Shell::BuiltInCommand
Class Shell::Cat
Class Shell::CommandProcessor
Class Shell::Concat
Class Shell::Echo
Class Shell::Filter
Class Shell::Glob
Class Shell::ProcessController
Class Shell::SystemCommand
Class Shell::Tee

External Aliases

debug -> debug?
  alias cascade? cascade
verbose -> verbose?
verbose -> verbose?
debug -> debug?
cwd -> dir
cwd -> getwd
cwd -> pwd
dir_stack -> dirs

Attributes

cascade  [RW] 
command_processor  [R] 
cwd  [R]  Dir related methods

Shell#cwd/dir/getwd/pwd Shell#chdir/cd Shell#pushdir/pushd Shell#popdir/popd Shell#mkdir Shell#rmdir

debug  [RW] 
debug  [RW] 
dir_stack  [R] 
process_controller  [R] 
record_separator  [RW] 
system_path  [R] 
umask  [RW] 
verbose  [RW] 
verbose  [RW] 

Public Class methods

[Source]

# File shell.rb, line 223
  def Shell.alias_command(ali, command, *opts, &block)
    CommandProcessor.alias_command(ali, command, *opts, &block)
  end

[Source]

# File shell.rb, line 48
    def cd(path)
      sh = new
      sh.cd path
      sh
    end

[Source]

# File shell.rb, line 43
    def debug=(val)
      @debug = val
      @verbose = val if val
    end

command definitions

[Source]

# File shell.rb, line 215
  def Shell.def_system_command(command, path = command)
    CommandProcessor.def_system_command(command, path)
  end

[Source]

# File shell.rb, line 66
    def default_record_separator
      if @default_record_separator
        @default_record_separator
      else
        $/
      end
    end

[Source]

# File shell.rb, line 74
    def default_record_separator=(rs)
      @default_record_separator = rs
    end

[Source]

# File shell.rb, line 54
    def default_system_path
      if @default_system_path
        @default_system_path
      else
        ENV["PATH"].split(":")
      end
    end

[Source]

# File shell.rb, line 62
    def default_system_path=(path)
      @default_system_path = path
    end

[Source]

# File shell.rb, line 231
  def Shell.install_system_commands(pre = "sys_")
    CommandProcessor.install_system_commands(pre)
  end

[Source]

# File shell.rb, line 79
  def initialize
    @cwd = Dir.pwd
    @dir_stack = []
    @umask = nil

    @system_path = Shell.default_system_path
    @record_separator = Shell.default_record_separator

    @command_processor = CommandProcessor.new(self)
    @process_controller = ProcessController.new(self)

    @verbose = Shell.verbose
    @debug = Shell.debug
  end

[Source]

# File shell.rb, line 244
  def self.notify(*opts, &block)
    Thread.exclusive do
    if opts[-1].kind_of?(String)
      yorn = verbose?
    else
      yorn = opts.pop
    end
    return unless yorn

    _head = true
    print opts.collect{|mes|
      mes = mes.dup
      yield mes if iterator?
      if _head
        _head = false
        "shell: " + mes
      else
        "       " + mes
      end
    }.join("\n")+"\n"
    end
  end

[Source]

# File shell.rb, line 227
  def Shell.unalias_command(ali)
    CommandProcessor.unalias_command(ali)
  end

[Source]

# File shell.rb, line 219
  def Shell.undef_system_command(command)
    CommandProcessor.undef_system_command(command)
  end

Public Instance methods

cd(path = nil)

Alias for chdir

If called as iterator, it restores the current directory when the block ends.

[Source]

# File shell.rb, line 144
  def chdir(path = nil)
    if iterator?
      cwd_old = @cwd
      begin
        chdir(path)
        yield
      ensure
        chdir(cwd_old)
      end
    else
      path = "~" unless path
      @cwd = expand_path(path)
      notify "current dir: #{@cwd}"
      rehash
      self
    end
  end

[Source]

# File shell.rb, line 107
  def debug=(val)
    @debug = val
    @verbose = val if val
  end

[Source]

# File shell.rb, line 118
  def expand_path(path)
    File.expand_path(path, @cwd)
  end

[Source]

# File shell.rb, line 236
  def inspect
    if debug.kind_of?(Integer) && debug > 2
      super
    else
      to_s
    end
  end

process management

[Source]

# File shell.rb, line 204
  def jobs
    @process_controller.jobs
  end

[Source]

# File shell.rb, line 208
  def kill(sig, command)
    @process_controller.kill_job(sig, command)
  end
popd()

Alias for popdir

[Source]

# File shell.rb, line 189
  def popdir
    if pop = @dir_stack.pop
      chdir pop
      notify "dir stack: [#{@dir_stack.join ', '}]"
      self
    else
      Shell.Fail DirStackEmpty
    end
  end
pushd(path = nil)

Alias for pushdir

[Source]

# File shell.rb, line 163
  def pushdir(path = nil)
    if iterator?
      pushdir(path)
      begin
        yield
      ensure
        popdir
      end
    elsif path
      @dir_stack.push @cwd
      chdir path
      notify "dir stack: [#{@dir_stack.join ', '}]"
      self
    else
      if pop = @dir_stack.pop
        @dir_stack.push @cwd
        chdir pop
        notify "dir stack: [#{@dir_stack.join ', '}]"
        self
      else
        Shell.Fail DirStackEmpty
      end
    end
  end

[Source]

# File shell.rb, line 96
  def system_path=(path)
    @system_path = path
    rehash
  end

[Validate]

ruby-doc.org is hosted and maintained by James Britt and Happy Camper Studios, a Ruby application development company in Phoenix, Arizona. The site was created in 2002 as part of the Ruby Documentation Project to promote the Ruby language and to help other Ruby hackers.

Documentation content on ruby-doc.org is provided by remarkable members of the Ruby community.

For more information on the Ruby programming language, visit ruby-lang.org.

Want to help improve Ruby's API docs? See Ruby Documentation Guidelines.