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 , utilice la siguiente sintaxis:
[ -f ]
La expresión [ -f ]
devuelve 0, es decir, éxito si existe, y si no existe, devuelve un estado distinto de cero. Normalmente, esto se utiliza como condición en la if
declaración.
if [ -f ]
then
fi
Para negar el valor devuelto , simplemente preceda el -f
con un operador de negación ( !
).
if [ ! -f ]
then
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 un estado de falla si no existe. Esto también se usa comúnmente en una if
condición de declaración.
if [ -d ]
then
fi
Para negar el estado devuelto, anteponga -d
un operador de negación ( !
).
if [ ! -d ]
then
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 ( [...]
) que se usa aquí es en realidad un comando de Linux llamado test
. 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 test ( man test
).
Verificar desde un script Bash
En los ejemplos anteriores, hemos utilizado las sintaxis directamente en la terminal. El shell cada vez que encuentra un bucle, o una declaración condicional ( if
en nuestro caso), continúa el mensaje y permite al usuario ingresar y continuar el bloque.
Se pueden usar las mismas sintaxis desde dentro de un script Bash.
El #!/bin/bash
al principio 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 deberían especificarse en lugar de bash al comienzo de este archivo.
Para otorgar permisos de ejecución para este archivo, ejecute:
chmod +x test.sh
Finalmente, para ejecutar el archivo , ejecute:
./test.sh