Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • shell.rb
  • shell/builtin-command.rb
  • shell/command-processor.rb
  • shell/error.rb
  • shell/filter.rb
  • shell/process-controller.rb
  • shell/system-command.rb
  • shell/version.rb

Shell

shell/filter.rb -
    $Release Version: 0.7 $
    $Revision: 31641 $
    by Keiju ISHITSUKA(keiju@ruby-lang.org)

version.rb - shell version definition file
    $Release Version: 0.7$
    $Revision: 31641 $
    by Keiju ISHITSUKA(keiju@ruby-lang.org)

Attributes

cascade[RW]
debug[RW]
debug?[RW]
verbose[RW]
verbose?[RW]
command_processor[R]
cwd[R]

Dir related methods

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

debug[RW]
debug?[RW]
dir[R]

Dir related methods

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

dir_stack[R]
dirs[R]
getwd[R]

Dir related methods

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

process_controller[R]
pwd[R]

Dir related methods

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

record_separator[RW]
system_path[R]
umask[RW]
verbose[RW]
verbose?[RW]

Public Class Methods

alias_command(ali, command, *opts, &block) click to toggle source
 
               # File shell.rb, line 244
def Shell.alias_command(ali, command, *opts, &block)
  CommandProcessor.alias_command(ali, command, *opts, &block)
end
            
cd(path) click to toggle source
 
               # File shell.rb, line 54
def cd(path)
  new(path)
end
            
debug=(val) click to toggle source
 
               # File shell.rb, line 49
def debug=(val)
  @debug = val
  @verbose = val if val
end
            
def_system_command(command, path = command) click to toggle source

command definitions

 
               # File shell.rb, line 236
def Shell.def_system_command(command, path = command)
  CommandProcessor.def_system_command(command, path)
end
            
default_record_separator() click to toggle source
 
               # File shell.rb, line 70
def default_record_separator
  if @default_record_separator
    @default_record_separator
  else
    $/
  end
end
            
default_record_separator=(rs) click to toggle source
 
               # File shell.rb, line 78
def default_record_separator=(rs)
  @default_record_separator = rs
end
            
default_system_path() click to toggle source
 
               # File shell.rb, line 58
def default_system_path
  if @default_system_path
    @default_system_path
  else
    ENV["PATH"].split(":")
  end
end
            
default_system_path=(path) click to toggle source
 
               # File shell.rb, line 66
def default_system_path=(path)
  @default_system_path = path
end
            
install_system_commands(pre = "sys_") click to toggle source
 
               # File shell.rb, line 252
def Shell.install_system_commands(pre = "sys_")
  CommandProcessor.install_system_commands(pre)
end
            
new(pwd = Dir.pwd, umask = nil) click to toggle source
 
               # File shell.rb, line 90
def initialize(pwd = Dir.pwd, umask = nil)
  @cwd = File.expand_path(pwd)
  @dir_stack = []
  @umask = umask

  @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
            
notify(*opts, &block) click to toggle source
 
               # File shell.rb, line 265
  def self.notify(*opts, &block)
    Shell::debug_output_synchronize do
      if opts[-1].kind_of?(String)
        yorn = verbose?
      else
        yorn = opts.pop
      end
      return unless yorn

      if @debug_display_thread_id
        if @debug_display_process_id
          prefix = "shell(##{Process.pid}:#{Thread.current.to_s.sub("Thread", "Th")}): "
        else
          prefix = "shell(#{Thread.current.to_s.sub("Thread", "Th")}): "
        end
      else
        prefix = "shell: "
      end
      _head = true
      STDERR.print opts.collect{|mes|
        mes = mes.dup
        yield mes if iterator?
        if _head
          _head = false
#         "shell" " + mes
          prefix + mes
        else
          " "* prefix.size + mes
        end
      }.join("\n")+"\n"
    end
  end
            
unalias_command(ali) click to toggle source
 
               # File shell.rb, line 248
def Shell.unalias_command(ali)
  CommandProcessor.unalias_command(ali)
end
            
undef_system_command(command) click to toggle source
 
               # File shell.rb, line 240
def Shell.undef_system_command(command)
  CommandProcessor.undef_system_command(command)
end
            

Public Instance Methods

cd(path = nil, verbose = @verbose) click to toggle source
Alias for: chdir
chdir(path = nil, verbose = @verbose) click to toggle source

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

 
               # File shell.rb, line 152
def chdir(path = nil, verbose = @verbose)
  check_point

  if iterator?
    notify("chdir(with block) #{path}") if verbose
    cwd_old = @cwd
    begin
      chdir(path, nil)
      yield
    ensure
      chdir(cwd_old, nil)
    end
  else
    notify("chdir #{path}") if verbose
    path = "~" unless path
    @cwd = expand_path(path)
    notify "current dir: #{@cwd}"
    rehash
    Void.new(self)
  end
end
            
Also aliased as: cd
debug=(val) click to toggle source
 
               # File shell.rb, line 115
def debug=(val)
  @debug = val
  @verbose = val if val
end
            
expand_path(path) click to toggle source
 
               # File shell.rb, line 126
def expand_path(path)
  File.expand_path(path, @cwd)
end
            
inspect() click to toggle source
 
               # File shell.rb, line 257
def inspect
  if debug.kind_of?(Integer) && debug > 2
    super
  else
    to_s
  end
end
            
jobs() click to toggle source

process management

 
               # File shell.rb, line 225
def jobs
  @process_controller.jobs
end
            
kill(sig, command) click to toggle source
 
               # File shell.rb, line 229
def kill(sig, command)
  @process_controller.kill_job(sig, command)
end
            
popd() click to toggle source
Alias for: popdir
popdir() click to toggle source
 
               # File shell.rb, line 207
def popdir
  check_point

  notify("popdir")
  if pop = @dir_stack.pop
    chdir pop
    notify "dir stack: [#{@dir_stack.join ', '}]"
    self
  else
    Shell.Fail DirStackEmpty
  end
  Void.new(self)
end
            
Also aliased as: popd
pushd(path = nil, verbose = @verbose) click to toggle source
Alias for: pushdir
pushdir(path = nil, verbose = @verbose) click to toggle source
 
               # File shell.rb, line 175
def pushdir(path = nil, verbose = @verbose)
  check_point

  if iterator?
    notify("pushdir(with block) #{path}") if verbose
    pushdir(path, nil)
    begin
      yield
    ensure
      popdir
    end
  elsif path
    notify("pushdir #{path}") if verbose
    @dir_stack.push @cwd
    chdir(path, nil)
    notify "dir stack: [#{@dir_stack.join ', '}]"
    self
  else
    notify("pushdir") if verbose
    if pop = @dir_stack.pop
      @dir_stack.push @cwd
      chdir pop
      notify "dir stack: [#{@dir_stack.join ', '}]"
      self
    else
      Shell.Fail DirStackEmpty
    end
  end
  Void.new(self)
end
            
Also aliased as: pushd
system_path=(path) click to toggle source
 
               # File shell.rb, line 107
def system_path=(path)
  @system_path = path
  rehash
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.