Was bedeutet "-" (Doppelstrich)? (auch bekannt als "Bare Double Dash")


Antworten:


583

Genauer gesagt wird ein doppelter Bindestrich ( --) in integrierten Bash-Befehlen und vielen anderen Befehlen verwendet, um das Ende der Befehlsoptionen zu kennzeichnen. Danach werden nur Positionsparameter akzeptiert.

Beispielanwendung: Nehmen wir an, Sie möchten eine Datei für die Zeichenfolge abrufen -v- normalerweise -vwird die Option in Betracht gezogen, die übereinstimmende Bedeutung umzukehren (nur nicht übereinstimmende Zeilen anzeigen). Mit dieser Option --können Sie jedoch eine Zeichenfolge abrufen -v:

grep -- -v file

3
Vor allem im seteingebauten Bash , wo es unbedingt nötig ist.
l0b0

10
--funktioniert, um Optionen von regulären Ausdrücken in zu trennen grep, aber die kanonische Art ist, -e/ zu verwenden --regexp.
l0b0

5
@ l0b0: Das zu durchsuchende Muster ist normalerweise einer der Positionsparameter, daher kann es nach dem passen --, obwohl Sie richtig bemerken, dass mein Beispiel oben auch als geschrieben werden könnte grep -e -v file(obwohl das sehr verwirrend ist).
Guss

2
Nicht alle basheingebauten Befehle akzeptieren --das Ende der Optionsmarkierung. [und echonicht zum Beispiel ( einer der Gründe echokann nicht zuverlässig verwendet werden ).
Stéphane Chazelas

44

Dies markiert das Ende der Parameterliste (Option).


39

In können man bashwir in Shell Builtin Commands Abschnitt lesen :

Wenn nicht anders angegeben, die jeweils eingebauter Befehl in diesem Abschnitt dokumentierte Optionen wie die Annahme vorangestellte -akzeptiert -- das Ende der Optionen zu bedeuten .

Die :, true, falseund testbuiltins akzeptieren keine Optionen und behandeln nicht --speziell. Die exit, logout, break, continue, let, und shiftbuiltins annehmen und verarbeiten Argumente beginnend mit , -ohne --. Andere integrierte Funktionen, die Argumente akzeptieren, aber nicht als akzeptierende Optionen angegeben sind, interpretieren Argumente, die mit -ungültigen Optionen beginnen, und müssen --diese Interpretation verhindern.

Beachten Sie, dass echodies nicht --das Ende von Optionen bedeutet.


2
+1 für die Referenzierung man bash(Notiz für das nächste Mal:).
user3773048

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.