Ruby-Befehlszeilenoptionen
Über die Beispiele
Einige Beispiele hier verwenden die Befehlszeilenoption -e, die den auszuführenden Ruby-Code direkt auf der Befehlszeile übergibt
$ ruby -e 'puts "Hello, World."'
Einige Beispiele hier gehen davon aus, dass die Datei desiderata.txt existiert
$ cat desiderata.txt Go placidly amid the noise and the haste, and remember what peace there may be in silence. As far as possible, without surrender, be on good terms with all persons.
Options
-0: Setzt $/ (Input Record Separator)
Die Option -0 definiert den Eingabedatensatztrenner $/ für das aufgerufene Ruby-Programm.
Das optionale Argument zur Option muss Oktalziffern sein, jede im Bereich 0..7; diese Ziffern werden mit der Ziffer 0 vorangestellt, um einen Oktalwert zu bilden.
Wenn kein Argument gegeben wird, ist der Eingabedatensatztrenner 0x00.
Wenn ein Argument gegeben wird, muss es unmittelbar auf die Option folgen (kein dazwischenliegender Leerraum oder Gleichheitszeichen '='); Argumentwerte
-
0: Der Eingabedatensatztrenner ist''; siehe Spezielle Zeilentrennwerte. -
Im Bereich
(1..0377): Der Eingabedatensatztrenner$/wird auf den Zeichenwert des Arguments gesetzt. -
Jeder andere Oktalwert: Der Eingabedatensatztrenner ist
nil.
Beispiele
$ ruby -0 -e 'p $/' "\x00" ruby -00 -e 'p $/' "" $ ruby -012 -e 'p $/' "\n" $ ruby -015 -e 'p $/' "\r" $ ruby -0377 -e 'p $/' "\xFF" $ ruby -0400 -e 'p $/' nil
Siehe auch
-
Option -a: Teilt Eingabezeilen in Felder auf.
-
Option -F: Legt den Eingabefeldtrenner fest.
-
Option -l: Legt den Ausgabedatensatztrenner fest; kürzt Zeilen.
-
Option -n: Führt das Programm in einer
gets-Schleife aus. -
Option -p:
-n, mit Ausgabe.
-a: Teilt Eingabezeilen in Felder auf
Die Option -a teilt, wenn sie mit einer der Optionen -n oder -p gegeben wird, den String $_ in ein Array von Strings bei $F auf
$ ruby -an -e 'p $F' desiderata.txt ["Go", "placidly", "amid", "the", "noise", "and", "the", "haste,"] ["and", "remember", "what", "peace", "there", "may", "be", "in", "silence."] ["As", "far", "as", "possible,", "without", "surrender,"] ["be", "on", "good", "terms", "with", "all", "persons."]
Für das Aufteilen ist der Standarddatensatztrenner $/ und der Standardfeldtrenner $;.
Siehe auch
-
Option -0: Setzt
$/(Eingabedatensatztrenner). -
Option -F: Legt den Eingabefeldtrenner fest.
-
Option -l: Legt den Ausgabedatensatztrenner fest; kürzt Zeilen.
-
Option -n: Führt das Programm in einer
gets-Schleife aus. -
Option -p:
-n, mit Ausgabe.
-c: Prüft Syntax
Die Option -c gibt an, dass das angegebene Ruby-Programm auf Syntax überprüft, aber nicht tatsächlich ausgeführt werden soll
$ ruby -e 'puts "Foo"' Foo $ ruby -c -e 'puts "Foo"' Syntax OK
-C: Legt das Arbeitsverzeichnis fest
Das Argument zur Option -C gibt ein Arbeitsverzeichnis für das aufgerufene Ruby-Programm an; es ändert nicht das Arbeitsverzeichnis für den aktuellen Prozess
$ basename `pwd` ruby $ ruby -C lib -e 'puts File.basename(Dir.pwd)' lib $ basename `pwd` ruby
Leerraum zwischen der Option und ihrem Argument kann weggelassen werden.
-d: Setzt $DEBUG auf true
Einige Code-Teile in (oder aufgerufen von) dem Ruby-Programm können Anweisungen oder Blöcke enthalten, die durch die globale Variable $DEBUG bedingt sind (z. B. if $DEBUG); diese schreiben üblicherweise nach $stdout oder $stderr.
Der Standardwert für $DEBUG ist false; die Option -d setzt ihn auf true
$ ruby -e 'p $DEBUG' false $ ruby -d -e 'p $DEBUG' true
Die Option --debug ist ein Alias für die Option -d.
-e: Führt den gegebenen Ruby-Code aus
Die Option -e erfordert ein Argument, das der auszuführende Ruby-Code ist; die Option kann mehrfach angegeben werden
$ ruby -e 'puts "Foo"' -e 'puts "Bar"' Foo Bar
Leerraum zwischen der Option und ihrem Argument kann weggelassen werden.
Der Befehl kann andere Optionen enthalten, sollte aber keine Argumente enthalten (die, falls vorhanden, ignoriert werden).
-E: Legt Standardkodierungen fest
Die Option -E erfordert ein Argument, das entweder die Standard-Externdkodierung oder sowohl die Standard-Externd- als auch die Interndkodierung für das aufgerufene Ruby-Programm angibt
# No option -E. $ ruby -e 'p [Encoding::default_external, Encoding::default_internal]' [#<Encoding:UTF-8>, nil] # Option -E with default external encoding. $ ruby -E cesu-8 -e 'p [Encoding::default_external, Encoding::default_internal]' [#<Encoding:CESU-8>, nil] # Option -E with default external and internal encodings. $ ruby -E utf-8:cesu-8 -e 'p [Encoding::default_external, Encoding::default_internal]' [#<Encoding:UTF-8>, #<Encoding:CESU-8>]
Leerraum zwischen der Option und ihrem Argument kann weggelassen werden.
Siehe auch
-
Option –external-encoding: Legt die Standard-Externdkodierung fest.
-
Option –internal-encoding: Legt die Standard-Interndkodierung fest.
Die Option --encoding ist ein Alias für die Option -E.
-F: Legt den Eingabefeldtrenner fest
Die Option -F gibt, wenn sie mit der Option -a verwendet wird, an, dass ihr Argument der Eingabefeldtrenner ist, der zum Aufteilen verwendet werden soll
$ ruby -an -Fs -e 'p $F' desiderata.txt ["Go placidly amid the noi", "e and the ha", "te,\n"] ["and remember what peace there may be in ", "ilence.\n"] ["A", " far a", " po", "", "ible, without ", "urrender,\n"] ["be on good term", " with all per", "on", ".\n"]
Das Argument kann ein regulärer Ausdruck sein
$ ruby -an -F'[.,]\s*' -e 'p $F' desiderata.txt ["Go placidly amid the noise and the haste"] ["and remember what peace there may be in silence"] ["As far as possible", "without surrender"] ["be on good terms with all persons"]
Das Argument muss unmittelbar auf die Option folgen (kein dazwischenliegender Leerraum oder Gleichheitszeichen '=').
Siehe auch
-
Option -0: Setzt
$/(Eingabedatensatztrenner). -
Option -a: Teilt Eingabezeilen in Felder auf.
-
Option -l: Legt den Ausgabedatensatztrenner fest; kürzt Zeilen.
-
Option -n: Führt das Programm in einer
gets-Schleife aus. -
Option -p:
-n, mit Ausgabe.
-h: Gibt eine kurze Hilfenachrichtigung aus
Die Option -h gibt eine kurze Hilfenachrichtigung aus, die einzeilige Optionen (z. B. -I) enthält und großteils doppelte Optionen (z. B. --version) weglässt.
Argumente und zusätzliche Optionen werden ignoriert.
Für eine längere Hilfenachrichtigung verwenden Sie die Option --help.
-i: Legt den ARGF In-Place-Modus fest
Die Option -i setzt den ARGF In-Place-Modus für das aufgerufene Ruby-Programm; siehe ARGF#inplace_mode=
$ ruby -e 'p ARGF.inplace_mode' nil $ ruby -i -e 'p ARGF.inplace_mode' "" $ ruby -i.bak -e 'p ARGF.inplace_mode' ".bak"
-I: Fügt zu $LOAD_PATH hinzu
Das Argument zur Option -I gibt ein Verzeichnis an, das zum Array in der globalen Variable $LOAD_PATH hinzugefügt werden soll; die Option kann mehrfach angegeben werden
$ pushd /tmp $ ruby -e 'p $LOAD_PATH.size' 8 $ ruby -I my_lib -I some_lib -e 'p $LOAD_PATH.size' 10 $ ruby -I my_lib -I some_lib -e 'p $LOAD_PATH.take(2)' ["/tmp/my_lib", "/tmp/some_lib"] $ popd
Leerraum zwischen der Option und ihrem Argument kann weggelassen werden.
-l: Legt den Ausgabedatensatztrenner fest; kürzt Zeilen
Die Option -l modifiziert, wenn sie mit der Option -n oder -p gegeben wird, die zeilenorientierte Verarbeitung durch
-
Setzen der globalen Ausgabedatensatztrennervariable
$\auf den aktuellen Wert des Eingabedatensatztrenners$/; dies beeinflusst zeilenorientierte Ausgaben (wie die Ausgabe vonKernel#puts). -
Aufrufen von
String#chop!für jede gelesene Zeile.
Ohne Option -l (nicht gekürzt)
$ ruby -n -e 'p $_' desiderata.txt "Go placidly amid the noise and the haste,\n" "and remember what peace there may be in silence.\n" "As far as possible, without surrender,\n" "be on good terms with all persons.\n"
Mit Option -l (gekürzt)
$ ruby -ln -e 'p $_' desiderata.txt "Go placidly amid the noise and the haste," "and remember what peace there may be in silence." "As far as possible, without surrender," "be on good terms with all persons."
Siehe auch
-
Option -0: Setzt
$/(Eingabedatensatztrenner). -
Option -a: Teilt Eingabezeilen in Felder auf.
-
Option -F: Legt den Eingabefeldtrenner fest.
-
Option -n: Führt das Programm in einer
gets-Schleife aus. -
Option -p:
-n, mit Ausgabe.
-n: Führt das Programm in einer gets-Schleife aus
Die Option -n führt Ihr Programm in einer Kernel#gets-Schleife aus
while gets # Your Ruby code. end
Beachten Sie, dass gets die nächste Zeile liest und die globale Variable $_ auf die zuletzt gelesene Zeile setzt
$ ruby -n -e 'puts $_' desiderata.txt Go placidly amid the noise and the haste, and remember what peace there may be in silence. As far as possible, without surrender, be on good terms with all persons.
Siehe auch
-
Option -0: Setzt
$/(Eingabedatensatztrenner). -
Option -a: Teilt Eingabezeilen in Felder auf.
-
Option -F: Legt den Eingabefeldtrenner fest.
-
Option -l: Legt den Ausgabedatensatztrenner fest; kürzt Zeilen.
-
Option -p:
-n, mit Ausgabe.
-p: -n, mit Ausgabe
Die Option -p ist wie Option -n, gibt aber zusätzlich jede Zeile aus
$ ruby -p -e 'puts $_.size' desiderata.txt 42 Go placidly amid the noise and the haste, 49 and remember what peace there may be in silence. 39 As far as possible, without surrender, 35 be on good terms with all persons.
Siehe auch
-
Option -0: Setzt
$/(Eingabedatensatztrenner). -
Option -a: Teilt Eingabezeilen in Felder auf.
-
Option -F: Legt den Eingabefeldtrenner fest.
-
Option -l: Legt den Ausgabedatensatztrenner fest; kürzt Zeilen.
-
Option -n: Führt das Programm in einer
gets-Schleife aus.
-r: Lädt Bibliothek
Das Argument zur Option -r gibt eine Bibliothek an, die vor der Ausführung des Ruby-Programms geladen werden soll; die Option kann mehrfach angegeben werden
$ ruby -e 'p defined?(JSON); p defined?(CSV)' nil nil $ ruby -r CSV -r JSON -e 'p defined?(JSON); p defined?(CSV)' "constant" "constant"
Leerraum zwischen der Option und ihrem Argument kann weggelassen werden.
-s: Definiert globale Variable
Die Option -s gibt an, dass eine „benutzerdefinierte Option“ eine globale Variable im aufgerufenen Ruby-Programm definieren soll
-
Die benutzerdefinierte Option muss *nach* dem Programmnamen erscheinen.
-
Die benutzerdefinierte Option muss mit einem einfachen Bindestrich beginnen (z. B.
-foo) und nicht mit zwei Bindestrichen (z. B.--foo). -
Der Name der globalen Variable basiert auf dem Optionsnamen: globale Variable
$foofür die benutzerdefinierte Option-foo. -
Der Wert der globalen Variable ist das String-Argument der Option, falls vorhanden, sonst
true.
Mehrere benutzerdefinierte Optionen können angegeben werden
$ cat t.rb p [$foo, $bar] $ ruby t.rb [nil, nil] $ ruby -s t.rb -foo=baz ["baz", nil] $ ruby -s t.rb -foo [true, nil] $ ruby -s t.rb -foo=baz -bar=bat ["baz", "bat"]
Die Option kann nicht mit der Option -e verwendet werden
-S: Sucht Verzeichnisse in ENV['PATH']
Die Option -S gibt an, dass der Ruby-Interpreter die Verzeichnisse durchsuchen soll (falls nötig), deren Pfade in der PATH-Umgebungsvariablen des Programms stehen; das Programm wird im aktuellen Arbeitsverzeichnis der Shell ausgeführt (nicht notwendigerweise in dem Verzeichnis, in dem das Programm gefunden wird).
Dieses Beispiel fügt den Pfad 'tmp/' zur Umgebungsvariablen PATH hinzu
$ export PATH=/tmp:$PATH $ echo "puts File.basename(Dir.pwd)" > /tmp/t.rb $ ruby -S t.rb ruby
-v: Gibt Version aus; setzt $VERBOSE
Die Optionen -v geben die Ruby-Version aus und setzen die globale Variable $VERBOSE
$ ruby -e 'p $VERBOSE' false $ ruby -v -e 'p $VERBOSE' ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x64-mingw-ucrt] true
-w: Synonym für -W1
Die Option -w (Kleinbuchstabe) ist äquivalent zur Option -W1 (Großbuchstabe).
-W: Legt die Warnrichtlinie fest
Jeder Ruby-Code kann eine Warnmeldung erstellen, indem er die Methode Kernel#warn aufruft; Methoden im Ruby-Kern und in den Standardbibliotheken können ebenfalls Warnmeldungen erstellen. Eine solche Meldung kann auf $stderr ausgegeben werden (oder nicht, abhängig von bestimmten Einstellungen).
Die Option -W hilft zu bestimmen, ob eine bestimmte Warnmeldung ausgegeben wird, indem der Anfangswert der globalen Variable $-W gesetzt wird
-
-W0: Setzt$-Wauf0(still; keine Warnungen). -
-W1: Setzt$-Wauf1(moderate Ausführlichkeit). -
-W2: Setzt$-Wauf2(hohe Ausführlichkeit). -
-W: Identisch mit-W2(hohe Ausführlichkeit). -
Option nicht gegeben: Identisch mit
-W1(moderate Ausführlichkeit).
Der Wert von $-W bestimmt wiederum, welche Warnmeldungen (falls vorhanden) auf $stdout ausgegeben werden sollen (siehe Kernel#warn)
$ ruby -W1 -e 'p $foo' nil $ ruby -W2 -e 'p $foo' -e:1: warning: global variable '$foo' not initialized nil
Ruby-Code kann auch Warnungen für bestimmte Kategorien definieren; dies sind die Standardeinstellungen für die definierten Kategorien
Warning[:experimental] # => true Warning[:deprecated] # => false Warning[:performance] # => false
Sie können auch gesetzt werden
Warning[:experimental] = false Warning[:deprecated] = true Warning[:performance] = true
Sie können eine Kategorie unterdrücken, indem Sie no- vor den Kategorienamen setzen
$ ruby -W:no-experimental -e 'p IO::Buffer.new' #<IO::Buffer>
-x: Führt Ruby-Code aus, der in Text enthalten ist
Die Option -x führt ein Ruby-Programm aus, dessen Code in anderem, Nicht-Code-Text eingebettet ist
Der Ruby-Code
-
Beginnt nach der ersten Zeile, die mit
'#!beginnt und den String'ruby'enthält. -
Endet vor einem der folgenden
-
Dateiende.
-
Eine Zeile bestehend aus
'__END__', -
Zeichen
Ctrl-DoderCtrl-Z.
-
Beispiel
$ cat t.txt Leading garbage. #!ruby puts File.basename(Dir.pwd) __END__ Trailing garbage. $ ruby -x t.txt ruby
Das optionale Argument gibt das Verzeichnis an, in dem die Textdatei gefunden werden soll; der Ruby-Code wird in diesem Verzeichnis ausgeführt
$ cp t.txt /tmp/ $ ruby -x/tmp t.txt tmp $
Wenn ein Argument gegeben wird, muss es unmittelbar auf die Option folgen (kein dazwischenliegender Leerraum oder Gleichheitszeichen '=').
--backtrace-limit: Setzt die Rückverfolgungsgrenze
Die Option --backtrace-limit setzt eine Grenze für die Anzahl der Einträge, die in einer Rückverfolgung angezeigt werden sollen.
Siehe Thread::Backtrace.limit.
--copyright: Gibt den Ruby-Copyright aus
Die Option --copyright gibt eine Copyright-Nachricht aus
$ ruby --copyright ruby - Copyright (C) 1993-2024 Yukihiro Matsumoto
--debug: Alias für -d
Die Option --debug ist ein Alias für Option -d.
--disable: Deaktiviert Funktionen
Die Option --disable gibt zu deaktivierende Funktionen an; das Argument ist eine durch Kommas getrennte Liste der zu deaktivierenden Funktionen
ruby --disable=gems,rubyopt t.rb
Die unterstützten Funktionen
-
gems: Rubygems (Standard: aktiviert). -
did_you_mean:
did_you_mean(Standard: aktiviert). -
rubyopt:RUBYOPT-Umgebungsvariable (Standard: aktiviert). -
frozen-string-literal: Friert alle String-Literale ein (Standard: deaktiviert). -
jit: JIT-Compiler (Standard: deaktiviert).
Siehe auch Option –enable.
--dump: Gibt Elemente aus
Die Option --dump gibt zu dumende Elemente an; das Argument ist eine durch Kommas getrennte Liste der Elemente.
Einige der Argumentwerte führen dazu, dass der Befehl sich so verhält, als wäre eine andere Option gegeben worden
-
--dump=copyright: Identisch mit Option –copyright. -
--dump=help: Identisch mit Option –help. -
--dump=syntax: Identisch mit Option -c. -
--dump=usage: Identisch mit Option -h. -
--dump=version: Identisch mit Option –version.
Für andere Argumentwerte und Beispiele siehe Option –dump.
--enable: Aktiviert Funktionen
Die Option --enable gibt zu aktivierende Funktionen an; das Argument ist eine durch Kommas getrennte Liste der zu aktivierenden Funktionen.
ruby --enable=gems,rubyopt t.rb
Für die Funktionen siehe Option –disable.
--encoding: Alias für -E.
Die Option --encoding ist ein Alias für Option -E.
--external-encoding: Legt die Standard-Externdkodierung fest
Die Option --external-encoding setzt die Standard-Externdkodierung für das aufgerufene Ruby-Programm; für Kodierungswerte siehe Kodierung: Namen und Aliase.
$ ruby -e 'puts Encoding::default_external' UTF-8 $ ruby --external-encoding=cesu-8 -e 'puts Encoding::default_external' CESU-8
--help: Gibt Hilfenachrichtigung aus
Die Option --help gibt eine lange Hilfenachrichtigung aus.
Argumente und zusätzliche Optionen werden ignoriert.
Für eine kürzere Hilfenachrichtigung verwenden Sie die Option -h.
--internal-encoding: Legt die Standard-Interndkodierung fest
Die Option --internal-encoding setzt die Standard-Interndkodierung für das aufgerufene Ruby-Programm; für Kodierungswerte siehe Kodierung: Namen und Aliase.
$ ruby -e 'puts Encoding::default_internal.nil?' true $ ruby --internal-encoding=cesu-8 -e 'puts Encoding::default_internal' CESU-8
--jit
Die Option --jit ist ein Alias für die Option --yjit, die YJIT aktiviert; siehe zusätzliche YJIT-Optionen in der YJIT-Dokumentation.
--verbose: Setzt $VERBOSE
Die Option --verbose setzt die globale Variable $VERBOSE auf true und deaktiviert die Eingabe von $stdin.
--version: Gibt Ruby-Version aus
Die Option --version gibt die Version des Ruby-Interpreters aus und beendet dann.