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

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 un archivo existe o no .

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

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

Si desea que su script sea portátil, debería preferir usar la prueba anterior ; then echo "$FILE exists."fi

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

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

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

Si quieres ejecute una serie de comandos después de que el operador && simplemente encierre los comandos entre corchetes separados por ; o &&:

Opuesto a &&, la declaración después de El operador || solo se ejecutará si el estado de salida del comando de prueba es false.

Verificar si el directorio existe #

Los operadores -d le permiten probar si un archivo es un directorio o no.

Por ejemplo, para comprobar si el directorio /etc/docker existe, debe utilizar:

También puede utilizar los corchetes dobles ; then echo "$FILE does not exist."fi

Igual que el anterior:

Verifique si existen varios archivos #

En lugar de usar complicadas construcciones anidadas if / else, puede usar -a (o && con ; then echo "Both files exist."fi

Variantes equivalentes sin usar la instrucción IF:

Operadores de prueba de archivo #

El comando de prueba incluye los siguientes operadores de ARCHIVO que le permiten probar tipos particulares de archivos:

  • -b FILE: verdadero si el ARCHIVO existe y es un archivo de bloque especial.
  • -c FILE – verdadero si el ARCHIVO existe y es un archivo de caracteres especiales.
  • -d FILE: verdadero si el ARCHIVO existe y es un directorio.
  • -e FILE: verdadero si el ARCHIVO existe y es un archivo, independientemente del tipo (nodo, directorio, socket, etc.).
  • -f FILE: verdadero si el ARCHIVO existe y es un archivo normal (no un directorio o dispositivo).
  • -G FILE: verdadero si el ARCHIVO existe y tiene el mismo grupo que el usuario que ejecuta el comando.
  • -h FILE: verdadero si el ARCHIVO existe y es un enlace simbólico.
  • -g FILE: verdadero si el ARCHIVO existe y tiene el indicador set-group-id (sgid).
  • -k FILE – Verdadero si el ARCHIVO existe y tiene un indicador de bit adhesivo establecido.
  • -L : verdadero si el ARCHIVO existe y es un enlace simbólico.
  • -O FILE – Verdadero si el ARCHIVO existe y es propiedad del usuario que ejecuta el comando.
  • -p FILE – Verdadero si el ARCHIVO existe y es una tubería.
  • -r FILE – Verdadero si el ARCHIVO existe y es legible.
  • -S FILE: verdadero si el ARCHIVO existe y es un socket.
  • -s FILE: verdadero si el ARCHIVO existe y tiene un tamaño distinto de cero.
  • -u FILE: verdadero si el ARCHIVO existe y el indicador set-user-id (suid) está establecido.
  • -w FILE: verdadero si el ARCHIVO existe y se puede escribir.
  • -x FILE: verdadero si el ARCHIVO existe y es exe cutable.

Conclusión #

En esta guía, le mostramos cómo verificar si un archivo o directorio existe en Bash.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *