OS Manuals

/usr/bin/ruby

the Ruby programming language

From ruby-3.3 3.3.13-r2 (os), captured 2026-11-05 by running ruby --help (exit 0). permalink

Usage: /usr/bin/ruby [switches] [--] [programfile] [arguments]
  -0[octal]       specify record separator (\0, if no argument)
                  (-00 for paragraph mode, -0777 for slurp mode)
  -a              autosplit mode with -n or -p (splits $_ into $F)
  -c              check syntax only
  -Cdirectory     cd to directory before executing your script
  -d, --debug     set debugging flags (set $DEBUG to true)
  -e 'command'    one line of script. Several -e's allowed. Omit [programfile]
  -Eex[:in], --encoding=ex[:in]
                  specify the default external and internal character encodings
  -Fpattern       split() pattern for autosplit (-a)
  -i[extension]   edit ARGV files in place (make backup if extension supplied)
  -Idirectory     specify $LOAD_PATH directory (may be used more than once)
  -l              enable line ending processing
  -n              assume 'while gets(); ... end' loop around your script
  -p              assume loop like -n but print line also like sed
  -rlibrary       require the library before executing your script
  -s              enable some switch parsing for switches after script name
  -S              look for the script using PATH environment variable
  -v              print the version number, then turn on verbose mode
  -w              turn warnings on for your script
  -W[level=2|:category]
                  set warning level; 0=silence, 1=medium, 2=verbose
  -x[directory]   strip off text before #!ruby line and perhaps cd to directory
  --jit           enable JIT for the platform, same as --yjit
  --yjit          enable in-process JIT compiler
  --rjit          enable pure-Ruby JIT compiler (experimental)
  --copyright     print the copyright
  --dump={insns|parsetree|...}[,...]
                  dump debug information. see below for available dump list
  --enable={jit|rubyopt|...}[,...]
  --disable={jit|rubyopt|...}[,...]
                  enable or disable features. see below for available features
  --external-encoding=encoding
  --internal-encoding=encoding
                  specify the default external or internal character encoding
  --parser={parse.y|prism}
  --parser=prism
                  the parser used to parse Ruby code (experimental)
  --backtrace-limit=num
                  limit the maximum length of backtrace
  --verbose       turn on verbose mode and disable script from stdin
  --version       print the version number, then exit
  --crash-report=TEMPLATE
                  template of crash report files
  -y, --yydebug   print log of parser. Backward compatibility is not guaranteed
  --help          show this message, -h for short message
Dump List:
  insns           instruction sequences
  insns_without_opt
                  instruction sequences compiled with no optimization
  yydebug(+error-tolerant)
                  yydebug of yacc parser generator
  parsetree(+error-tolerant)
                  AST
  parsetree_with_comment(+error-tolerant)
                  AST with comments
  prism_parsetree Prism AST with comments
Features:
  gems            rubygems (only for debugging, default: enabled)
  error_highlight error_highlight (default: enabled)
  did_you_mean    did_you_mean (default: enabled)
  syntax_suggest  syntax_suggest (default: enabled)
  rubyopt         RUBYOPT environment variable (default: enabled)
  frozen-string-literal
                  freeze all string literals (default: disabled)
  yjit            in-process JIT compiler (default: disabled)
  rjit            pure-Ruby JIT compiler (experimental, default: disabled)
Warning categories:
  deprecated      deprecated features
  experimental    experimental features
  performance     performance issues
YJIT options:
  --yjit-exec-mem-size=num
                  Size of executable memory block in MiB (default: 48)
  --yjit-call-threshold=num
                  Number of calls to trigger JIT
  --yjit-cold-threshold=num
                  Global calls after which ISEQs not compiled (default: 200K)
  --yjit-stats    Enable collecting YJIT statistics
  --yjit-disable  Disable YJIT for lazily enabling it with RubyVM::YJIT.enable
  --yjit-code-gc  Run code GC when the code size reaches the limit
  --yjit-perf     Enable frame pointers and perf profiling
  --yjit-trace-exits
                  Record Ruby source location when exiting from generated code
  --yjit-trace-exits-sample-rate=num
                  Trace exit locations only every Nth occurrence
RJIT options (experimental):
  --rjit-exec-mem-size=num
                  Size of executable memory block in MiB (default: 64)
  --rjit-call-threshold=num
                  Number of calls to trigger JIT (default: 10)
  --rjit-stats    Enable collecting RJIT statistics
  --rjit-disable  Disable RJIT for lazily enabling it with RubyVM::RJIT.enable
  --rjit-trace    Allow TracePoint during JIT compilation
  --rjit-trace-exits
                  Trace side exit locations
