Ayúdanos a seguir proporcionándote tutoriales gratuitos y de calidad desactivando tu bloqueador de anuncios. suscriptores a nuestro sitio.

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

27 feb 2021 2 min di lettura
Cómo comprobar si existe un archivo o directorio en Bash
Tabla de contenidos

Introducción

Muchas veces, al escribir scripts de Shell, puede encontrarse en una situación en la que necesite realizar una acción en función de si existe o no un archivo.

En Bash, puede usar el comando de prueba para verificar la existencia de un archivo y determinar el tipo de archivo.

El comando de prueba utiliza una de las siguientes formas de sintaxis:

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

Si desea que su script sea portátil, debería preferir usar el antiguo [ test que está disponible en todos los shells POSIX. La nueva versión actualizada del [[ (doble paréntesis) es compatible con la mayoría de los sistemas modernos que utilizan Bash, Zsh y Ksh como shell predeterminado.

Compruebe si el archivo existe

Al comprobar si existe un archivo, los operadores FILE más utilizados son -e y -f. El primero verificará si existe un archivo independientemente de su tipo, mientras que el segundo solo devolverá verdadero si el ARCHIVO es un archivo normal (no un directorio o dispositivo).

La opción más legible al comprobar si existe o no un archivo es utilizar el comando de prueba en combinación con la instrucción if. Los siguientes scripts comprobarán si existe el archivo /etc/resolv.conf

FILE=/etc/resolv.conf
 if test -f "$FILE"; then
 echo "$FILE exist"
 fi
FILE=/etc/resolv.conf
 if [ -f "$FILE" ]; then
 echo "$FILE exist"
 fi
FILE=/etc/resolv.conf
 if [[ -f "$FILE" ]]; then
 echo "$FILE exist"
 fi

Si desea realizar una acción diferente en función de si el archivo existe o no, simplemente use la construcción if /then:

FILE=/etc/resolv.conf
 if [ -f "$FILE" ]; then
 echo "$FILE exist"
 else
 echo "$FILE does not exist"
 fi

Utilice siempre comillas dobles para evitar problemas al trabajar con archivos que contengan espacios en blanco en sus nombres.

También puede usar el comando de prueba sin la instrucción if. El comando después del && se ejecutará solo si el estado de salida del comando de prueba es verdadero,

test -f /etc/resolv.conf && echo "$FILE exist"
[ -f /etc/resolv.conf ] && echo "$FILE exist"
[[ -f /etc/resolv.conf ]] && echo "$FILE exist"

Si desea ejecutar una serie de comandos después de que el && simplemente encierre los comandos entre llaves separadas por ; o &&:

[ -f /etc/resolv.conf ] && { echo "$FILE exist"; cp "$FILE" /tmp/; }

Después de &&, la declaración que sigue al

Apóyenos si le gusta nuestro contenido. Gracias.

Buy me a coffeeBuy me a coffee

Únase a la conversación

Apóyenos con una donación.

Genial! A continuación, complete el pago para obtener acceso completo a Noviello.it.
Bienvenido de nuevo! Has iniciado sesión correctamente.
Te has suscrito correctamente a Noviello.it.
Éxito! Su cuenta está completamente activada, ahora tiene acceso a todo el contenido.
Éxito! Su información de facturación ha sido actualizada.
Su facturación no se actualizó.