Maintenance of Ruby 2.0.0 ended on February 24, 2016. Read more
BasicObject
Change the mode of each FILE to OCTAL-MODE.
ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE -v verbose
# File un.rb, line 206 def chmod setup do |argv, options| mode = argv.shift.oct FileUtils.chmod mode, argv, options end end
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY
ruby -run -e cp -- [OPTION] SOURCE DEST -p preserve file attributes if possible -r copy recursively -v verbose
# File un.rb, line 77 def cp setup("pr") do |argv, options| cmd = "cp" cmd += "_r" if options.delete :r options[:preserve] = true if options.delete :p dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.send cmd, argv, dest, options end end
Display help message.
ruby -run -e help [COMMAND]
# File un.rb, line 336 def help setup do |argv,| all = argv.empty? open(__FILE__) do |me| while me.gets("##\n") if help = me.gets("\n\n") if all or argv.delete help[/-e \w+/].sub(/-e /, "") print help.gsub(/^# ?/, "") end end end end end end
Run WEBrick HTTP server.
ruby -run -e httpd -- [OPTION] DocumentRoot --bind-address=ADDR address to bind --port=NUM listening port number --max-clients=MAX max number of simultaneous clients --temp-dir=DIR temporary directory --do-not-reverse-lookup disable reverse lookup --request-timeout=SECOND request timeout in seconds --http-version=VERSION HTTP version -v verbose
# File un.rb, line 305 def httpd setup("", "BindAddress=ADDR", "Port=PORT", "MaxClients=NUM", "TempDir=DIR", "DoNotReverseLookup", "RequestTimeout=SECOND", "HTTPVersion=VERSION") do |argv, options| require 'webrick' opt = options[:RequestTimeout] and options[:RequestTimeout] = opt.to_i [:Port, :MaxClients].each do |name| opt = options[name] and (options[name] = Integer(opt)) rescue nil end unless argv.size == 1 raise ArgumentError, "DocumentRoot is mandatory" end options[:DocumentRoot] = argv.shift s = WEBrick::HTTPServer.new(options) shut = proc {s.shutdown} siglist = %w"TERM QUIT" siglist.concat(%w"HUP INT") if STDIN.tty? siglist &= Signal.list.keys siglist.each do |sig| Signal.trap(sig, shut) end s.start end end
Copy SOURCE to DEST.
ruby -run -e install -- [OPTION] SOURCE DEST -p apply access/modification times of SOURCE files to corresponding destination files -m set permission mode (as in chmod), instead of 0755 -v verbose
# File un.rb, line 188 def install setup("pm:") do |argv, options| options[:mode] = (mode = options.delete :m) ? mode.oct : 0755 options[:preserve] = true if options.delete :p dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.install argv, dest, options end end
Create a link to the specified TARGET with LINK_NAME.
ruby -run -e ln -- [OPTION] TARGET LINK_NAME -s make symbolic links instead of hard links -f remove existing destination files -v verbose
# File un.rb, line 98 def ln setup("sf") do |argv, options| cmd = "ln" cmd += "_s" if options.delete :s options[:force] = true if options.delete :f dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.send cmd, argv, dest, options end end
Create the DIR, if they do not already exist.
ruby -run -e mkdir -- [OPTION] DIR -p no error if existing, make parent directories as needed -v verbose
# File un.rb, line 153 def mkdir setup("p") do |argv, options| cmd = "mkdir" cmd += "_p" if options.delete :p FileUtils.send cmd, argv, options end end
Create makefile using mkmf.
ruby -run -e mkmf -- [OPTION] EXTNAME [OPTION] -d ARGS run dir_config -h ARGS run have_header -l ARGS run have_library -f ARGS run have_func -v ARGS run have_var -t ARGS run have_type -m ARGS run have_macro -c ARGS run have_const --vendor install to vendor_ruby
# File un.rb, line 274 def mkmf setup("d:h:l:f:v:t:m:c:", "vendor") do |argv, options| require 'mkmf' opt = options[:d] and opt.split(/:/).each {|n| dir_config(*n.split(/,/))} opt = options[:h] and opt.split(/:/).each {|n| have_header(*n.split(/,/))} opt = options[:l] and opt.split(/:/).each {|n| have_library(*n.split(/,/))} opt = options[:f] and opt.split(/:/).each {|n| have_func(*n.split(/,/))} opt = options[:v] and opt.split(/:/).each {|n| have_var(*n.split(/,/))} opt = options[:t] and opt.split(/:/).each {|n| have_type(*n.split(/,/))} opt = options[:m] and opt.split(/:/).each {|n| have_macro(*n.split(/,/))} opt = options[:c] and opt.split(/:/).each {|n| have_const(*n.split(/,/))} $configure_args["--vendor"] = true if options[:vendor] create_makefile(*argv) end end
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
ruby -run -e mv -- [OPTION] SOURCE DEST -v verbose
# File un.rb, line 117 def mv setup do |argv, options| dest = argv.pop argv = argv[0] if argv.size == 1 FileUtils.mv argv, dest, options end end
Remove the FILE
ruby -run -e rm -- [OPTION] FILE -f ignore nonexistent files -r remove the contents of directories recursively -v verbose
# File un.rb, line 135 def rm setup("fr") do |argv, options| cmd = "rm" cmd += "_r" if options.delete :r options[:force] = true if options.delete :f FileUtils.send cmd, argv, options end end
Remove the DIR.
ruby -run -e rmdir -- [OPTION] DIR -p remove DIRECTORY and its ancestors. -v verbose
# File un.rb, line 170 def rmdir setup("p") do |argv, options| options[:parents] = true if options.delete :p FileUtils.rmdir argv, options end end
# File un.rb, line 35 def setup(options = "", *long_options) opt_hash = {} argv = [] OptionParser.new do |o| options.scan(/.:?/) do |s| opt_name = s.delete(":").intern o.on("-" + s.tr(":", " ")) do |val| opt_hash[opt_name] = val end end long_options.each do |s| opt_name, arg_name = s.split(/(?=[\s=])/, 2) opt_name.sub!(/\A--/, '') s = "--#{opt_name.gsub(/([A-Z]+|[a-z])([A-Z])/, '\1-\2').downcase}#{arg_name}" puts "#{opt_name}=>#{s}" if $DEBUG opt_name = opt_name.intern o.on(s) do |val| opt_hash[opt_name] = val end end o.on("-v") do opt_hash[:verbose] = true end o.order!(ARGV) do |x| if /[*?\[{]/ =~ x argv.concat(Dir[x]) else argv << x end end end yield argv, opt_hash end
Update the access and modification times of each FILE to the current time.
ruby -run -e touch -- [OPTION] FILE -v verbose
# File un.rb, line 221 def touch setup do |argv, options| FileUtils.touch argv, options end end
Wait until the file becomes writable.
ruby -run -e wait_writable -- [OPTION] FILE -n RETRY count to retry -w SEC each wait time in seconds -v verbose
# File un.rb, line 237 def wait_writable setup("n:w:v") do |argv, options| verbose = options[:verbose] n = options[:n] and n = Integer(n) wait = (wait = options[:w]) ? Float(wait) : 0.2 argv.each do |file| begin open(file, "r+b") rescue Errno::ENOENT break rescue Errno::EACCES => e raise if n and (n -= 1) <= 0 puts e STDOUT.flush sleep wait retry end end end end