¿Cómo crear un CD en un directorio con este nombre "-2" (comenzando con el guión)?


Respuestas:


272

Al menos dos formas:

  1. Usa el --argumento.

    cd -- -2
    

    Esto usa una convención común a las herramientas GNU que es no tratar nada que aparezca después --como una opción de línea de comando.

    Como señaló un comentarista , esta convención también se define en el estándar POSIX :

    Comportamiento predeterminado: cuando esta sección se enumera como "Ninguna", significa que la implementación no necesita admitir ninguna opción. Las utilidades estándar que no aceptan opciones, pero que aceptan operandos, se reconocerán "--"como un primer argumento a descartar.

    El requisito para reconocer "--"es porque las aplicaciones conformes necesitan una forma de proteger sus operandos de cualquier opción arbitraria que la implementación pueda proporcionar como una extensión. Por ejemplo, si la utilidad estándar foo aparece como sin opciones, y la aplicación necesita darle un nombre de ruta con un guión inicial, podría hacerlo de manera segura como:

    foo -- -myfile
    

    y evite cualquier problema con -m usado como una extensión.

    así como también :

    Pauta 10:
    El argumento --debe aceptarse como un delimitador que indica el final de las opciones. Los siguientes argumentos deben tratarse como operandos, incluso si comienzan con el '-'carácter. El --argumento no debe usarse como una opción o como un operando.

  2. Especifique la ruta explícitamente:

    cd ./-2
    

    Esto especifica la ruta nombrando explícitamente el directorio actual ( .) como el punto de partida.

    cd $(pwd)/-2
    cd /absolute/path/to/-2
    

    Estas son variaciones de lo anterior. Cualquier número de tales variaciones puede ser posible; Lo dejaré como ejercicio para que el lector los descubra a todos.


23
No es solo GNU, es parte del estándar POSIX. Consulte 1.11 Valores predeterminados de descripción de la utilidad y 12.2 Directrices de sintaxis de la utilidad (directriz n. ° 10). Desde la cdpágina "La cdutilidad se ajustará a ... la sección 12.2".
Dietrich Epp

Ahora tengo curiosidad por saber cómo crear un CD en un directorio llamado -!
sergiol

2
@sergiol De la misma manera.
Michael Hampton

1
@ArtB: No. Las comillas solo afectan la división del campo. Entonces "hello world"es un argumento pero hello worldes dos, y "-2"es lo mismo que -2.
Dietrich Epp

1
@sergiol: Ninguno de ellos cd -- --o cd ./--debería funcionar.
Keith Thompson el

49

Esto debería funcionar:

cd -- -2 

- significa que no hay más opciones


26

Esto funcionará si '-2' está en el directorio actual.

    cd ./-2

Puede autocompletar escribiendo y presionando tab.


11

cd /home/...../-2 también funciona. Dar la ruta completa de acceso.


7

Solo para complementar, si desea eliminar / eliminar este directorio, puede usar el siguiente comando:

rm -r -- -2

... y solo para complementar, nunca haría eso, sino que usaré una herramienta gráfica como mc o cambiaré el nombre del directorio primero.
Nick

-1

Sé que esta pregunta ya ha sido respondida. Si alguien tiene una situación como la mía, esto es para ellos:

Ejecuté una aplicación Java y estaba buscando un directorio que comenzara <path>, se suponía que debía reemplazarlo con la ruta adecuada antes de ejecutar la aplicación. Sin embargo, olvidé hacer eso. La aplicación creó un directorio llamado <path>.

Traté de cd <path>- me dio el error "-bash: error de sintaxis cerca de la nueva línea de token inesperada" Según la sugerencia aquí (entiendo que es para el directorio que comienza con - y no <) lo intenté cd -- <path>. Sin embargo, obtuve el mismo error.

Cuando lo intenté cd \<path>\, ¡esto funcionó!

Información de antecedentes:

Los símbolos "<" y ">" se utilizan para redirigir STDIN y STDOUT, por lo tanto, deben escaparse para que el shell no los interprete como redireccionamientos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.