¿Cómo crear un directorio llamado '-p' en Linux con Bash? [duplicar]


22

En Bash, ¿cómo podría crear un directorio llamado -p?

mkdir -pha fallado.
mkdir "-p"ha fallado.
mkdir "\-p"ha fallado.
mkdir \-pha fallado.


1
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.


3
Increíble. Esto es realmente bueno saberlo
Bruno9779

18

mkdir ./-p

Tenga en cuenta que la mayoría de los otros programas tendrían que usar el mismo "truco".

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.