La mayoría de las veces, podemos encontrar una situación en la que necesitemos realizar una acción que verifique si un archivo existe o no.
En Bash, podemos usar un «comando de prueba» para verificar si un archivo existe y determinar el tipo de archivo.
A continuación se muestran las sintaxis del comando de prueba, y puede usar cualquiera de estos comandos:
Debemos usar un solo comando «[» para hacer que nuestro script sea portátil para todos los shells POSIX. La versión mejorada del comando de prueba contiene corchetes dobles «[[» que es compatible con la mayoría de los sistemas modernos que utilizan Bash, Zsh y Ksh como shell predeterminado.
Comprobar si el archivo existe
Al comprobar si existe un archivo, los operadores de archivo más utilizados son -e y -f. La opción «-e» se usa para verificar si un archivo existe independientemente del tipo, mientras que la opción «-f» se usa para devolver el valor verdadero solo si el archivo es un archivo normal (no un directorio o un dispositivo).
La opción más común para verificar si el archivo existe o no es usar el comando de prueba con la «instrucción condicional if».
A continuación se muestran los ejemplos para verificar si el archivo «read_file. txt «existe:
Método 1
Método 2
Método 3
Salida
La salida para los tres métodos será la siguiente porque tenemos un archivo (read_file.txt) presente en el directorio:
read_file.txt exist
Si queremos realizar una acción que proporcionará un resultado basado en si el archivo existe o no, podemos usar la construcción if / then en el de la siguiente manera:
Ejemplo
Salida
read_file.txt exist
También podemos usar el comando test sin la instrucción if. Podemos utilizar cualquiera de los siguientes métodos:
Método 1
Método 2
Método 3
Salida
La salida para los tres métodos será la siguiente porque tenemos un archivo (read_file.txt) presente en el directorio:
read_file.txt exist
Ejemplo
A diferencia de & &, la declaración después de || El operador se ejecuta solo si el estado de salida del comando de prueba es «falso».
Ejemplo
Salida
read_file.txt exist
Estos son los métodos comúnmente usados en Bash para verificar si el archivo existe o no.
Verificar si el directorio existe
El operador «-d» nos permite probar si un archivo es un directorio o no.
A continuación se muestran los métodos para verificar si el directorio «Javatpoint» existe:
Método 1
Método 2
Nota: También podemos usar corchetes dobles «[[» en lugar de un solo corchete «[» .
Salida
La salida para ambos métodos anteriores será la siguiente, ya que tenemos un directorio (llamado Javatpoint) presente en la ubicación especificada:
Javatpoint is a directory
Verificar si el archivo no existe
La expresión de prueba se puede negar usando el signo de exclamación (! -operador NOT lógico). Vea el siguiente ejemplo:
Ejemplo
El script anterior también se puede escribir de la siguiente manera:
Salida
missing_read_file.txt unavailable
Operadores de prueba de archivo
Los comandos de prueba incluyen los siguientes operadores de archivo que nos permiten prueba para tipos particulares de archivos:
-b FileReturns | «True» si el ARCHIVO existe como un bloque especial file. |
-c FileReturns | «Verdadero» si el ARCHIVO existe como un archivo de caracteres especiales. |
-d FileReturns | «Verdadero» si el ARCHIVO existe como un directorio. |
-e FileReturns | «Verdadero «si el ARCHIVO existe como un archivo, independientemente del tipo (nodo, directorio, conector, etc.). |
-f FileReturns | » Verdadero » si el ARCHIVO existe como un archivo normal (no como un directorio o dispositivo). |
-G FileReturns | «Verdadero» si el ARCHIVO existe y contiene el mismo grupo que el usuario está ejecutando la comunicación y. |
-h FileReturns | «Verdadero» si el ARCHIVO existe como un enlace simbólico. |
-g FileReturns | «Verdadero» si el ARCHIVO existe y contiene el conjunto de indicadores set-group-id (sgid). |
-k FileReturns | «Verdadero» si el ARCHIVO existe y contiene un conjunto de indicadores de bits adhesivos. |
-L FileReturns | «Verdadero» si el ARCHIVO existe como un enlace simbólico. |
-O FileReturns | «Verdadero» si el ARCHIVO existe y es propiedad del usuario que está ejecutando el comando. |
-p FileReturns | «Verdadero» si el ARCHIVO existe como una tubería. |
– r FileReturns | «True» si el ARCHIVO existe como un archivo legible. |
-S FileReturns | «True» si el FILE existe como un socket. |
-s FileReturns | «Verdadero» si el ARCHIVO existe y tiene un tamaño distinto de cero. |
-u FileReturns | «True» si el ARCHIVO existe y el indicador set-user-id (suid) está establecido. |
-w FileReturns | «Verdadero» si el ARCHIVO existe como un archivo grabable. |
-x FileReturns | «Verdadero» si el ARCHIVO existe como un archivo ejecutable. |