Creative Saplings

Cómo verificar correctamente si el archivo existe en Bash o Shell (con ejemplos)

febrero 13, 2021
No Comments

Tabla de contenido

En este tutorial, cubriré diferentes atributos que puede usar en scripts bash o shell para verificar archivos y directorios. Puede usar expresiones condicionales bash con ] o usar prueba con para verificar si el archivo existe.

Lo haremos usar bash if y el operador else para todos los ejemplos, por lo que le recomendaría leer: Guía de uso de Bash if else para principiantes absolutos

1. Bash / Shell: compruebe si el archivo existe y es un archivo normal

Esta sección muestra los ejemplos para verificar si existe un archivo regular en bash.

1.1: Método-1: Usar corchetes simples o dobles

Usar corchetes dobles ]

#!/bin/bashFILE="/etc/passwd"if ];then echo "$FILE exists"else echo "$FILE doesn"t exist"fi

Uso de corchetes simples

#!/bin/bashFILE="/etc/passwd"if ;then echo "$FILE exists"else echo "$FILE doesn"t exist"fi

1.2: Método 2: Uso del comando de prueba

El comando test se usa para verificar tipos de archivos y comparar valores.

#!/bin/bashFILE="/etc/passwd"if test -f $FILE; then echo "$FILE exists"else echo "$FILE missing"fi

1.3: Método-3: Línea única

Podemos usar corchetes simples o dobles aquí en este ejemplo. Recomendaría usar siempre corchetes dobles cuando esté escribiendo un código de línea en shell, ya que minimiza el riesgo de recibir advertencias en la consola cuando se produce la división de palabras.

#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists" || echo "$FILE missing"

La instrucción después de && se ejecutará si tiene éxito. Si la primera condición devuelve FALSE, entonces se ejecutará la declaración con ||.

De manera similar, use el comando de prueba para verificar si existe un archivo regular en bash o script de shell en una sola línea .

#!/bin/bashFILE="/etc/passwd"test -f $FILE && echo "$FILE exists" || echo "$FILE missing"

2. Bash / Shell: Verifique si el archivo existe (está vacío o no)

Para verificar si el archivo existe y si está vacío o si tiene algún contenido, usamos el atributo «-s»

2.1: Método 1: Uso de corchetes simples o dobles

Verifique si el archivo existe y está vacío o no usando corchetes dobles ]

#!/bin/bashFILE="/etc/passwd"if ]; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi

Verifique si el archivo existe y está vacío o no está vacío usando corchetes dobles

if ; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi

2.2: Método 2: Uso del comando de prueba

Usando el comando de prueba, combinamos el atributo -s para verificar si El archivo existe y está vacío o tiene algún contenido:

2.3: Método 3: Línea única

Podemos usar corchetes dobles o simples para una línea de este tipo, pero como dije antes, recomendaría usar corchetes dobles.

#!/bin/bashFILE="/etc/passwd"test -s $FILE && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"

De manera similar, con el comando de prueba podemos usar && y || operador para verificar el archivo en un comando de una sola línea dentro de nuestro script de shell.

#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"

3. Bash / Shell: Verifique si el directorio existe

Espero que sepas que en Linux todo es un archivo. Entonces, de esa manera, un directorio también se considera un archivo. Podemos usar el atributo «-d» para verificar si existe un directorio en la programación de shell.

3.1: Método 1: Usar corchetes simples o dobles

Podemos usar el atributo -d dentro de un solo o corchetes dobles ] para verificar si el directorio existe.

#!/bin/bashDIR="/var/log"if ]; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

De manera similar, usamos corchetes simples en este ejemplo para verificar si el directorio está preestablecido dentro del script de shell.

#!/bin/bashDIR="/var/log"if ; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

3.2: Método-2: Usar el comando de prueba

En este ejemplo usaremos el comando de prueba para asegurarnos de que el directorio esté presente o no antes de realizar cierta tarea.

#!/bin/bashDIR="/var/log"if test -d $DIR; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi

3.3: Método 3: Línea única

En este ejemplo usaremos corchetes simples y dobles en forma de línea única para verificar para el directorio. La instrucción después del operador && se ejecutará si la primera condición es VERDADERA y si es FALSA, se ejecutará la instrucción de la || condición » .

#!/bin/bashDIR="/var/log"] && echo "$DIR exists" || echo "$DIR doesn"t exist"

Recomendaría usar ] en lugar de para tales códigos de línea en la programación de shell.

