Ho provato cd "~/Library/Application Support/"
-bash: cd: ~/Library/Application Support/: No such file or directory
anche cd ~/Library/Application Support/
-bash: cd: ~/Library/Application Support/: No such file or directory
Puoi usare il tasto Tab dopo aver premuto i primi caratteri (questo sarà quindi "riempire" il resto della cartella per te es. scrivi cd ~/L
Tab compila cd ~/Library/
, quindi digita Ap
Tab e riempirà il resto per te.
Se c'è uno spazio tra le parole e non vuoi usare i metodi sopra, metti un \
(backslash) prima dello spazio, ad es. cd ~/Library/Application\ Support
.
Il problema principale qui è come la shell ( bash ) fa virgolette e come ciò influenza l'espansione della tilde e la suddivisione in "parole" (argomenti per il programma in esecuzione).
bash tratta la tilde principale solo se non è quotata. Inoltre, la seguente barra non deve essere citata.
Allo stesso tempo, bash analizza le righe di comando in "parole" basate su spazi non citati. Il comando cd
richiede in genere esattamente un argomento (la directory di destinazione). Una riga di comando come cd foo bar
significa eseguire cd
con due argomenti: foo
e bar
. Se si desidera inviare solo un singolo argomento foo bar
, è necessario citare lo spazio:
(ad esempio cd foo\ bar
(vedi più esempi di esempio di seguito).
Nella tua situazione particolare, devi lasciare la tilde e la seguente barra non quotata mentre citi lo spazio nel nome della directory. Il tuo cd "~/Library/Application Support/"
trial termina citando troppo (la tilde e la sua barra), mentre il tuo cd ~/Library/Application Support/
trial cita troppo poco (omette di citare lo spazio nel nome della directory).
La soluzione più comune è usare l'escape a singolo carattere per citare solo lo spazio:
cd ~/Library/Application\ Support
Puoi anche usare virgolette singole o doppie attorno allo spazio o allo spazio e qualche altro bit di quell'argomento (ma non ~/
!):
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
Questi tipi di virgolette hanno significati diversi, ma sono identici in questi esempi. Le virgolette singole proteggono le stringhe letterali mentre le virgolette doppie consentono varie espansioni e sostituzioni nella regione indicata.
Spesso puoi lasciare che la shell faccia il lavoro per te.
Globbing (caratteri jolly):
cd ~/L*/Ap*
Puoi utilizzare shopt -s nocaseglob
per rendere insensibile la distinzione tra maiuscole e minuscole:
cd ~/l*/ap*
Completamento:
Se si preme la scheda dopo aver inserito cd ~/L
probabilmente lo si espande a cd ~/Library/
.
Premendo di nuovo Tab dopo aver inserito Ap
(ora hai cd ~/Library/Ap
) probabilmente lo espanderai a cd ~/Library/Application\ Support/
(la shell inseriva automaticamente la barra rovesciata di escape).
Puoi utilizzare bind 'set completion-ignore-case on'
per rendere non sensibile al maiuscolo:
cd ~/l
Tab → cd ~/Library/
; ap
Scheda → cd ~/Library/Application\ Support/
Quando si esegue il doppio virgolette di un percorso, si interrompe l'espansione della tilde. Quindi ci sono alcuni modi per farlo:
cd ~/"My Code"
cd ~/'My Code'
La tilde non è citata qui, quindi l'espansione tilde verrà comunque eseguita.
cd "$HOME/My Code"
È possibile espandere le variabili di ambiente all'interno di stringhe con doppi apici; questo è fondamentalmente ciò che sta facendo l'espansione tilde
cd ~/My\ Code
Puoi anche sfuggire a caratteri speciali (come lo spazio) con una barra rovesciata.
In alternativa puoi anche trascinare una cartella nella finestra Terminale, il percorso completo del file / cartella verrà incollato automaticamente al trascinamento.
Devi sfuggire allo spazio in " Application Support
"
Prova $ cd ~/Library/Application\ Support/
Se i metodi normali non funzionano, prova a sostituire gli spazi con %20
.
Questo ha funzionato per me quando si trattava di SSH e di altri comandi in stile dominio come auto_smb
.
Puoi provare questo per cartelle / file distanziati per Se il nome del file o della cartella contiene 1) nome file. Estensione il comando dovrebbe essere cd ~ / file \ nome.estensione / (o) cd ~ / "nome file.estensione" /
Leggi altre domande sui tag terminal