Odpowiedzi:
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
i bind '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 polecenia cd foo bar
oznacza sposób uruchamiania cd
z dwoma argumentami: foo
i bar
. Jeśli chcesz wysłać tylko jeden foo 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 twoja cd ~/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:
cd ~/Library/Application\ Support
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 ~/
!):
cd ~/Library/Application' 'Support
cd ~/Library/Application" "Support
cd ~/Library/App'lication 'Support
cd ~/Library/Application" Supp"ort
cd ~/'Library/Application 'Support
cd ~/"Library/Application "Support
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):
cd ~/L*/Ap*
Możesz użyć, shopt -s nocaseglob
aby globbing nie rozróżniał wielkości liter:
cd ~/l*/ap*
Ukończenie:
Naciśnięcie Tabpo wejściu cd ~/L
prawdopodobnie rozwinie go do cd ~/Library/
. Ponowne
naciśnięcie Tabpo wejściu Ap
(już masz cd ~/Library/Ap
) prawdopodobnie rozwinie go do cd ~/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/
<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ć:
cd ~/"My Code"
cd ~/'My Code'
Tylda nie jest tutaj cytowana, więc rozszerzenie tyldy będzie nadal uruchamiane.
cd "$HOME/My Code"
Można rozszerzać zmienne środowiskowe w ciągach cudzysłowów; to jest właśnie to, co robi rozszerzenie tylda
cd ~/My\ Code
Możesz także uciec od znaków specjalnych (takich jak spacja) za pomocą odwrotnego ukośnika.
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" /