Androide

Cómo verificar si un archivo o directorio existe en bash

Linux: Saber si existe un directorio o fichero

Linux: Saber si existe un directorio o fichero

Tabla de contenido:

Anonim

Muchas veces al escribir scripts de Shell, puede encontrarse en una situación en la que necesita 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:

test EXPRESSION]

Comprobar si el archivo existe

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

La opción más legible cuando se verifica si un archivo existe o no es usar el comando de prueba en combinación con la instrucción if. Cualquiera de los fragmentos a continuación verificará 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; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if]; 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; then echo "$FILE exist" else echo "$FILE does not exist" fi 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, test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

&& { echo "$FILE exist"; cp "$FILE" /tmp/; }

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

&& echo "$FILE exist" || echo "$FILE does not exist"

Compruebe si existe el directorio

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

Por ejemplo, para verificar si existe el directorio /etc/docker , usaría:

FILE=/etc/docker if; then echo "$FILE is a directory" fi

&& echo "$FILE is a directory"

También puede usar los corchetes dobles , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

Compruebe si el archivo no existe

Al igual que muchos otros idiomas, la expresión de prueba se puede negar usando el ! (signo de exclamación) lógico no operador:

FILE=/etc/docker if; then echo "$FILE does not exist" fi

Lo mismo que arriba:

&& echo "$FILE does not exist"

Compruebe si existen varios archivos

En lugar de usar construcciones if / else complicadas anidadas, puede usar -a (o && with ; then echo "$FILE is a directory" fi

FILE=/etc/docker if; then echo "$FILE is a directory" fi

Variantes equivalentes sin usar la instrucción IF:

&& echo "both files exist"

] && echo "both files exist"

Operadores de prueba de archivos

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 especial de bloque. -c FILE : verdadero si el ARCHIVO existe y es un archivo de caracteres especial. -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 establecido el indicador de grupo-id (sgid). -k FILE - Verdadero si el ARCHIVO existe y tiene un indicador de bit fijo establecido. -L FILE - 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 socket. -s FILE : verdadero si el ARCHIVO existe y tiene un tamaño distinto de cero. -u FILE - Verdadero si existe y se establece el indicador set-user-id (suid). -w FILE : verdadero si el ARCHIVO existe y se puede escribir. -x FILE : verdadero si el ARCHIVO existe y es ejecutable.

Conclusión

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

terminal de bash