| Expression | Code de retour | 
|---|---|
| -b FILE | Vrai si le fichier existe et est du type spécial bloc | 
| -c FILE | Vrai si le fichier existe et est du type spécial caractère | 
| -d FILE | Vrai si le fichier existe et est du type répertoire | 
| -e FILE | Vrai si le fichier existe | 
| -f FILE | Vrai si le fichier existe et est du type ordinaire | 
| -G FILE | Vrai si le fichier existe et si l'utilisateur appartient au groupe propriétaire du fichier | 
| -h FILE | Vrai si le fichier existe et est du type lien symbolique | 
| -L FILE | Vrai si le fichier existe et est du type lien symbolique (idem -h) | 
| -O FILE | Vrai si le fichier existe et si l'utilisateur est le propriétaire du fichier | 
| -r FILE | Vrai si le fichier existe et est accessible en lecture | 
| -s FILE | Vrai si le fichier existe et n'est pas vide | 
| -S FILE | Vrai si le fichier existe et est du type socket | 
| -w FILE | Vrai si le fichier existe et est accessible en écriture | 
| -x FILE | Vrai si le fichier existe et est exécutable | 
| FILE1 -ef FILE2 | Vrai si les fichiers ont le même lien physique | 
| FILE1 -nt FILE2 | Vrai si FILE1 est plus récent que FILE2 | 
| FILE1 -ot FILE2 | Vrai si FILE1 est plus ancien que FILE2 | 
Exemple :
Le fichier /etc/group est un fichier ordinaire
$ test -f /etc/group
$ echo $?
0
$
Le fichier /etc/groupe n'existe pas (test avec l'autre syntaxe)
$ [ -f /etc/groupe ]
$ echo $?
1
$
Le fichier /etc/init.d existe et est un répertoire
$ [ -d /etc/init.d ]
$ echo $?
0
$
Le fichier /etc/group n'est pas un répertoire ou il n'exsite pas
$ test -d /etc/group
$ echo $?
1
$
Le fichier contenu dans la variable file n'est pas un répertoire ou n'existe pas
$ file=/etc/group
$ test -d $file
$ echo $?
1
$
L'utilisateur n'a pas le droit d'écriture sur le fichier /etc/group
$ [ -w /etc/group ]
$ echo $?
1
$