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

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

-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

-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

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

-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

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

-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

-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

-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

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

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

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.

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

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

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.