cd al directorio con el nombre de '-'

2

Estoy intentando crear 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 enlace simbólico dependiendo de dónde esté. Descubrí que cd - significa ir a la ubicación anterior , pero no puedo escapar. cd \- no funciona.

¿Alguna forma de evitar esto?

    
pregunta SimplGy 19.02.2014 - 22:14

2 respuestas

9

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

mkdir ./-
cd ./-
    
respondido por el nohillside 19.02.2014 - 22:19
1

Opuesto a ~ , que se evalúa mediante bash, - es un argumento para cd . Eche un vistazo a las páginas del manual (bueno, para los sistemas actuales, ambos están en man bash , ya que cd es un componente):

   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, escapar de alguna manera (por ejemplo, utilizando '~' o \~ ) funcionará. - por otra parte se pasará al comando. El escape no tiene ningún uso: bash no lo evaluará de todos modos, pero se pasará como una cadena única a cd , que posteriormente abrirá $OLDPWD .

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

OLDPATH=- cd -
    
respondido por el Jens Erat 19.02.2014 - 23:51

Lea otras preguntas en las etiquetas