Jak przejść do katalogu o nazwie zaczynającej się od „-” (minus)?

10

Mamy kilka folderów, w których nazwy zaczynają się od „-”. Jeśli spróbuję wprowadzić je za pomocą terminala, cdinterpretuje „-” jako opcję. Jak mogłem to zrobić?

cfritz
źródło
1
Rozsądnie byłoby unikać takich znaków w nazwach katalogów / folderów.
Mindwin
Nie mogłeś po prostu zrobić cd '-my-directory'?
OldBunny2800
@ oldbunny2800 Próbowałeś tego?
nohillside
1
@ OldBunny2800 Nie. Cytaty uniemożliwiają powłoce osobne traktowanie znaków; ciągi rozpoczynające się od łączników są traktowane jako opcje (lub nie) przez polecenie, które odbiera argumenty, niezależnie od tego, jak te ciągi zostały przedstawione powłoce.
chepner
1
@patrix Zrobiłem to zaraz po opublikowaniu komentarza, a potem byłem rozproszony przez innych terminalnych shenaniganów, a potem zapomniałem o moim komentarzu. :) Chepner ohhh, to ma więcej sensu.
OldBunny2800

Odpowiedzi:

20

To powinno po prostu działać:

cd /path/to/-folderthatstartswithdash

EDYCJA :

Zgodnie z tym pytaniem działa to, jeśli chcesz wprowadzić tylko nazwę:

cd -- -folderthatstartswithdash
Tom Shen
źródło
5
--Metoda jest poprawna odpowiedź ... to będzie działać z większością standardowych narzędzi, które akceptują nazwy pliku jako argument i zapisuje mających w pełni kwalifikują ścieżkę.
Kaithar
--Metoda działa tak jak „wyłącza” analizowania argumentów.
Tony Williams
3
Dlaczego ograniczenie „jeśli chcesz tylko wpisać nazwę”? Jeśli potrzebujesz więcej argumentów, po prostu umieść je przed --.
Federico Poloni
@FedericoPoloni Mówię tylko, że jeśli nie chcesz pełnej ścieżki, możesz z niej skorzystać. Wszystkie pozostałe argumenty powinny wystąpić przed -.
Tom Shen
19
cd ./-folder

zwykle działa całkiem dobrze tutaj (a także z innymi poleceniami)

nohillside
źródło
Zaletą tego rozwiązania jest to, że działa ono z dowolnym programem lub poleceniem, nie tylko „cd”; nie zależy to od tego, czy polecenie lub program mają jakieś specjalne zachowanie, takie jak „-”, aby zmienić interpretację kolejnych argumentów.
Larry Gritz
-5

Umieszczenie nazwy w cudzysłowie powinno działać.

użytkownik229882
źródło
3
Dlaczego to miałoby działać? W jaki sposób narzędzie rozpozna różnicę? Cytowanie odbywa się przez powłokę, w końcu tablica argumentów otrzymywana przez narzędzie będzie dokładnie taka sama w obu przypadkach. Przyznaję, że nie wypróbowałem twojego rozwiązania, ale z tego, co niewiele wiem o powłokach, wydaje się dość oczywiste, że to nie może działać.
Jörg W Mittag
Powinno to działać w systemie Windows IIRC i właśnie o tym pomyślałem, ale mogę potwierdzić, że nie działa na komputerze Mac.
Cullub,
2
Jeśli działa w systemie Windows, to tylko dlatego, że model wiersza poleceń systemu Windows jest całkowicie absurdalny i niespójny. Lub tylko dlatego, że polecenia systemu Windows nie są traktowane -jako znak opcji. Ale nie ma mowy, żeby cytowanie mogło zmienić to zachowanie.
R .. GitHub ZATRZYMAJ LÓD