o que significa -x na declaração condicional?

14

O que significa -x aqui:

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

Como posso encontrar esta página de manual para if ?

    
por taymindis Woon 09.04.2014 / 15:30

3 respostas

21

Nas páginas man bash (especialmente na seção EXPRESSÕES CONDICIONAIS):

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

   [...]
    
por Sylvain Pineau 09.04.2014 / 15:43
12

if em si é uma palavra-chave do shell, para que você possa encontrar informações sobre isso com help if . O if em si só ramifica com base no fato do próximo comando retornar verdadeiro (0) ou falso (não zero). O que você realmente quer, é man [ ou man test , onde [ é um alias para test . Essa instrução está realmente executando test -x /etc/rc.local , que testa para ver se esse arquivo existe e é executável (ou tem permissão de pesquisa).

    
por psusi 09.04.2014 / 15:43
4

De info test :

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

É necessária permissão de execução em um diretório para poder fazer o cd nela (isto é, para tornar algum diretório seu diretório de trabalho atual).

É necessário executar em um diretório para acessar as informações de "inode" dos arquivos. Você precisa disso para procurar um diretório para ler os inodes dos arquivos. Por esse motivo, a permissão de execução em um diretório geralmente é chamada de permissão de pesquisa.

    
por girardengo 09.04.2014 / 20:23