Si está trabajando en un script de Bash que interactúa con archivos y directorios, es posible que se encuentre en una situación en la que necesite asegurarse de que el archivo o directorio existe. Esto ayuda a evitar posibles errores al realizar ciertas acciones en un archivo que no existe.
En este tutorial, le mostraré un par de formas de verificar si el archivo o directorio existe en el script bash o no. Comencemos con el archivo primero.
Comprobar si el archivo existe en bash script
La idea aquí es usar el operador -f que devuelve verdadero solo cuando es un archivo normal (no un directorio).
Digamos que desea verificar si el archivo /home/user/my_file existe o no. Así es como puede verificar con corchetes
#!/bin/bash
if [ -f /home/user/my_file ]
then
echo "My file exists"
fi
Pero no siempre obtendrá el nombre del archivo de antemano, ¿verdad? Puede tenerlo en una variable y, si ese es el caso, puede usarlo de esta manera.
#!/bin/bash
FILE=/home/user/my_file
if [ -f "$FILE" ]
then
echo "My file exists"
else
echo "My file doesn't exist"
fi
Básicamente, lo que importa es la condición que usas en el comando if. Depende de usted cómo quiere usar la instrucción if.
Por ejemplo, puede escribirlo con dos corchetes, mantener 'entonces' en la misma línea que 'si' con la ayuda de un punto y coma como este:
#!/bin/bash
FILE=/home/user/my_file
if [ -f "$FILE" ]; then
echo "My file exists"
else
echo "My file doesn't exist"
fi
o ponga la declaración completa así:
[ -f /home/user/my_file ] && echo "My file exists" || echo "My file doesn't exist"
Comprobar que el archivo existe en bash con test
También puede usar la prueba en bash para ver si el archivo existe o no. Es más o menos lo mismo solo que no usa los corchetes en la declaración if:
#!/bin/bash
FILE=/home/user/my_file
if test -f "$FILE"
then
echo "My file exists"
else
echo "My file doesn't exist"
fi
También puede usar el código anterior en una sola línea como esta:
test -f /home/user/my_file && echo "My file exists" || echo "My file doesn't exist"
Comprobar si el archivo no existe en bash script
¿Qué sucede si es al revés y desea verificar si el archivo no existe en bash? Puede usar prácticamente el mismo código que el anterior usando el operador de negación:
#!/bin/bash
FILE=/home/user/my_file
if [ ! -f "$FILE" ]
then
echo "My file doesn't exist"
fi
Ahora que sabe cómo manejar archivos, pasemos a los directorios.
Comprobar si el directorio existe en bash script
El código para verificar el directorio es el mismo que viste en la sección anterior. La única diferencia es que usará -d en lugar de -f. -d devuelve verdadero solo para directorios.
#!/bin/bash
if [ -d /home/user/my_dir ]
then
echo "My directory exists"
fi
También puede usar la prueba aquí:
#!/bin/bash
DIR=/home/user/my_dir
if test -d "$DIR"
then
echo "My directory exists"
else
echo "My directory doesn't exist"
fi
Comprobar si el directorio no existe en bash
Puede usar la negación nuevamente para verificar si el directorio no existe:
#!/bin/bash
DIR=/home/user/my_dir
if [ ! -d "$DIR" ]
then
echo "My directory doesn't exist"
fi
Eso es todo. Eso es todo lo que necesita hacer para verificar si existe un directorio de archivos en bash shell o no.
Espero que encuentre útil este consejo bash. Si tiene alguna pregunta o sugerencia, no dude en dejar un comentario a continuación.