Unix / Linux - Ejemplo de operadores de prueba de archivos de shell

Tenemos algunos operadores que se pueden utilizar para probar varias propiedades asociadas con un archivo Unix.

Asume una variable file contiene una "prueba" de nombre de archivo existente cuyo tamaño es de 100 bytes y tiene read, write y execute permiso en -

Operador Descripción Ejemplo
-b file Comprueba si el archivo es un archivo especial de bloque; si es así, entonces la condición se vuelve verdadera. [-b $ archivo] es falso.
-c file Comprueba si el archivo es un archivo especial de carácter; si es así, entonces la condición se vuelve verdadera. [-c $ archivo] es falso.
-d file Comprueba si el archivo es un directorio; si es así, entonces la condición se vuelve verdadera. [-d $ archivo] no es cierto.
-f file Comprueba si el archivo es un archivo normal en lugar de un directorio o un archivo especial; si es así, entonces la condición se vuelve verdadera. [-f $ archivo] es verdadero.
-g file Comprueba si el archivo tiene su bit de ID de grupo establecido (SGID) establecido; si es así, entonces la condición se vuelve verdadera. [-g $ archivo] es falso.
-k file Comprueba si el archivo tiene su bit adhesivo establecido; si es así, entonces la condición se vuelve verdadera. [-k $ archivo] es falso.
-p file Comprueba si el archivo es una tubería con nombre; si es así, entonces la condición se vuelve verdadera. [-p $ archivo] es falso.
-t file Comprueba si el descriptor de archivo está abierto y asociado con un terminal; si es así, entonces la condición se vuelve verdadera. [-t $ archivo] es falso.
-u file Comprueba si el archivo tiene su bit Set User ID (SUID) establecido; si es así, entonces la condición se vuelve verdadera. [-u $ archivo] es falso.
-r file Comprueba si el archivo es legible; si es así, entonces la condición se vuelve verdadera. [-r $ archivo] es verdadero.
-w file Comprueba si se puede escribir en el archivo; si es así, entonces la condición se vuelve verdadera. [-w $ archivo] es verdadero.
-x file Comprueba si el archivo es ejecutable; si es así, entonces la condición se vuelve verdadera. [-x $ archivo] es verdadero.
-s file Comprueba si el archivo tiene un tamaño superior a 0; si es así, la condición se vuelve verdadera. [-s $ archivo] es verdadero.
-e file Comprueba si el archivo existe; es verdadero incluso si el archivo es un directorio pero existe. [-e $ archivo] es verdadero.

Ejemplo

El siguiente ejemplo utiliza todos los file test operadores -

Suponga que un archivo variable tiene un nombre de archivo existente "/var/www/tutorialspoint/unix/test.sh" cuyo tamaño es de 100 bytes y tiene read, write y execute permiso -

#!/bin/sh

file="/var/www/tutorialspoint/unix/test.sh"

if [ -r $file ]
then
   echo "File has read access"
else
   echo "File does not have read access"
fi

if [ -w $file ]
then
   echo "File has write permission"
else
   echo "File does not have write permission"
fi

if [ -x $file ]
then
   echo "File has execute permission"
else
   echo "File does not have execute permission"
fi

if [ -f $file ]
then
   echo "File is an ordinary file"
else
   echo "This is sepcial file"
fi

if [ -d $file ]
then
   echo "File is a directory"
else
   echo "This is not a directory"
fi

if [ -s $file ]
then
   echo "File size is not zero"
else
   echo "File size is zero"
fi

if [ -e $file ]
then
   echo "File exists"
else
   echo "File does not exist"
fi

El script anterior producirá el siguiente resultado:

File does not have write permission
File does not have execute permission
This is sepcial file
This is not a directory
File size is not zero
File does not exist

Los siguientes puntos deben tenerse en cuenta al utilizar operadores de prueba de archivos:

  • Debe haber espacios entre los operadores y las expresiones. Por ejemplo, 2 + 2 no es correcto; debe escribirse como 2 + 2.

  • if...then...else...fi declaración es una declaración de toma de decisiones que se explica en el capítulo siguiente.

operadores-básicos-unix.htm