¿Cómo cd a un directorio con un nombre que comienza con un "-" (menos)?

10

Tenemos algunas carpetas donde los nombres comienzan con un "-". Si trato de ingresarlos con terminal, cdinterpreta el "-" como una opción. ¿Cómo podría manejar esto?

cfritz
fuente
1
Sería aconsejable evitar tales caracteres en los nombres de directorio / carpeta.
Mindwin
¿No podrías simplemente hacerlo cd '-my-directory'?
OldBunny2800
@ oldbunny2800 ¿Intentaste eso?
nohillside
1
@ OldBunny2800 No. Las comillas evitan que el shell trate los caracteres por separado; Las cadenas que comienzan con guiones son tratadas como opciones (o no) por el comando que recibe los argumentos, independientemente de cómo se presentaron esas cadenas al shell.
chepner
1
@patrix Lo hice justo después de publicar el comentario, luego me distraí con otras travesuras de la terminal, luego me olvidé de mi comentario. :) Chepner ohhh, eso tiene más sentido.
OldBunny2800

Respuestas:

20

Esto debería funcionar:

cd /path/to/-folderthatstartswithdash

EDITAR :

De acuerdo con esta pregunta , esto funciona si solo desea ingresar el nombre:

cd -- -folderthatstartswithdash
Tom Shen
fuente
55
El --método es la respuesta correcta ... funcionará con la mayoría de las utilidades estándar que aceptan un nombre de archivo como argumento y ahorra tener que calificar completamente la ruta.
Kaithar
El --método funciona ya que "desactiva" el análisis de argumentos.
Tony Williams
3
¿Por qué la restricción "si solo desea ingresar el nombre"? Si necesita más argumentos, simplemente póngalos antes de --.
Federico Poloni
@FedericoPoloni Solo digo que si no quieres la ruta completa, puedes usar esta. Todos los demás argumentos deben ir antes de -.
Tom Shen
19
cd ./-folder

generalmente funciona bastante bien aquí (y también con otros comandos)

nohillside
fuente
Una cosa buena de esta solución es que funciona con cualquier programa o comando, no solo 'cd'; no depende de que el comando o programa tenga un comportamiento especial como "-" para cambiar la interpretación de los argumentos posteriores.
Larry Gritz
-5

Poner el nombre entre comillas debería funcionar.

usuario229882
fuente
3
¿Por qué funcionaría eso? ¿Cómo va a saber la utilidad la diferencia? El shell hace la cita, después de todo, la matriz de argumentos que recibe la utilidad será exactamente la misma en ambos sentidos. Admito que no probé su solución, pero por lo poco que sé sobre los proyectiles, parece bastante evidente que esto no puede funcionar.
Jörg W Mittag
Esto debería funcionar en Windows IIRC, y es lo que pensé primero, pero puedo confirmar que no funciona en Mac.
Cullub
2
Si funciona en Windows es solo porque el modelo de línea de comandos de Windows es completamente ridículo e inconsistente. O simplemente porque los comandos de Windows no se tratan -como un carácter de opción. Pero no hay forma de que las citas puedan cambiar este comportamiento.
R .. GitHub DEJA DE AYUDAR A ICE