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:
-
-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.