2 votos

cd al directorio con nombre de `-`

Estoy tratando de hacer una carpeta llamada - . Sé que es un nombre tonto, se llama así para reflejar otra cosa.

mkdir -
ls
> -
cd -

Esto hace que suba una carpeta o salga del contexto del symlink dependiendo de donde me encuentre. He descubierto que cd - significa ir a la ubicación anterior pero no puede escapar de ella. cd \- no funciona.

¿Hay alguna forma de evitarlo?

9voto

Puedes usar rutas relativas o absolutas para evitar que el - se quede solo y confunda al comando de construcción de bash cd :

mkdir ./-
cd ./-

1voto

Philip Rieck Puntos 21405

Frente a ~ que es evaluado por bash, - es un argumento para cd . Echa un vistazo a las páginas man (bueno, para los sistemas actuales ambas están en man bash como cd es un builtin):

   cd [-L|[-P [-e]]] [dir]
          Change the current directory to dir. [...]  An argument of - is equivalent
          to $OLDPWD. [...]

Y el párrafo sobre la expansión de la tilde (simplificado al significado más común):

Tilde Expansion
   If  a  word begins with an unquoted tilde character (`~'), [...] the tilde-prefix 
   is replaced with the home  directory associated with the specified login name.

~ será reemplazado por bash antes de pasar el argumento al comando real. Por lo tanto, escapando de alguna manera (por ejemplo usando '~' o \~ ) funcionará. - por otro lado, se pasará al comando. Escapar no tiene ninguna utilidad: bash no lo evaluará de todos modos, pero se pasará sin esconder como una sola cadena a cd que posteriormente abrirá $OLDPWD .


Una alternativa más esotérica a la forma más razonable de abrir Patrix - -carpetas sería establecer $OLDPATH a - :

OLDPATH=- cd -

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X