usar una renombrar nombres espacios espacio entrar directorios crear con como carpetas carpeta blanco archivos bash cygwin cd

bash - una - renombrar archivos con espacio linux



Cómo hacer un CD en un directorio con espacio en el nombre? (8)

¿Por qué no poner lo siguiente en su .cshrc (o .bashrc , o cualquiera que sea su shell predeterminado):

alias mydoc ''cd "/cygdrive/c/Users/my dir/Documents"''

La primera vez que haces esto, tienes que hacer

source .cshrc

para actualizar el shell con este nuevo alias, entonces puede escribir

mydoc

cada vez que quiera cd en su directorio.

La pereza es la madre de la invención ...

Intenté muchas cosas. Vea abajo:

Intento entrar en el directorio: / cygdrive / c / Users / my dir / Documents

$ DOCS="/cygdrive/c/Users/my/ dir/Documents" $ echo $DOCS /cygdrive/c/Users/my/ dir/Documents $ cd $DOCS -bash: cd: /cygdrive/c/Users/my/: No such file or directory $ cd /cygdrive/c/Users/my/ dir/Documents (success)

Comportamiento muy extraño. Cuando lo escribo manualmente, el retroceso hace su característica de escape de carácter. Pero no cuando uso la expansión de parámetros con la variable DOCS.
Probé con otras variaciones, como sin barra invertida.

$ DOCS=/cygdrive/c/Users/Rahman/ dir/Documents $ echo $DOCS /cygdrive/c/Users/my dir/Documents $ cd $DOCS -bash: cd: /cygdrive/c/Users/my: No such file or directory

o

$ DOCS="/cygdrive/c/Users/my dir/Documents" $ echo $DOCS /cygdrive/c/Users/my dir/Documents $ cd $DOCS -bash: cd: /cygdrive/c/Users/my: No such file or directory

Se que es posible. Mira aquí:

$ echo $HOME /home/my dir

[EDITAR] Como se señaló, cd $ HOME tampoco funciona. se deben poner citas a su alrededor.

Qué diablos:

$ DOCS="/"/cygdrive/c/Users/my dir/Documents/"" $ echo $DOCS "/cygdrive/c/Users/my dir/Documents" $ cd $DOCS -bash: cd: "/cygdrive/c/Users/my: No such file or directory


En lugar de:
DOCS = "/ cygdrive / c / Users / my / dir / Documents" try:
DOCS = "/ cygdrive / c / Users / my dir / Documents" Esto debería funcionar en cualquier sistema POSIX .


tratar

DOCS="/cygdrive/c/Users/my/ dir/Documents"; cd "$DOCS"


$ DOCS="/cygdrive/c/Users/my/ dir/Documents"

Aquí está tu primer problema. Esto pone una barra invertida real en $DOCS , como puede ver al ejecutar este comando:

$ echo "$DOCS" /cygdrive/c/Users/my/ `

Al definir DOCS , necesita escaparse del carácter de espacio. Puede citar la cadena (usando comillas simples o dobles) o puede escaparse solo del carácter de espacio con una barra diagonal inversa. No puedes hacer ambas cosas. (En la mayoría de los sistemas tipo Unix, puede tener una barra invertida en un nombre de archivo o directorio, aunque no es una buena idea. En Cygwin o Windows, / es un delimitador de directorio. Pero voy a suponer el nombre real del directorio es my dir , no my/ dir )

$ cd $DOCS

Esto pasa dos argumentos a cd . El primero es cygdrive/c/Users/my/ , y el segundo es dir/Documents . Sucede que el cd ignora silenciosamente a todos menos a su primer argumento, lo que explica el mensaje de error:

-bash: cd: /cygdrive/c/Users/my/: No such file or directory

Para configurar $DOCS al nombre de su directorio de Documents , haga cualquiera de estos:

$ DOCS="/cygdrive/c/Users/my dir/Documents" $ DOCS=''/cygdrive/c/Users/my dir/Documents'' $ DOCS=/cygdrive/c/Users/my/ dir/Documents

Una vez que hayas hecho eso, para cambiar a tu directorio de Documents , encierra la referencia de variable entre comillas dobles (esta es una buena idea para cualquier referencia de variable en bash, a menos que estés seguro de que el valor no tiene ningún personaje divertido):

$ cd "$DOCS"

También podría considerar darle un nombre a ese directorio sin espacios, aunque eso puede ser difícil en general en Windows.


$ cd "$DOCS"

"$DOCS" citar "$DOCS" para evitar que los espacios se analicen como separadores de palabras. La mayoría de las veces, las referencias de variables deben ser citadas.

Tenga en cuenta que $HOME tendría el mismo problema. El problema viene de cuando el shell evalúa las referencias variables; no tiene nada que ver con qué variables usa o cómo las asigna. Es la expansión que necesita ser citada.

$ echo $HOME /home/my dir

Esto es engañoso. echo está haciendo eco de las dos cadenas /home/my y dir . Si usa cd o ls , verá cómo funciona realmente.

$ ls $HOME ls: cannot access /home/my: No such file or directory ls: cannot access dir: No such file or directory $ cd $HOME bash: cd: /home/my: No such file or directory $ cd "$HOME" <success!>

¿Puedo preguntar por qué funciona cuando lo escribo manualmente pero no en una variable?

Gran pregunta! Examinemos los comandos que escribió:

$ DOCS="/"/cygdrive/c/Users/my dir/Documents/"" $ echo $DOCS "/cygdrive/c/Users/my dir/Documents" $ cd $DOCS -bash: cd: "/cygdrive/c/Users/my: No such file or directory

La razón por la que esto no funciona es porque Bash no analiza las comillas dentro de las expansiones de variables. Realiza la división de palabras, por lo que los espacios en blanco en las expansiones de variables sin comillas se toman como separadores de palabras. No analiza las citas de ninguna manera, lo que significa que no puede poner comillas dobles dentro de una variable para anular la división de palabras.

$ cd $DOCS

Debido a esto, cd pasa dos parámetros. En cuanto a cd sabe, parece que usted escribió:

$ cd ''"/cygdrive/c/Users/my'' ''dir/Documents"''

Dos parámetros, con comillas dobles intactas.


Si desea pasar de c:/ y desea ir a c:/Documents and settings , escriba en la consola: c:/Documents/[space]+tab y cygwin lo completará automáticamente como c:/Documents/ and/ settings/


bien, también pasé un tiempo frustrante con este problema. Mi pequeña guía

Escritorio abierto, por ejemplo. Si no cambiaste tu disco en cmd, escribe:

escritorio cd

Ahora si quieres mostrar subcarpetas:

cd , haga 1 barra espaciadora , y presione la pestaña 2 veces

Ahora si desea ingresar el directorio / archivo con SPACE IN NAME . Permite abrir un nombre de archivo fg, para abrirlo debemos escribir:

archivo de cd / nombre

ps observe este espacio después de barra :)


SOLUCIÓN:

cd "Documents and Photos"

problema resuelto.

La razón por la que presento esta respuesta es que encontrará que está siendo utilizado por todos los días (no solo desarrolladores web, programadores o usuarios avanzados) y este fue el resultado número uno para una simple pregunta de usuario de Windows en Google.

La gente se está volviendo más conocedora de la tecnología, pero no está necesariamente familiarizada con la línea de comando en los casos anteriores.