Options (67)
OptionDescriptionSource
-0 octalspecify record separator (\0, if no argument) (-00 for paragraph mode, -0777 for slurp mode)help + man
-aTurns on auto-split mode when used with -n or -p.help + man
-cCauses Ruby to check the syntax of the script and exit without executing.help + man
-Cdirectorycd to directory before executing your scripthelp
-d, --debugset debugging flags (set $DEBUG to true)help + man + man
-e 'command'Specifies script from command-line while telling Ruby not to search the rest of the arguments for a script file name.help + man
-Eex, --encoding :inspecify the default external and internal character encodingshelp
-Fpatternsplit() pattern for autosplit (-a)help
-i extensionedit ARGV files in place (make backup if extension supplied)help + man
-Idirectoryspecify $LOAD_PATH directory (may be used more than once)help
-l(The lowercase letter ell''.) Enables automatic line-ending processing, which means to firstly set "$" to the value of "$/", and secondly chops every line read using chomp!.help + man
-nCauses Ruby to assume the following loop around your script, which makes it iterate over file name arguments somewhat like sed -n or awk.help + man
-pActs mostly same as -n switch, but print the value of variable "$_" at the each end of the loop.help + man
-rlibraryrequire the library before executing your scripthelp
-sEnables some switch parsing for switches after script name but before any file name arguments (or before a --).help + man
-SMakes Ruby use the PATH environment variable to search for script, unless its name begins with a slash.help + man
-vprint the version number, then turn on verbose modehelp + man
-wEnables verbose mode without printing version message at the beginning.help + man
-W level=2|:categoryset warning level;help
-x directorystrip off text before #!ruby line and perhaps cd to directoryhelp
--jitenable JIT for the platform, same as --yjithelp
--yjitenable in-process JIT compilerhelp
--rjitenable pure-Ruby JIT compiler (experimental)help
--copyrightPrints the copyright notice, and quits immediately without running any script.help + man
--dump insns|parsetree|...dump debug information.help + man
--enable jit|rubyopt|...help
--disable jit|rubyopt|...enable or disable features.help
--external-encoding encodinghelp + man
--internal-encoding encodingspecify the default external or internal character encodinghelp + man
--parser parse.y|prismhelp
--backtrace-limit numLimits the maximum length of backtraces to num lines (default -1, meaning no limit).help + man
--verboseEnables verbose mode without printing version message at the beginning.help + man
--versionPrints the version of the Ruby interpreter, and quits immediately without running any script.help + man
--crash-report TEMPLATESets the template of path name to save crash report.help + man
-y, --yydebugThis option is not guaranteed to be compatible.help + man + man
--helpshow this message, -h for short messagehelp + man
--yjit-exec-mem-size numSize of executable memory block in MiB (default: 48)help
--yjit-call-threshold numNumber of calls to trigger JIThelp
--yjit-cold-threshold numGlobal calls after which ISEQs not compiled (default: 200K)help
--yjit-statsEnable collecting YJIT statisticshelp
--yjit-disableDisable YJIT for lazily enabling it with RubyVM::YJIT.enablehelp
--yjit-code-gcRun code GC when the code size reaches the limithelp
--yjit-perfEnable frame pointers and perf profilinghelp
--yjit-trace-exitsRecord Ruby source location when exiting from generated codehelp
--yjit-trace-exits-sample-rate numTrace exit locations only every Nth occurrencehelp
--rjit-exec-mem-size numSize of executable memory block in MiB (default: 64)help
--rjit-call-threshold numNumber of calls to trigger JIT (default: 10)help
--rjit-statsEnable collecting RJIT statisticshelp
--rjit-disableDisable RJIT for lazily enabling it with RubyVM::RJIT.enablehelp
--rjit-traceAllow TracePoint during JIT compilationhelp
--rjit-trace-exitsTrace side exit locationshelp
-C directory (in the manual page but not in --help)man
-X directoryCauses Ruby to switch to the directory. (in the manual page but not in --help)man
-F patternSpecifies input field separator ("$;"). (in the manual page but not in --help)man
-I directoryUsed to tell Ruby where to load the library scripts. (in the manual page but not in --help)man
-K kcodeSpecifies KANJI (Japanese) encoding. (in the manual page but not in --help)man
-USets the default value for internal encodings ("Encoding.default_internal") to UTF-8. (in the manual page but not in --help)man
-h (in the manual page but not in --help)man
-r libraryCauses Ruby to load the library using require. (in the manual page but not in --help)man
--disable-FEATURE (in the manual page but not in --help)man
--enable-FEATUREDisables (or enables) the specified FEATURE. (in the manual page but not in --help)man
--disable-gems (in the manual page but not in --help)man
--enable-gemsDisables (or enables) RubyGems libraries. (in the manual page but not in --help)man
--disable-rubyopt (in the manual page but not in --help)man
--enable-rubyoptIgnores (or considers) the RUBYOPT environment variable. (in the manual page but not in --help)man
--disable-all (in the manual page but not in --help)man
--enable-allDisables (or enables) all features. (in the manual page but not in --help)man

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.