Bash comprobar si el archivo existe

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.

Write a Comment

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