che cosa significa -x in if istruzione condizionale?


Risposte:


26

Dalle man bashpagine (in particolare la sezione EXPRESSIONS CONDIZIONATE):

   -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.

   [...]

3
Va notato, eseguibile per una directory significa che può essere attraversato.
ricco richiamo

2
@StevenPenny La seconda parte della domanda era "Come posso trovare questa pagina di manuale per se?"
Sparhawk,

1
@drewbenn Quando invochi testin bash, non stai invocando il testbinario. Stai, invece, invocando l'integrato di bash test, che contiene documentazione help test, tra l'altro. man testpotrebbe essere fuorviante in alcuni casi per tale motivo.
Chris Down,

11

ifè di per sé una parola chiave shell, quindi puoi trovare informazioni al riguardo con help if. ifesso stesso si ramifica solo se il comando successivo restituisce true (0) o false (non zero). Quello che vuoi davvero, però, è man [o man test, dove [è un alias per test. Quell'affermazione è in realtà in esecuzione test -x /etc/rc.local, che verifica se quel file esiste ed è eseguibile (o ha il permesso di ricerca).


1
man [funziona anche.
Sparhawk,

1
Non solo verifica se esiste, ma verifica anche se il file è eseguibile.
Tom Fenech,

@TomFenech, ahh, giusto ...
psusi

@psusi ifnon è la shell incorporata è la sua parola chiave shell. Esegui questo comando type ifper verificarlo.
Avinash Raj,

3

Da info test:

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

È necessaria l'autorizzazione di esecuzione su una directory per poterlo inserire in cd (ovvero, per rendere una directory la directory di lavoro corrente).

È necessario eseguire su una directory per accedere alle informazioni "inode" dei file all'interno. È necessario questo per cercare una directory per leggere gli inode dei file all'interno. Per questo motivo l'autorizzazione di esecuzione su una directory viene spesso chiamata autorizzazione di ricerca.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.