GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Pourquoi ne puis-je pas Cd To A Quoted Tilde ('~') ?

J'écris mon premier script donc je suis sûr que c'est une question basique, mais quelqu'un peut-il m'expliquer pourquoi je peux :

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

Mais non

cd '~'
cd '~/bin'

J'ai besoin de cd à un chemin de répertoire avec un espace dans l'un des noms de répertoire, j'ai donc besoin des guillemets (c'est Windows Program Files sous le vin). Je peux le contourner avec deux cd commandes, mais pourquoi ne puis-je pas mettre ~ entre guillemets ?

Si je tape cd '~' (ou cd "~" ) J'obtiens :

bash: cd: ~: No such file or directory

Réponse acceptée :

Comme @karel l'a noté dans sa réponse, ~ est un caractère spécial et étendu par Bash dans le répertoire personnel de l'utilisateur actuel. Consultez le manuel de Bash sur "Tilde Expansion", ou recherchez le titre "Tilde Expansion" dans la page de manuel (man bash ).

Tout type de citation autour du ~ empêche cette expansion de tilde.

Pour répondre à votre question sur la façon dont vous pouvez toujours l'utiliser pour cd dans un répertoire avec des espaces dans son nom, il y a quelques alternatives :

  • Omettez les guillemets et remplacez les espaces par des barres obliques inverses :

    cd ~/foo/spaces are cool/bar
    
  • Citez le reste du chemin, mais omettez-les autour du tilde et de la première barre oblique :

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

    Comme vous le voyez, vous pouvez concaténer des chaînes entre guillemets et sans guillemets dans Bash en les écrivant simplement les unes à côté des autres sans aucun espace entre elles.

  • Utilisez la variable d'environnement $HOME au lieu du tilde, qui est toujours développé à l'intérieur de "guillemets doubles" (mais pas de "guillemets simples") :

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

Ubuntu
  1. Pourquoi Podman sans racine ne peut-il pas extraire mon image ?

  2. Pourquoi ‘~’ a-t-il été choisi pour représenter le répertoire personnel ?

  3. Pourquoi ne puis-je pas utiliser Cd dans un script Bash ? ?

  4. Linux - Pourquoi le noyau ne peut-il pas exécuter Init ?

  5. Pourquoi je ne peux pas échapper aux espaces sur un script bash ??

Impossible de se connecter au sans fil 13.10 ?

Vous ne pouvez pas mettre à jour Gnupg ?

Pourquoi ne puis-je pas installer Tomboy dans Ubuntu Mate 19.04 ?

Pourquoi ne puis-je pas entendre les pings audibles ?

Pourquoi ne puis-je pas accéder à mon site Web et à cPanel ?

Pourquoi ne puis-je pas recevoir d'e-mail ?