próbowałem cd "~/Library/Application Support/"
-bash: cd: ~/Library/Application Support/: No such file or directory
również cd ~/Library/Application Support/
-bash: cd: ~/Library/Application Support/: No such file or directory
Możesz użyć Tabklawisza po naciśnięciu kilku pierwszych znaków (spowoduje to „wypełnienie” pozostałej części folderu, np. Wpisz cd ~/L
Tabwypełnienie, cd ~/Library/
a następnie wpisz Ap
Tabresztę.
Jeśli między słowami jest spacja i nie chcesz używać powyższych metod, wstaw \
przed nimi spację (odwrotny ukośnik), np cd ~/Library/Application\ Support
.
shopt -s nocaseglob
ibind 'set completion-ignore-case on'
aby bash był mniej wrażliwy na wielkość liter.Podstawowym problemem jest to, w jaki sposób powłoka ( bash ) robi cytowanie i jak wpływa to na rozwinięcie tyldy i podział na „słowa” (argumenty dla uruchamianego programu).
bash traktuje wiodącą tyldę specjalnie, jeśli nie jest cytowana. Ponadto nie wolno cytować następującego ukośnika.
Jednocześnie bash analizuje wiersze poleceń na „słowa” na podstawie niecytowanych białych znaków.
cd
Komenda wymaga zazwyczaj dokładnie jeden argument (katalog docelowy). Wiersz poleceniacd foo bar
oznacza sposób uruchamianiacd
z dwoma argumentami:foo
ibar
. Jeśli chcesz wysłać tylko jedenfoo bar
argument, musisz zacytować spację:(np.)
cd foo\ bar
(Zobacz więcej cytowania poniżej).W twojej konkretnej sytuacji musisz pozostawić cudzysłowy i następujący ukośnik bez cudzysłowu, cytując miejsce w nazwie katalogu. Twoja
cd "~/Library/Application Support/"
próba kończy się na cytowaniu za dużo (tylda i jej ukośnik), podczas gdy twojacd ~/Library/Application Support/
próba podaje za mało (pomija cytowanie miejsca w nazwie katalogu).Najczęstszym rozwiązaniem jest użycie znaku jednokierunkowego do cytowania tylko miejsca:
Możesz także użyć pojedynczych lub podwójnych cudzysłowów wokół spacji lub spacji oraz innych bitów tego argumentu (ale nie
~/
!):Tego rodzaju cytaty mają różne znaczenia, ale w tych przykładach są identyczne. Pojedyncze cudzysłowy chronią dosłowne ciągi znaków, podczas gdy podwójne cudzysłowy umożliwiają różne rozszerzenia i podstawienia w cytowanym regionie.
Często możesz po prostu pozwolić powłoce wykonać za ciebie pracę.
Globbing (symbole wieloznaczne):
Możesz użyć,
shopt -s nocaseglob
aby globbing nie rozróżniał wielkości liter:Ukończenie:
Naciśnięcie Tabpo wejściu
cd ~/L
prawdopodobnie rozwinie go docd ~/Library/
. Ponownenaciśnięcie Tabpo wejściu
Ap
(już maszcd ~/Library/Ap
) prawdopodobnie rozwinie go docd ~/Library/Application\ Support/
(powłoka automatycznie wstawia uciekający ukośnik).Możesz użyć,
bind 'set completion-ignore-case on'
aby rozróżnić wielkość liter w zakończeniu:cd ~/l
Tab→cd ~/Library/
;ap
Tab→cd ~/Library/Application\ Support/
źródło
<kbd></kbd>
tag HTML (jeden z kilku tagów HTML obsługiwanych w znacznikach SE ).Kiedy podwójnie zacytujesz ścieżkę, powstrzymujesz ekspansję tyldy. Jest więc kilka sposobów, aby to zrobić:
Tylda nie jest tutaj cytowana, więc rozszerzenie tyldy będzie nadal uruchamiane.
Można rozszerzać zmienne środowiskowe w ciągach cudzysłowów; to jest właśnie to, co robi rozszerzenie tylda
Możesz także uciec od znaków specjalnych (takich jak spacja) za pomocą odwrotnego ukośnika.
źródło
Możesz też po prostu przeciągnąć folder do okna Terminal, pełna ścieżka pliku / folderu zostanie automatycznie wklejona podczas przeciągania.
źródło
Musisz uciec z miejsca w „
Application Support
”Próbować
$ cd ~/Library/Application\ Support/
źródło
Jeśli normalne sposoby nie działają, spróbuj zastąpić spacje
%20
.Działa to dla mnie w przypadku SSH i innych poleceń w stylu domeny, takich jak
auto_smb
.źródło
Możesz wypróbować to w przypadku folderów / plików z odstępami, jeśli plik lub nazwa folderu zawiera 1) nazwa pliku. Rozszerzenie, polecenie powinno brzmieć cd ~ / plik \ nazwa.rozszerzenie / (lub) cd ~ / "nazwa pliku. Rozszerzenie" /
źródło