Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Expressions de fichier

Les expressions suivantes sont utilisées pour évaluer l'état des fichiers :


Tableau 27-1 : expressions de fichier de test


L'expression est vraie si :

L'expression est vraie si :

file1 -si file2 file1 et file2 ont les mêmes numéros d'inode (les deux

les noms de fichiers font référence au même fichier par un lien en dur).


image

file1 -NT file2 file1 est plus récent que file2.


image

file1 -pas file2 file1 est plus ancien que file2.


image

-b filet filet existe et est un fichier (de périphérique) spécial bloc.


image

-c filet filet existe et est un fichier de caractère spécial (périphérique).


image

-d filet filet existe et est un répertoire.


image

-e filet filet existe.


image

-f filet filet existe et est un fichier régulier.


image

-g filet filet existe et est set-group-ID.


image

-G filet filet existe et appartient à l'ID de groupe effectif.


image

-k filet filet existe et a son ensemble "sticky bit".


image


image

-L filet filet existe et est un lien symbolique.


image

-O filet filet existe et appartient à l'ID utilisateur effectif.


image

-p filet filet existe et est un tube nommé.


image

-r filet filet existe et est lisible (a l'autorisation de lecture pour l'utilisateur effectif).


image

-s filet filet existe et a une longueur supérieure à zéro.


image

-S filet filet existe et est une prise réseau.


image

-t fd fd est un descripteur de fichier dirigé vers/depuis le terminal. Cela peut être utilisé pour déterminer si l'entrée/sortie/erreur standard est redirigée.


image

-u filet filet existe et est setuid.


image

-w filet filet existe et est accessible en écriture (a l'autorisation d'écriture pour l'utilisateur effectif).


image

-x filet filet existe et est exécutable (a l'autorisation d'exécution/recherche pour l'utilisateur effectif).


image


Ici, nous avons un script qui illustre certaines des expressions de fichier :



#! / Bin / bash


# test-file : évalue le statut d'un fichier FILE=~/.bashrc

if [ -e "$FILE" ]; alors

if [ -f "$FICHIER" ]; alors

echo "$FILE est un fichier normal."

fi

if [ -d "$FILE" ]; alors

echo "$FILE est un répertoire."

fi

if [ -r "$FILE" ]; alors

echo "$FILE est lisible."

fi

if [ -w "$FILE" ]; alors

echo "$FILE est accessible en écriture."

fi

if [ -x "$FILE" ]; alors

echo "$FILE est exécutable/recherchable."

#! / Bin / bash


# test-file : évalue le statut d'un fichier FILE=~/.bashrc

if [ -e "$FILE" ]; alors

if [ -f "$FICHIER" ]; alors

echo "$FILE est un fichier normal."

fi

if [ -d "$FILE" ]; alors

echo "$FILE est un répertoire."

fi

if [ -r "$FILE" ]; alors

echo "$FILE est lisible."

fi

if [ -w "$FILE" ]; alors

echo "$FILE est accessible en écriture."

fi

if [ -x "$FILE" ]; alors

echo "$FILE est exécutable/recherchable."


fi d'autre

echo "$FILE n'existe pas" exit 1

fi


sortie

fi d'autre

echo "$FILE n'existe pas" exit 1

fi


sortie


Le script évalue le fichier affecté à la constante DOSSIER et affiche ses résultats au fur et à mesure de l'évaluation. Il y a deux choses intéressantes à noter à propos de ce script. Tout d'abord, remarquez comment le paramètre $FICHIER est cité dans les expressions. Cela n'est pas nécessaire pour compléter syntaxiquement l'expression, c'est plutôt une défense contre le fait que le paramètre soit vide. Si l'expansion des paramètres de $FICHIER si cela aboutissait à une valeur vide, cela provoquerait une erreur (les opérateurs seraient interprétés comme des chaînes non nulles plutôt que comme des opérateurs). L'utilisation des guillemets autour du paramètre garantit que l'opérateur est toujours suivi d'une chaîne, même si la chaîne est vide. Deuxièmement, notez la présence du sortie commande vers la fin du script. Les sortie La commande accepte un seul argument facultatif, qui devient l'état de sortie du script. Lorsqu'aucun argument n'est passé, l'état de sortie est par défaut l'état de sortie de la dernière commande exécutée. À l'aide de sortie permet ainsi au script d'indiquer l'échec si $FICHIER se développe au nom d'un fichier inexistant. Les sortie La commande apparaissant sur la dernière ligne du script est là comme une formalité. Lorsqu'un script « s'exécute jusqu'à la fin » (atteint la fin du fichier), il se termine avec un état de sortie de la dernière commande exécutée.

De même, les fonctions shell peuvent renvoyer un état de sortie en incluant un argument entier au retourner commander. Si nous devions convertir le script ci-dessus en une fonction shell pour l'inclure dans un programme plus vaste, nous pourrions remplacer le sortie commandes avec retourner instructions et obtenez le comportement souhaité :



fichier_test () {


# test-file : évalue le statut d'un fichier FILE=~/.bashrc

if [ -e "$FILE" ]; alors

if [ -f "$FICHIER" ]; alors

echo "$FILE est un fichier normal."

fi

if [ -d "$FILE" ]; alors

echo "$FILE est un répertoire."

fi

if [ -r "$FILE" ]; alors

fichier_test () {


# test-file : évalue le statut d'un fichier FILE=~/.bashrc

if [ -e "$FILE" ]; alors

if [ -f "$FICHIER" ]; alors

echo "$FILE est un fichier normal."

fi

if [ -d "$FILE" ]; alors

echo "$FILE est un répertoire."

fi

if [ -r "$FILE" ]; alors


echo "$FILE est lisible."

fi

if [ -w "$FILE" ]; alors

echo "$FILE est accessible en écriture."

fi

if [ -x "$FILE" ]; alors

echo "$FILE est exécutable/recherchable."

fi

d'autre

echo "$FILE n'existe pas" return 1

fi


}

echo "$FILE est lisible."

fi

if [ -w "$FILE" ]; alors

echo "$FILE est accessible en écriture."

fi

if [ -x "$FILE" ]; alors

echo "$FILE est exécutable/recherchable."

fi

d'autre

echo "$FILE n'existe pas" return 1

fi


}


Meilleur système d'exploitation Cloud Computing chez OnWorks :