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


Tengo un directorio llamado:

-2

Quiero cd en él pero el cd se queja:

bash: cd: -2: invalid option

Sin éxito, he intentado:

cd "-2"
cd '-2'
cd \-2

¿Alguna solución?

Edición: no hay navegadores de archivos como mc, etc. disponibles en el servidor.


149
2018-01-03 20:29


origen


Pregunta relacionada sobre superusuario: superuser.com/questions/361573/… - yms


Respuestas:


Al menos dos formas:

  1. Utilizar el -- argumento.

    cd -- -2
    

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

    Como un comentarista señalado, esta convención es también Definido en el estándar POSIX.:

    Comportamiento por defecto: Cuando esta sección aparece como "Ninguna", significa que la implementación no necesita ninguna opción. Las utilidades estándar que no aceptan opciones, pero que aceptan operandos, deben reconocer "--" como 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 que no tiene opciones, y la aplicación necesitaba asignarle un nombre de ruta con un guión principal, podría hacerlo de manera segura:

    foo -- -myfile
    

    y evitar cualquier problema con -metro Utilizado como una extensión.

    tanto como:

    Directriz 10:
      El argumento -- Debe ser aceptado como un delimitador que indica el final de las opciones. Los siguientes argumentos deben tratarse como operandos, incluso si comienzan con el '-' personaje. los -- 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 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 dejo como un ejercicio para que el lector los descubra a todos.


250
2018-01-03 20:32



No es solo GNU, es parte del estándar POSIX. Ver 1.11 Descripción de la utilidad Valores por defecto y 12.2 Pautas de sintaxis de utilidad (directriz # 10). Desde el cd página "Los cd La utilidad se ajustará a ... la sección 12.2 ". - Dietrich Epp
Ahora solo tengo curiosidad sobre cómo copiar a un directorio llamado -! - sergiol
@sergiol De la misma manera. - Michael Hampton♦
@ArtB: No. Las citas solo afectan la división de campos. Asi que "hello world" es un argumento pero hello world es dos, y "-2" es lo mismo que -2. - Dietrich Epp
@sergiol: O bien cd -- -- o cd ./-- Deberia trabajar. - Keith Thompson


Esto debería funcionar:

cd -- -2 

- significa que no hay más opción


48
2018-01-03 20:33





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

    cd ./-2

Puede autocompletar escribiendo y presionando la pestaña.


25
2018-01-04 06:19





cd /home/...../-2 también funciona. Dar el camino completo para acceder.


10
2018-01-04 02:46





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

rm -r -- -2

6
2018-01-04 14:14





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

Corrí una aplicación java y estaba buscando un directorio comenzando con <path>, Se suponía que debía reemplazarlo con la ruta correcta antes de ejecutar la aplicación. Sin embargo, me olvidé de hacer eso. La aplicación creó un directorio llamado <path>.

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

Cuando lo intente cd \<path>\ - ¡Esto funcionó!

Información de fondo:

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


-1
2017-07-05 14:00