GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Perché non posso Cd su una citata Tilde ('~')?

Scrivo il mio primo copione, quindi sono sicuro che questa sia una domanda di base, ma qualcuno può spiegarmi perché posso:

cd ~
cd bin
cd ~/bin
cd 'bin'

Ma non

cd '~'
cd '~/bin'

Ho bisogno di cd in un percorso di directory con uno spazio in uno dei nomi di directory, quindi ho bisogno delle virgolette (è Windows Program Files sotto il vino). Posso aggirarlo con due cd comandi, ma perché non posso mettere ~ tra virgolette?

Se digito cd '~' (o cd "~" ) Ottengo:

bash: cd: ~: No such file or directory

Risposta accettata:

Come ha notato @karel nella sua risposta, ~ è un carattere speciale e ampliato da Bash nella directory home dell'utente corrente. Consulta il manuale di Bash su "Tilde Expansion" o cerca il titolo "Tilde Expansion" nella pagina man (man bash ).

Qualsiasi tipo di citazione intorno al ~ impedisce questa espansione della tilde.

Per rispondere alla tua domanda su come puoi ancora usarlo per cd in una directory con spazi nel nome, ci sono alcune alternative:

  • Ometti le virgolette ed evita gli spazi con barre inverse invece:

    cd ~/foo/spaces are cool/bar
    
  • Cita il resto del percorso, ma omettilo intorno alla tilde e alla prima barra:

    cd ~/"foo/spaces are cool/bar"
    

    Come vedi, puoi concatenare stringhe tra virgolette e non in Bash semplicemente scrivendole una accanto all'altra senza spazi intermedi.

  • Usa la variabile d'ambiente $HOME invece della tilde, che viene comunque espansa tra "virgolette doppie" (ma non "virgolette singole"):

    cd "$HOME/foo/spaces are cool/bar"
    

Ubuntu
  1. Perché Podman senza root non può estrarre la mia immagine?

  2. Perché The Tilde (~) non si espande all'interno di virgolette doppie?

  3. Perché un utente normale non può "chown" un file?

  4. Perché è stato scelto "~" per rappresentare la home directory?

  5. Perché non posso usare Cd in uno script Bash??

Perché altri utenti non possono accedere alla condivisione Samba senza forzare User =Me?

Perché non riesco a installare Tomboy in Ubuntu Mate 19.04?

Perché non riesco a sentire i ping udibili?

Perché non riesco a copiare un gran numero di file sull'unità flash USB?

Perché non riesco ad accedere al mio sito Web e al cPanel?

Perché non riesco a ricevere e-mail?