Co oznacza „-” (podwójny myślnik)? (znany również jako „bare double dash”)


Odpowiedzi:


583

Dokładniej, podwójna kreska ( --) jest używana we wbudowanych komendach bash i wielu innych komendach, oznaczających koniec opcji komend, po których akceptowane są tylko parametry pozycyjne.

Przykład użycia: powiedzmy, że chcesz grepować plik dla łańcucha -v- zwykle -vbędzie brana pod uwagę opcja odwrócenia pasującego znaczenia (pokazuj tylko linie, które nie pasują), ale przy pomocy --grep dla łańcucha -vtakiego:

grep -- -v file

3
W szczególności we setwbudowanym Bash , gdzie jest to absolutnie konieczne.
l0b0

10
--Działa w celu oddzielenia opcji od wyrażeń regularnych grep, ale kanonicznym sposobem jest użycie -e/ --regexp.
l0b0 18.10.12

5
@ l0b0: wzorzec do przeszukania jest zwykle jednym z parametrów pozycyjnych, więc może pasować po --, chociaż masz rację zauważając, że mój powyższy przykład można również zapisać jako grep -e -v file(chociaż jest to bardzo mylące).
Guss

2
Nie wszystkie bashwbudowane polecenia akceptują --jako znacznik końca opcji. [i echonie na przykład ( jeden z powodów echonie może być wykorzystany niezawodnie ).
Stéphane Chazelas


39

W man bashmożemy przeczytać w sekcji poleceń poleceń wbudowanych powłoki :

O ile nie zaznaczono inaczej, każde wbudowane polecenie udokumentowane w tej sekcji jako akceptowanie opcji poprzedzone przez -akceptuje -- oznaczanie końca opcji .

Te :, true, falsei testbuiltins nie akceptują opcje i nie traktuje --specjalnie. exit, logout, break, continue, let, I shiftbuiltins zaakceptować i argumenty proces rozpoczynający się -bez potrzeby --. Inne wbudowane akceptujące argumenty, ale nieokreślone jako opcje akceptują, interpretują argumenty zaczynające się -od niepoprawnych opcji i wymagają --zapobiegania takiej interpretacji.

Zauważ, że echonie --oznacza to końca opcji.


2
+1 za odniesienie man bash(notatka do siebie następnym razem:).
user3773048,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.