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.