¿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?
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:
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)
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.
¿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.
cd '-my-directory'
?Respuestas:
Esto debería funcionar:
EDITAR :
De acuerdo con esta pregunta , esto funciona si solo desea ingresar el nombre:
fuente
--
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.--
método funciona ya que "desactiva" el análisis de argumentos.--
.generalmente funciona bastante bien aquí (y también con otros comandos)
fuente
Poner el nombre entre comillas debería funcionar.
fuente
-
como un carácter de opción. Pero no hay forma de que las citas puedan cambiar este comportamiento.