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:
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:
-
-bFILE: verdadero si el ARCHIVO existe y es un archivo de bloque especial. -
-cFILE– verdadero si el ARCHIVO existe y es un archivo de caracteres especiales. -
-dFILE: verdadero si el ARCHIVO existe y es un directorio. -
-eFILE: verdadero si el ARCHIVO existe y es un archivo, independientemente del tipo (nodo, directorio, socket, etc.). -
-fFILE: verdadero si el ARCHIVO existe y es un archivo normal (no un directorio o dispositivo). -
-GFILE: verdadero si el ARCHIVO existe y tiene el mismo grupo que el usuario que ejecuta el comando. -
-hFILE: verdadero si el ARCHIVO existe y es un enlace simbólico. -
-gFILE: verdadero si el ARCHIVO existe y tiene el indicador set-group-id (sgid). -
-kFILE– 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. -
-OFILE– Verdadero si el ARCHIVO existe y es propiedad del usuario que ejecuta el comando. -
-pFILE– Verdadero si el ARCHIVO existe y es una tubería. -
-rFILE– Verdadero si el ARCHIVO existe y es legible. -
-SFILE: verdadero si el ARCHIVO existe y es un socket. -
-sFILE: verdadero si el ARCHIVO existe y tiene un tamaño distinto de cero. -
-uFILE: verdadero si el ARCHIVO existe y el indicador set-user-id (suid) está establecido. -
-wFILE: verdadero si el ARCHIVO existe y se puede escribir. -
-xFILE: 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.