que signifie -x si instruction conditionnelle?

20

Que -xsignifie ici:

if [ -x /etc/rc.local ] then

Comment pourrais-je trouver cette page de manuel if?

taymindis Woon
la source
4
tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html Cette page explique les bases de la bash if.
Christophe De Troyer
2
Il évalue à vrai si le fichier existe et est exécutable.
jobin
As-tu essayé help if?
Avinash Raj

Réponses:

26

Depuis les man bashpages (en particulier la section EXPRESSIONS CONDITIONNELLES):

   -a file
          True if file exists.
   -b file
          True if file exists and is a block special file.
   -c file
          True if file exists and is a character special file.
   -d file
          True if file exists and is a directory.
   -e file
          True if file exists.
   -f file
          True if file exists and is a regular file.
   -g file
          True if file exists and is set-group-id.
   -h file
          True if file exists and is a symbolic link.
   -k file
          True if file exists and its ``sticky'' bit is set.
   -p file
          True if file exists and is a named pipe (FIFO).
   -r file
          True if file exists and is readable.
   -s file
          True if file exists and has a size greater than zero.
   -t fd  True if file descriptor fd is open and refers to a terminal.
   -u file
          True if file exists and its set-user-id bit is set.
   -w file
          True if file exists and is writable.
   -x file
          True if file exists and is executable.

   [...]
Sylvain Pineau
la source
3
Il convient de noter que l'exécutable d'un répertoire signifie qu'il peut être parcouru.
remer riche
2
@StevenPenny La deuxième partie de la question était "Comment puis-je trouver cette page de manuel si?"
Sparhawk
1
@drewbenn Lorsque vous appelez testdans bash, vous n'invoquez pas le testbinaire. Vous testinvoquez plutôt la fonction intégrée de bash , qui contient de la documentation help test, entre autres. man testpeut être trompeur dans certains cas pour cette raison.
Chris Down
11

iflui-même est un mot-clé shell, vous pouvez donc trouver des informations à ce sujet avec help if. iflui-même ne se branche que si la commande suivante retourne vrai (0) ou faux (pas zéro). Ce que vous voulez vraiment, c'est man [ou man test, où [est un alias test. Cette instruction est en cours d'exécution test -x /etc/rc.local, qui teste pour voir si ce fichier existe et est exécutable (ou dispose d'une autorisation de recherche).

psusi
la source
1
man [fonctionne aussi.
Sparhawk
1
Non seulement il teste pour voir s'il existe, il teste également si le fichier est exécutable.
Tom Fenech
@TomFenech, ahh, à droite ...
psusi
@psusi ifn'est pas un shell intégré à son mot clé shell. Exécutez cette commande type ifpour vérifier cela.
Avinash Raj
3

De info test:

`-x FILE'
    True if FILE exists and execute permission is granted (or search permission, if it is a directory).

Une autorisation d'exécution est nécessaire sur un répertoire pour pouvoir y entrer (c'est-à-dire faire de certains répertoires votre répertoire de travail actuel).

Exécuter est nécessaire sur un répertoire pour accéder aux informations "inode" des fichiers qu'il contient. Vous en avez besoin pour rechercher un répertoire dans lequel lire les inodes des fichiers. Pour cette raison, l'autorisation d'exécution sur un répertoire est souvent appelée autorisation de recherche.

Girardengo
la source