No olvides que en las ciencias un error suele tener varias soluciones, por lo tanto aquí te compartiremos lo más óptimo y eficiente.
Solución:
La razón por la que no funciona es porque el shell divide los argumentos en espacios en blanco y, por lo tanto, cree que llamas cd
con los dos argumentos October
y Fall
. Escape del espacio en blanco con como esto:
cd October Fall
Otra forma es ponerlo entre comillas simples o dobles como esta
cd 'October Fall'
cd "October Fall"
O simplemente arrastre y suelte la carpeta en la Terminal.
Pero, ¿por qué no simplemente escribe unos pocos caracteres y presiona Pestaña para autocompletar?
El shell realiza la división de palabras en los argumentos antes de pasarlos al comando que especifique. Esto significa que toma la línea (o, en algunos casos, las líneas) y la divide en varias palabras, por defecto en espacios, tabulaciones y saltos de línea.
Como mencionó Lưu Vĩnh Phúc, las barras invertidas y las comillas simples se pueden usar para evitar la división de palabras en caracteres individuales o todo lo que hay entre ellos, respectivamente. Las comillas dobles también funcionan:
cd "October Fall"
En este caso particular, '
y "
se comportan de manera idéntica, pero tienen diferencias.
'
desactiva toda la interpretación de caracteres especiales (incluso ), pero no puede contener un
'
. "
solo deshabilita la división de palabras y la expansión del nombre del archivo (la expansión del nombre del archivo es cosas como ls *.mp3
para enumerar todos los archivos con nombres que terminan en .mp3
. los *
desencadena la expansión del nombre del archivo aquí). Ya que "
permite algunas expansiones de argumentos, es útil si, por ejemplo, tiene un nombre de archivo con un espacio dentro de una variable:
$ filename=October Fall
$ # ^-- Still need a backslash or quoting to prevent word
$ # splitting here, but the backslash/quotes will not be stored
$ cd $filename
bash: cd: October: No such file or directory
$ cd '$filename'
bash: cd: $filename: No such file or directory
$ cd "$filename"
$ pwd
/path/to/October Fall
Tenga en cuenta que '
y "
no causan (de forma predeterminada) que las palabras se dividan, por lo que esto, a pesar de ser complicado, funcionaría para usted:
cd "Oct"'ober F'"all"
Esto es útil si tiene algo como un directorio llamado Octobers' $HOME
. los '
en ella rompería un solo par de '
citando, y dentro "
cotizaciones, $HOME
se expandirá a su directorio de inicio. Pero cualquiera de estas combinaciones (y muchas otras) funcionará de manera segura:
cd Octobers' $HOME
cd "Octobers' "'$HOME'
cd "Octobers' "$HOME
cd "Octobers' $HOME"
Otra cosa a tener en cuenta es que muchos shells modernos ofrecen finalización con pestañas. Tanto Bash como Zsh (probablemente Ksh también, pero no lo he probado) pueden expandir parte del nombre de un directorio a su nombre completo, completo con escape seguro a través de s. Asi que
cd Octobers
se convierte cd Octobers' $HOME
. Es posible que tenga que presionar tabulador varias veces si hay varias coincidencias. Además, es posible que su shell no tenga habilitada la finalización de pestañas de forma predeterminada, consulte la documentación de su shell.
Sección de Reseñas y Valoraciones
Recuerda que te damos el privilegio valorar esta crónica si te fue de ayuda.