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ć?


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

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)


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ć.


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
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.