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"