Cómo comprobar si existe un archivo o directorio en un script de Bash Shell

Comprobando si existe un archivo o directorio desde un script Bash

Bash se usa para automatizar comandos que se ejecutan regularmente en Linux. Los comandos que están destinados a operaciones en archivos / directorios se utilizan con bastante frecuencia y, por lo general, antes de ejecutar dicho comando, debemos verificar si existe el archivo o directorio en particular. Veamos cómo realizar esta comprobación.

Sintaxis y uso

Archivos

Para comprobar si existe un archivo, use la siguiente sintaxis:

[-f]

La expresion [-f] devuelve 0, es decir, éxito si existe, y si no existe, devuelve un estado distinto de cero. Normalmente, esto se utiliza como una condición en el Si declaración.

si [-f] entonces fi

Para negar el valor devuelto, simplemente preceda al -F con un operador de negación (!).

Si [ ! -f] luego fi

En este caso, la condición se cumplirá si el archivo no existe, ya que el estado devuelto distinto de cero (falso) se negará y se considerará 0 (verdadero).

Tenga en cuenta que si el archivo que se va a verificar no existe en el directorio actual y existe en algún otro directorio, se debe mencionar la ruta completa del archivo en lugar de solo el nombre del archivo.

Directorios

Se utiliza una sintaxis similar a la utilizada para verificar archivos para verificar directorios.

[ -D  ]

Similar a la declaración para archivos, esta declaración devuelve 0, es decir, éxito, si el directorio existe y un valor distinto de cero, es decir, se devuelve el estado de falla si no existe. Esto también se usa comúnmente en un Si condición de declaración.

si [-d] entonces fi

Para negar el estado devuelto, preceda al -D con un operador de negación (!).

Si [ ! -d] luego fi

La condición cumplirá (estado 0) en este caso si el directorio no existe, y fallará (estado distinto de cero) si el directorio existe.

Como se mencionó anteriormente para los archivos, si el directorio que se va a verificar existe en otra ubicación y no en el directorio actual, se debe ingresar la ruta completa del directorio en lugar de solo el nombre del directorio.

💡 La sintaxis de corchetes ( [...] ) utilizado aquí es en realidad un comando de Linux llamado prueba. Las opciones -F y -D son las características de este comando. Para obtener más información, consulte la página del manual de prueba ( prueba de hombre ).

Verificar desde un script Bash

En los ejemplos anteriores, hemos utilizado las sintaxis directamente en la terminal. El shell siempre que encuentra un bucle o una declaración condicional (Si en nuestro caso), continúa el mensaje y permite que el usuario ingrese y continúe el bloque.

Se pueden usar las mismas sintaxis desde dentro de un script Bash.

El #! / bin / bash at the start especifica el intérprete que se utilizará cuando se ejecute el archivo. Aunque Bash es el shell más utilizado hoy en día, algunos usuarios prefieren shells como zsh, que debe especificarse en lugar de bash al comienzo de este archivo.

Para dar permisos de ejecución para este archivo, ejecute:

chmod + x test.sh

Por fin, para ejecutar el archivo, correr:

./test.sh