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