Unix / Linux - Exemple d'opérateurs de test de fichier Shell
Nous avons quelques opérateurs qui peuvent être utilisés pour tester diverses propriétés associées à un fichier Unix.
Supposons une variable file contient un nom de fichier existant "test" dont la taille est de 100 octets et a read, write et execute permission sur -
Opérateur | La description | Exemple |
---|---|---|
-b file | Vérifie si le fichier est un fichier spécial de bloc; si oui, alors la condition devient vraie. | [-b $ fichier] est faux. |
-c file | Vérifie si le fichier est un fichier spécial de caractères; si oui, alors la condition devient vraie. | [-c $ fichier] est faux. |
-d file | Vérifie si le fichier est un répertoire; si oui, alors la condition devient vraie. | [-d $ fichier] n'est pas vrai. |
-f file | Vérifie si le fichier est un fichier ordinaire par opposition à un répertoire ou un fichier spécial; si oui, alors la condition devient vraie. | [-f $ fichier] est vrai. |
-g file | Vérifie si le fichier a son ensemble de bits d'ID de groupe (SGID); si oui, alors la condition devient vraie. | [-g $ fichier] est faux. |
-k file | Vérifie si le fichier a son bit collant défini; si oui, alors la condition devient vraie. | [-k $ fichier] est faux. |
-p file | Vérifie si le fichier est un tube nommé; si oui, alors la condition devient vraie. | [-p $ fichier] est faux. |
-t file | Vérifie si le descripteur de fichier est ouvert et associé à un terminal; si oui, alors la condition devient vraie. | [-t $ fichier] est faux. |
-u file | Vérifie si le fichier a son bit Set User ID (SUID) défini; si oui, alors la condition devient vraie. | [-u $ fichier] est faux. |
-r file | Vérifie si le fichier est lisible; si oui, alors la condition devient vraie. | [-r $ fichier] est vrai. |
-w file | Vérifie si le fichier est accessible en écriture; si oui, alors la condition devient vraie. | [-w $ fichier] est vrai. |
-x file | Vérifie si le fichier est exécutable; si oui, alors la condition devient vraie. | [-x $ fichier] est vrai. |
-s file | Vérifie si le fichier a une taille supérieure à 0; si oui, alors la condition devient vraie. | [-s $ fichier] est vrai. |
-e file | Vérifie si le fichier existe; est vrai même si le fichier est un répertoire mais existe. | [-e $ fichier] est vrai. |
Exemple
L'exemple suivant utilise tous les file test opérateurs -
Supposons qu'un fichier variable contienne un nom de fichier existant "/var/www/tutorialspoint/unix/test.sh" dont la taille est de 100 octets et a read, write et execute permission -
#!/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
Le script ci-dessus produira le résultat suivant -
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
Les points suivants doivent être pris en compte lors de l'utilisation des opérateurs de test de fichier -
Il doit y avoir des espaces entre les opérateurs et les expressions. Par exemple, 2 + 2 n'est pas correct; il doit être écrit 2 + 2.
if...then...else...fi déclaration est une déclaration de prise de décision qui a été expliquée dans le chapitre suivant.