Unix / Linux - Esempio di operatori di test di file shell

Abbiamo alcuni operatori che possono essere utilizzati per testare varie proprietà associate a un file Unix.

Assumi una variabile file contiene un nome file esistente "test" la cui dimensione è di 100 byte e ha read, write e execute permesso su -

Operatore Descrizione Esempio
-b file Controlla se il file è un file speciale a blocchi; se sì, la condizione diventa vera. [-b $ file] è falso.
-c file Controlla se il file è un file speciale di caratteri; se sì, la condizione diventa vera. [-c $ file] è falso.
-d file Controlla se il file è una directory; se sì, la condizione diventa vera. [-d $ file] non è vero.
-f file Controlla se il file è un file ordinario anziché una directory o un file speciale; se sì, la condizione diventa vera. [-f $ file] è vero.
-g file Controlla se il file ha il bit impostato per l'ID gruppo (SGID) impostato; se sì, la condizione diventa vera. [-g $ file] è falso.
-k file Controlla se il file ha il suo sticky bit impostato; se sì, la condizione diventa vera. [-k $ file] è falso.
-p file Controlla se il file è una named pipe; se sì, la condizione diventa vera. [-p $ file] è falso.
-t file Controlla se il descrittore di file è aperto e associato a un terminale; se sì, la condizione diventa vera. [-t $ file] è falso.
-u file Controlla se il file ha il bit Set User ID (SUID) impostato; se sì, la condizione diventa vera. [-u $ file] è falso.
-r file Controlla se il file è leggibile; se sì, la condizione diventa vera. [-r $ file] è vero.
-w file Controlla se il file è scrivibile; se sì, la condizione diventa vera. [-w $ file] è vero.
-x file Controlla se il file è eseguibile; se sì, la condizione diventa vera. [-x $ file] è vero.
-s file Controlla se il file ha una dimensione maggiore di 0; se sì, allora la condizione diventa vera. [-s $ file] è vero.
-e file Controlla se il file esiste; è vero anche se file è una directory ma esiste. [-e $ file] è vero.

Esempio

L'esempio seguente utilizza tutti i file file test operatori -

Supponiamo che un file variabile contenga un nome file esistente "/var/www/tutorialspoint/unix/test.sh" la cui dimensione è di 100 byte e ha read, write e execute permesso -

#!/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

Lo script sopra produrrà il seguente risultato:

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

I seguenti punti devono essere considerati durante l'utilizzo degli operatori di test dei file:

  • Devono essere presenti degli spazi tra gli operatori e le espressioni. Ad esempio, 2 + 2 non è corretto; dovrebbe essere scritto come 2 + 2.

  • if...then...else...fi dichiarazione è una dichiarazione decisionale che è stata spiegata nel prossimo capitolo.

unix-basic-operators.htm