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.

unix-basic-operators.htm