Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Object
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)
–
# File shell.rb, line 244 def Shell.alias_command(ali, command, *opts, &block) CommandProcessor.alias_command(ali, command, *opts, &block) end
# File shell.rb, line 49 def debug=(val) @debug = val @verbose = val if val end
command definitions
# File shell.rb, line 236 def Shell.def_system_command(command, path = command) CommandProcessor.def_system_command(command, path) end
# File shell.rb, line 70 def default_record_separator if @default_record_separator @default_record_separator else $/ end end
# File shell.rb, line 78 def default_record_separator=(rs) @default_record_separator = rs end
# File shell.rb, line 58 def default_system_path if @default_system_path @default_system_path else ENV["PATH"].split(":") end end
# File shell.rb, line 66 def default_system_path=(path) @default_system_path = path end
# File shell.rb, line 252 def Shell.install_system_commands(pre = "sys_") CommandProcessor.install_system_commands(pre) end
# 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
# 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
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
# File shell.rb, line 115 def debug=(val) @debug = val @verbose = val if val end
# File shell.rb, line 126 def expand_path(path) File.expand_path(path, @cwd) end
# File shell.rb, line 257 def inspect if debug.kind_of?(Integer) && debug > 2 super else to_s end end
process management
# File shell.rb, line 225 def jobs @process_controller.jobs end
# File shell.rb, line 229 def kill(sig, command) @process_controller.kill_job(sig, command) end
# 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
# 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
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.