Linux / Comando / mkdir / Comando para crear directorios

En Linux, mkdir es el comando para crear un nuevo directorio. Para crear una ruta de varios niveles de una vez, use -p, que le permite mantener los directorios existentes tal como están mientras crea cualquier directorio padre que falte.

Creando y comprobando directorios

mkdir es la abreviatura de la expresión inglesa make directory (crear directorio). El siguiente comando crea un directorio con el nombre projects en el directorio actual si no existe y verifica el resultado. Ejecútalo en un directorio de práctica vacío para evitar confusiones con datos existentes.

pwd
mkdir projects
ls -ld projects

Primero, verifica la ubicación de trabajo actual con pwd, y luego verifica si la información del nuevo directorio se muestra en ls -ld. mkdir usualmente no muestra ningún mensaje si tiene éxito. Si un archivo o directorio con el mismo nombre ya existe, el comando predeterminado muestra un error.

Las rutas relativas se basan en la ubicación actual, y las rutas absolutas que comienzan como /, como /home/user/projects, se especifican desde el directorio raíz. Verifique la ruta real y los permisos de acceso según su entorno.

Crear junto con los directorios padre

El siguiente comando crea los directorios padre necesarios si no existen. Por ejemplo, si work no existe en la ubicación de práctica, creará work, work/reports y work/reports/2024 en orden.

mkdir -p work/reports/2024
ls -ld work work/reports work/reports/2024

Si ejecutas mkdir work/reports/2024 sin -p, fallará cuando la ruta padre no exista. Agregar -p no causará un error solo porque la ruta ya exista como un directorio. No elimina contenidos existentes ni cambia los permisos del directorio existente.

Sin embargo, si hay un archivo regular con el mismo nombre en medio de la ruta o si no tienes los permisos necesarios para el directorio padre, puede fallar incluso si usas -p. Verifica el mensaje de error, el estado de salida y la ruta real juntos para confirmar el éxito.

Múltiples directorios y nombres con espacios

Puede enumerar nombres separados por espacios para crear múltiples directorios. El siguiente es un ejemplo cuando los dos nombres aún no existen en la ubicación actual.

mkdir documents images
ls -ld documents images

Si el nombre en sí contiene espacios, coloque toda la ruta entre comillas para pasarlo como un solo nombre. Si no hay comillas, el shell lo dividirá en los espacios y los pasará como argumentos separados.

mkdir "project files"
ls -ld "project files"

Los nombres que comienzan con un guion pueden ser interpretados como opciones. Por ejemplo, mkdir -- -archive coloca el nombre después de --, por lo que no se trata como una opción.

Verifique los permisos y resultados al crear

Generalmente, los permisos predeterminados de un nuevo directorio están afectados por el umask de la shell actual y la configuración del sistema de archivos. Verifica la máscara actual con umask y comprueba los permisos reales del directorio creado con ls -ld.

También puedes establecer los permisos de un directorio recién creado usando la opción -m de GNU mkdir. El siguiente es un ejemplo donde se conceden permisos de lectura, escritura y ejecución al propietario y no se otorgan permisos al grupo ni a otros cuando private aún no existe.

mkdir -m 700 private
ls -ld private

Incluso si -p y -m se usan juntos, -m se aplica al nuevo directorio especificado en la línea de comandos y no se aplica a los directorios padre creados automáticamente. Tampoco aplica nuevos permisos a los directorios que ya existen. Las listas de control de acceso o las políticas del sistema de archivos pueden afectar el acceso real, por lo que se recomienda verificar los resultados en el entorno necesario. Para el comportamiento detallado de las opciones, consulte el manual GNU mkdir.

Cuando la creación falla

  • Ya existe: Use ls -ld name para comprobar si el elemento existente es un archivo o un directorio. -p es apropiado solo si desea usar el directorio existente tal como está.
  • Ruta padre no encontrada: Verifique la ortografía de la ruta y su ubicación actual, luego decida si puede crear los directorios padre que faltan usando -p.
  • Permiso denegado: Verifique si tiene los permisos necesarios de escritura y acceso para el directorio padre y solicítelos al administrador si es necesario.

Puede eliminar un directorio vacío creado durante la práctica con rmdir después de confirmar que no contiene contenido. rmdir generalmente no elimina directorios que no están vacíos.