Al principio , solo existía el mkdircomando desnudo . De acuerdo con los principios de diseño de Unix, este comando simple realizó una tarea simple: crear un directorio.
Más tarde, mkdiradquirió una -popción para manejar un caso de uso común en el que la persona que llama desea crear cero, uno o más directorios para garantizar que exista una ruta en particular. Esto no se convirtió en la operación predeterminada por varias razones. Primero, no todos los sistemas tenían esta característica más compleja, y requerir la -popción significaba que los scripts que la usaban obtendrían un mensaje de error razonable (algo así mkdir: invalid option -z) en lugar de fallar extrañamente en la creación de directorios ocasionalmente. En segundo lugar, y lo más importante, el comportamiento de mkdir -pno es un reemplazo compatible mkdiren todos los casos.
En particular, en la mayoría de los sistemas de archivos, mkdires una operación atómica . Si se ejecuta un programa mkdir playgroundy el comando tiene éxito, el programa sabe que creó el playgrounddirectorio. Esto permite que el programa trate el nuevo directorio como su área de juegos exclusiva: si otra instancia del mismo programa se ejecuta simultáneamente, su llamada a mkdir playgroundfallará. Obviamente, esta propiedad no se proporciona mkdir -pya que permite que exista el argumento.
Si mkdir -phubiera existido desde el principio, podría haberse convertido en el modo predeterminado, con algo así como mkdir -apara el comando de creación de un solo directorio. Pero eso no habría seguido la filosofía habitual de diseño de Unix: la mayoría de las utilidades básicas son envoltorios simples alrededor de las primitivas subyacentes, con un comportamiento más sofisticado (como crear múltiples directorios de una vez) que requieren opciones sofisticadas.
alias mkdir="mkdir -p".