Ejecute Mkdir solo cuando el directorio no exista

Abdullah Bukhari 15 febrero 2024
  1. el comando mkdir y su propósito
  2. Crear directorios con mkdir
  3. Crear directorios con mkdir solo cuando no existen
  4. Usar mkdir con una estructura de control if
Ejecute Mkdir solo cuando el directorio no exista

Este artículo habla sobre mkdir y su uso en la creación de directorios. Además, analiza formas de usar mkdir cuando el directorio que queremos crear no existe.

el comando mkdir y su propósito

El comando mkdir en Unix/bash significa directorio make. Permite a los usuarios crear carpetas, establecer permisos y mucho más.

El usuario que ejecuta el comando mkdir debe tener suficientes privilegios para crear un directorio en la ruta especificada, o el usuario puede recibir un error de permiso denegado.

Crear directorios con mkdir

La sintaxis general para mkdir es la siguiente:

mkdir <specified_option> directory_name
sudo mkdir <specified_option> directory_name # in case user doesn’t have permissions

mkdir también permite la creación de múltiples directorios a la vez. Para hacerlo, agregue nombres de directorio separados por comas entre corchetes.

Asegúrese de no incluir espacios adicionales en los nombres de los directorios, o los directorios incluirán los espacios en sus nombres. El siguiente comando demuestra lo que dijimos:

mkdir {dir1,dir2,dir3} # here directory names are dir1, dir2 and dir3

Crear directorios con mkdir

Crear directorios con mkdir solo cuando no existen

Un problema al usar mkdir es un error cuando el directorio que uno está tratando de crear ya existe. No es un gran problema ejecutar el comando bash ya que mkdir crea un directorio si no existe; de lo contrario, solo da un error apropiado.

Sin embargo, hay un giro. Suponga que está tratando de codificar un bash shell personalizado y no quiere que mkdir dé un error al intentar recrear un archivo existente. ¿Qué harás despues?

Vamos a explicar varias formas de prevenir lo anterior.

[[ -d dir_name ]] || mkdir dir_name # option 1
mkdir -p dir_name # option 2
mkdir dir_name 2>/dev/null # option 3

Crear directorios con mkdir solo cuando no existen

La primera opción y la tercera opción son más recomendables que la segunda, ya que la segunda podría encontrarse en condiciones de carrera durante la ejecución concurrente. En cuanto al tercero, redirige la salida de stderror a un archivo dev/null.

Si ha estudiado sistemas operativos, existe el concepto de la tabla ppfdt (tabla de descriptores de archivos de procesos). Recuerde que, de forma predeterminada, el descriptor cero apunta a stdin, un descriptor apunta a stdout y dos descriptores apuntan a stderror.

/dev/null es un archivo de dispositivo nulo, que descartará cualquier cosa escrita en él y devolverá un carácter de fin de archivo al leerlo. Es como una aspiradora, que aspira cualquier cosa que se le arroje.

Dicho esto, aquí puede redirigir stderror a cualquier archivo no utilizado de su elección, pero se recomienda más /dev/null.

Usar mkdir con una estructura de control if

Otra forma de hacerlo podría girar en torno al uso de una estructura de control if. Puede verificar si el directorio existe y, si no, luego proceder a crearlo; de lo contrario, no hagas nada.

El siguiente script lo explica con más detalle:

if [ ! -d dir_name ]; then mkdir dir_name; fi

Usando mkdir con una estructura de control if

Artículo relacionado - Bash Directory