Wie cd in ein Verzeichnis mit einem Namen, der mit einem "-" (Minus) beginnt?

10

Wir haben einige Ordner, in denen die Namen mit einem "-" beginnen. Wenn ich versuche, sie mit Terminal einzugeben, cdwird das "-" als Option interpretiert. Wie könnte ich das schaffen?

cfritz
quelle
1
Es wäre ratsam, solche Zeichen in Verzeichnis- / Ordnernamen zu vermeiden.
Mindwin
Könnten Sie nicht einfach tun cd '-my-directory'?
OldBunny2800
@ oldbunny2800 Hast du das versucht?
Nohillside
1
@ OldBunny2800 Nein. Anführungszeichen verhindern, dass die Shell Zeichen separat behandelt. Zeichenfolgen, die mit Bindestrichen beginnen, werden vom Befehl, der die Argumente empfängt , als Optionen (oder nicht) behandelt , unabhängig davon, wie diese Zeichenfolgen der Shell präsentiert wurden.
Chepner
1
@patrix Ich habe es gleich getan, nachdem ich den Kommentar gepostet habe, wurde dann von anderen Terminal-Spielereien abgelenkt und habe dann meinen Kommentar vergessen. :) Chepner ohhh, das macht mehr Sinn.
OldBunny2800

Antworten:

20

Das sollte einfach funktionieren:

cd /path/to/-folderthatstartswithdash

EDIT :

Nach dieser Frage funktioniert dies, wenn Sie nur den Namen eingeben möchten:

cd -- -folderthatstartswithdash
Tom Shen
quelle
5
Die --Methode ist die richtige Antwort. Sie funktioniert mit den meisten Standarddienstprogrammen, die einen Dateinamen als Argument akzeptieren, und erspart es, den Pfad vollständig zu qualifizieren.
Kaithar
Die --Methode funktioniert, wenn das Parsen von Argumenten "deaktiviert" wird.
Tony Williams
3
Warum die Einschränkung "wenn Sie nur den Namen eingeben möchten"? Wenn Sie weitere Argumente benötigen, setzen Sie diese einfach vor das --.
Federico Poloni
@FedericoPoloni Ich sage nur, wenn Sie nicht den vollständigen Pfad wollen, können Sie diesen verwenden. Alle anderen Argumente sollten vor dem - stehen.
Tom Shen
19
cd ./-folder

funktioniert hier normalerweise ganz gut (und auch mit anderen Befehlen)

nohillside
quelle
Eine schöne Sache an dieser Lösung ist, dass sie mit jedem Programm oder Befehl funktioniert, nicht nur mit 'cd'. Es hängt nicht davon ab, ob der Befehl oder das Programm ein spezielles Verhalten wie "-" aufweist, um die Interpretation nachfolgender Argumente zu ändern.
Larry Gritz
-5

Das Setzen des Namens in Anführungszeichen sollte funktionieren.

user229882
quelle
3
Warum sollte das funktionieren? Woher wird das Dienstprogramm den Unterschied erkennen? Das Zitieren erfolgt durch die Shell, schließlich ist das Argumentarray, das das Dienstprogramm empfängt, in beiden Fällen genau gleich . Ich gebe zu, dass ich Ihre Lösung nicht ausprobiert habe, aber von dem Wenigen, das ich über Muscheln weiß, scheint es ziemlich selbstverständlich, dass dies unmöglich funktionieren kann.
Jörg W Mittag
Dies sollte unter Windows IIRC funktionieren und ist das, woran ich zuerst gedacht habe, aber ich kann bestätigen, dass es unter Mac nicht funktioniert.
Cullub
2
Wenn es unter Windows funktioniert, liegt das nur daran, dass das Befehlszeilenmodell von Windows absolut lächerlich und inkonsistent ist. Oder nur, weil Windows-Befehle nicht -als Optionszeichen behandelt werden . Aber es gibt keine Möglichkeit, dass Zitate dieses Verhalten ändern können.
R .. GitHub STOP HELPING ICE