Bash Check if File Exists – Tutorial y comandos para usar

Al crear un script de bash, es posible que encuentre una situación en la que necesite averiguar si un archivo existe o no para realizar alguna acción con él. Puede usar el comando de prueba para verificar si el archivo existe y qué tipo es.

En este tutorial, le mostraremos cómo verificar si el archivo existe en los sistemas operativos basados en Linux.

Sintaxis básica del comando de prueba

La sintaxis básica del comando de prueba para verificar si el archivo existe como se muestra a continuación:

test -e file

O

test -f file

Donde:

  • -e
    Esta opción verificará si un archivo existe independientemente del tipo.
  • -f
    Esta opción verificará si un archivo existe solo si el ARCHIVO es un archivo normal.

Debería ver la página de manual del comando de prueba como se muestra a continuación:

man test

Debería ver la siguiente pantalla :

Pruebe si el archivo existe usando la línea de comandos

En esta sección, le mostraremos cómo verificar si el archivo existe usando la línea de comando:

Ejecute el siguiente comando para verificar si existe un archivo llamado / etc / fstab (T rue):

test -f /etc/fstab

A continuación, ejecute el siguiente comando para establecer el código de salida en 0 o 1, siempre que la prueba haya tenido éxito o no.

echo $?

Salida:

0

El resultado es 0, lo que significa que el archivo / etc / fstab existe.

También puede use el siguiente comando para verificar si el archivo existe:


echo $0

Salida:

0

A continuación, ejecute el siguiente comando para probar si el archivo / etc / fabab existe ( Falso).

test -f /etc/fabab
echo $?

Resultado:

1

La salida es 1, lo que significa que el archivo / etc / fabab no existe.

Usted también puede probar si un archivo llamado /etc/rc.local existe o no usa la ejecución condicional de bash como se muestra a continuación:

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

O

&& echo "Exists" || echo "Not Exists"

Si el archivo llamado /etc/rc.local existe, debería ver el siguiente resultado:

Exists

También puede verificar si existen varios archivos o no con un solo comando:

&& echo "both files exist"

O

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

Debería ver el siguiente resultado:

both files exist

Prueba si el archivo existe en Bash

En esta sección, crearemos un script bash y comprobaremos si un archivo existe o no, imprimiendo un mensaje.

Creemos un archivo llamado test.sh y verifiquemos si un archivo /etc/rc.local existe o no:

nano test.sh

Agregue las siguientes líneas:

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Guarde y cierre el archivo y luego ejecute el script con el siguiente comando:

bash test.sh

Debería ver el siguiente resultado:

The file "/etc/rc.local" exists.

Ahora, creemos un archivo test.sh y probemos si el archivo / etc / rc.localad existe de no:

nano test.sh

Agregue las siguientes líneas:

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Guarde y cierre el archivo y luego ejecute el script con el siguiente comando:

bash test.sh

Debería ver el siguiente resultado:

The file "/etc/rc.localad" is not exists.

También puede encontrar si un archivo existe o no y realizar alguna acción sobre él en el script bash.

Por ejemplo, busque un archivo llamado / etc / hosts y cópielo en el directorio / opt si el archivo existe.

Para hacerlo, cree un archivo llamado test.sh:

nano test.sh

Agregue las siguientes líneas:

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

Guarde y cierre el archivo y luego ejecute el script usando el siguiente comando:

Ahora, pruebe el directorio / opt con el siguiente comando:

ls /opt/hosts

Debería ver el archivo de hosts en la siguiente salida:

/opt/hosts

¡También puedes usar la expresión! para verificar si el archivo no existe.

Por ejemplo, ejecute el siguiente comando para verificar si el archivo / etc / hosting no existe:

&& echo "File does not exist"

O

test ! -f /etc/hosting && echo "File does not exist"

Debería ver el siguiente resultado:

File does not exist

Probar si el directorio existe

También puede averiguar si un directorio existe o no utilizando la opción -d.

Por ejemplo, compruebe si el directorio / etc / apache2 existe o no.

&& echo "Directory is exists"

O

test -d /etc/apache2 && echo "Directory is exists"

Debería ver el siguiente resultado:

Directory is exists

También puede crear un script bash con expresiones condicionales para verificar si un directorio existe o no.

Cree un archivo llamado test.sh como se muestra a continuación:

nano test.sh

Agregue las siguientes líneas:

Guarde y cierre el archivo cuando haya terminado. Luego, otorgue el permiso adecuado con el siguiente comando:

chmod 755 test.sh

A continuación, pruebe si el directorio / etc / nginx está disponible o no con el siguiente comando:

./test.sh /etc/nginx

Debería ver el siguiente resultado:

Directory /etc/nginx/ exists.

A continuación, pruebe si el directorio / etc / linux está disponible o no con el siguiente comando:

./test.sh /etc/linux

Debería ver el siguiente resultado:

Directory /etc/linux does not exists

Operadores de prueba de archivos en Bash

Los siguientes operadores de prueba de archivos le ayudarán a verificar si un «archivo» existe y tiene tipos específicos:

  • -b
    FILE existe y es especial de bloque
  • -c
    FILE existe y es de carácter especial
  • -d
    FILE existe y es un directorio
  • -e
    FILE existe
  • -f
    FILE existe y es un archivo normal
  • -g
    FILE existe y es set-group-ID
  • -G
    FILE ex ists y es propiedad del ID de grupo efectivo
  • -h
    FILE existe y es un enlace simbólico (igual que -L)
  • -k
    FILE existe y tiene su conjunto de bits adhesivos
  • -L
    FILE existe y es un enlace simbólico (igual que -h)
  • -O
    FILE existe y es propiedad del usuario efectivo ID
  • -p
    FILE existe y es una canalización con nombre
  • -r
    FILE existe y se otorga permiso de lectura
  • -s
    FILE existe y tiene un tamaño mayor que cero
  • -S
    FILE existe y es un socket
  • -u
    FILE existe y su bit de ID de usuario establecido está configurado
  • -w
    FILE existe y se otorga permiso de escritura
  • -x
    FILE existe y se otorga permiso de ejecución (o búsqueda)

Conclusión

Leave a Reply

Deja una respuesta

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