Tenga en cuenta que todos estos están intentando escapar del parámetro para bash. Dado que es el mismo escape que no, todos estos, excepto el tercero, simplemente enviarán la cadena "-p" a mkdir, que lo analizará como una opción. La opción de análisis no se realiza en bash, por lo que cualquier forma de evitar esto (descrita en las respuestas a continuación) es una característica de mkdir (o más bien, una falta de error).
Score_Under
11
Tengo que preguntar por qué quieres un directorio así. Sería un PITA de usar.
Daniel R Hicks
3
@DanielRHicks: Creé esta carpeta por error, pero no sé cómo eliminarla.
Jichao
44
Entonces, ¿no debería ser la pregunta "Cómo eliminar un directorio llamado '-p' en Linux con Bash"?
chepner
@chepner: Porque en realidad son los mismos problemas. Traté de eliminar el directorio rmdirpero fallé con los mismos errores.
Jichao
Respuestas:
40
La mayoría de las utilidades (todas las que cumplen con POSIX excepto testy echo) admiten una opción de "fin de opciones"-- , por lo que puede ejecutar:
mkdir ---p
Esto es especialmente útil al renombrar o eliminar archivos que potencialmente podrían comenzar con un guión. En los scripts siempre debes usar
mv --"$filename"
en lugar de un mv "$filename"nombre de archivo simple o, peor aún, sin comillas.
rmdir
pero fallé con los mismos errores.Respuestas:
La mayoría de las utilidades (todas las que cumplen con POSIX excepto
test
yecho
) admiten una opción de "fin de opciones"--
, por lo que puede ejecutar:Esto es especialmente útil al renombrar o eliminar archivos que potencialmente podrían comenzar con un guión. En los scripts siempre debes usar
en lugar de un
mv "$filename"
nombre de archivo simple o, peor aún, sin comillas.fuente
mkdir ./-p
Tenga en cuenta que la mayoría de los otros programas tendrían que usar el mismo "truco".
fuente