GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Por qué no puedo tocar una tilde citada ('~')?

Estoy escribiendo mi primer guión, así que estoy seguro de que esta es una pregunta básica, pero alguien me puede explicar por qué puedo:

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

Pero no

cd '~'
cd '~/bin'

Necesito cd a una ruta de directorio con un espacio en uno de los nombres de directorio, así que necesito las comillas (es Windows Program Files bajo el vino). Puedo sortearlo con dos cd comandos, pero ¿por qué no puedo poner ~ entre comillas?

Si escribo cd '~' (o cd "~" ) Obtengo:

bash: cd: ~: No such file or directory

Respuesta aceptada:

Como @karel señaló en su respuesta, ~ es un carácter especial y Bash lo expande en el directorio de inicio del usuario actual. Consulte el manual de Bash sobre "Tilde Expansion", o busque el título "Tilde Expansion" en la página del manual (man bash ).

Cualquier tipo de cita sobre el ~ evita esta expansión de tilde.

Para responder a su pregunta sobre cómo aún puede usarlo para cd en un directorio con espacios en su nombre, existen algunas alternativas:

  • Omita las comillas y escape de los espacios con barras invertidas en su lugar:

    cd ~/foo/spaces are cool/bar
    
  • Cita el resto de la ruta, pero omítelos alrededor de la tilde y la primera barra inclinada:

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

    Como puede ver, puede concatenar cadenas entre comillas y sin comillas en Bash simplemente escribiéndolas una al lado de la otra sin espacios entre ellas.

  • Utilice la variable de entorno $HOME en lugar de la tilde, que aún se expande dentro de "comillas dobles" (pero no "comillas simples"):

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

Ubuntu
  1. ¿Por qué Podman desarraigado no puede sacar mi imagen?

  2. ¿Por qué la tilde (~) no se expande dentro de comillas dobles?

  3. ¿Por qué un usuario normal no puede 'chown' un archivo?

  4. ¿Por qué no puedo usar Cd en un script Bash?

  5. Linux:¿por qué el kernel no puede ejecutar Init?

¿Por qué no puedo escapar de los espacios en un script Bash?

¿Por qué no puedo exportar la pantalla de Linux?

¿No se puede hacer eco de $catalina_home?

¿Por qué no puedo instalar Tomboy en Ubuntu Mate 19.04?

¿Por qué no puedo copiar una gran cantidad de archivos a la unidad flash USB?

¿Por qué no puedo recibir correo electrónico?