De manera similar con && y || podemos usar el comando de prueba para verificar si el directorio existe

#!/bin/bashDIR="/var/log"test -d $DIR && echo "$DIR exists" || echo "$DIR doesn"t exist"

4. Bash / Shell: Verifique si el directorio existe (vacío o no vacío)

No hay atributos de shell como he usado en todos los otros ejemplos y escenarios en este tutorial. Pero tenemos algunos trucos que podemos usar para verificar si el directorio está vacío o no.

4.1: Método 1: enumerar el contenido del directorio y verificar

En este ejemplo, enumeraremos el contenido del directorio, suprimiremos la salida y luego, según el código de salida, verificaremos si el directorio está vacío o contiene algunos content

#!/bin/bashDIR="/tmp"if ls -1qA $DIR | grep -q . ; then echo "$DIR is not -empty"else echo "$DIR is empty"fi

También podemos revertir esto poniendo una condición NOT (!). Entonces se vería así:

#!/bin/bashDIR="/tmp"if ! ls -1qA $DIR | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

El resultado sería el mismo en ambos scripts de ejemplo.

4.2: Método-2: Usando comando de búsqueda

Podemos usar el comando de búsqueda y luego suprimir la salida para verificar si el directorio de destino tiene algún contenido o no.

#!/bin/bashDIR="/tmp"if find -- "$DIR" -prune -type d -empty | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

4.3: Método 3: Enumere el contenido

De nuevo, como dije, ya que no hay una manera fácil de verificar si un directorio está vacío o no usa algunos atributos, listaremos el contenido del directorio. Si no obtiene resultados, entonces el directorio está vacío o no está vacío

#!/bin/bashDIR="/tmp"if ] ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi

5. Bash / Shell: Lista de atributos para probar el archivo

De manera similar, hay muchos más atributos que puede usar con scripts de shell para verificar diferentes tipos de archivos, como enlaces simbólicos, permisos de archivos, etc.

Atributos ¿Qué hace?
-a FILE Verdadero si FILE existe
-b FILE Verdadero si FILE existe y es un archivo especial de bloque.
-c FILE Verdadero si FILE existe y es un archivo especial de caracteres.
-d FILE Verdadero si FILE existe y es un directorio.
Verdadero si FILE existe
-f FILE Verdadero si FILE existe y es un archivo normal
-g FILE Verdadero si FILE existe y su bit set-group-id está establecido
-h FILE Verdadero si FILE existe y es un enlace simbólico
-k FILE Verdadero si FILE existe y su bit «pegajoso» está establecido
-p FILE Verdadero si FILE existe y es tubería con nombre (FIFO)
-r FILE Verdadero si FILE existe y es legible
-s FILE Verdadero si FILE existe y tiene un tamaño mayor que cero
-u FILE Verdadero si FILE existe y su bit set-user-id está establecido
-w FILE Verdadero si FILE existe y se puede escribir
-x FILE Verdadero si FILE existe y es ejecutable
-G FILE Verdadero si FILE existe y es propiedad del ID de grupo efectivo
-L FILE Verdadero si FILE existe y es un enlace simbólico
-N FILE Verdadero si FILE existe y se ha modificado desde la última lectura
-o FILE Verdadero si FILE existe y es propiedad de ID de usuario
-S FILE Verdadero si FILE existe y es un socket
Verdadero si FILE1 y FILE2 se refieren al mismo dispositivo y números de inodo
FILE1 -nt FILE2 Verdadero si FILE1 es más reciente (según la fecha de modificación) que FILE2, o si FILE1 existe y FILE2 no
FILE1 -ot FILE2 Verdadero si FILE1 es anterior que FILE2, o si FILE2 existe y FILE1 no

Conclusión

Articles
Previous Post

Cómo decir que eres bienvenido en francés

Next Post

Cómo configurar el acceso remoto y conectarse a una instancia remota de SQL Server con herramientas ApexSQL

Deja una respuesta Cancelar la respuesta

Entradas recientes

  • Las mejores escuelas de fotografía del mundo, 2020
  • Los ciudadanos soberanos llevan su filosofía antigubernamental a las carreteras
  • Guía de costos de reparación de estuco
  • Muckrakers (Español)
  • Precision Oncology (Español)

Archivos

  • febrero 2021
  • enero 2021
  • diciembre 2020
  • noviembre 2020
  • octubre 2020
  • septiembre 2020
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.