Unix / Linux - Exemplo de operadores de teste de arquivo Shell

Temos alguns operadores que podem ser usados ​​para testar várias propriedades associadas a um arquivo Unix.

Assuma uma variável file contém um nome de arquivo existente "teste", cujo tamanho é 100 bytes e tem read, write e execute permissão em -

Operador Descrição Exemplo
-b file Verifica se o arquivo é um arquivo especial de bloco; se sim, então a condição se torna verdadeira. [-b $ file] é falso.
-c file Verifica se o arquivo é um arquivo especial de caracteres; se sim, então a condição se torna verdadeira. [-c $ file] é falso.
-d file Verifica se o arquivo é um diretório; se sim, então a condição se torna verdadeira. [-d $ file] não é verdade.
-f file Verifica se o arquivo é um arquivo comum em oposição a um diretório ou arquivo especial; se sim, então a condição se torna verdadeira. [-f $ file] é verdadeiro.
-g file Verifica se o arquivo tem seu conjunto de bits de ID de grupo (SGID) definido; se sim, então a condição se torna verdadeira. [-g $ arquivo] é falso.
-k file Verifica se o arquivo tem o bit sticky definido; se sim, então a condição se torna verdadeira. [-k $ file] é falso.
-p file Verifica se o arquivo é um canal nomeado; se sim, então a condição se torna verdadeira. [-p $ file] é falso.
-t file Verifica se o descritor de arquivo está aberto e associado a um terminal; se sim, então a condição se torna verdadeira. [-t $ file] é falso.
-u file Verifica se o arquivo tem seu conjunto de bits Set User ID (SUID); se sim, então a condição se torna verdadeira. [-u $ arquivo] é falso.
-r file Verifica se o arquivo é legível; se sim, então a condição se torna verdadeira. [-r $ file] é verdadeiro.
-w file Verifica se o arquivo é gravável; se sim, então a condição se torna verdadeira. [-w $ file] é verdadeiro.
-x file Verifica se o arquivo é executável; se sim, então a condição se torna verdadeira. [-x $ file] é verdadeiro.
-s file Verifica se o tamanho do arquivo é maior que 0; se sim, então a condição se torna verdadeira. [-s $ file] é verdadeiro.
-e file Verifica se o arquivo existe; é verdadeiro mesmo se o arquivo for um diretório, mas existir. [-e $ file] é verdadeiro.

Exemplo

O exemplo a seguir usa todos os file test operadores -

Suponha que um arquivo variável contenha um nome de arquivo existente "/var/www/tutorialspoint/unix/test.sh" cujo tamanho é 100 bytes e tem read, write e execute permissão -

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

O script acima produzirá o seguinte resultado -

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

Os pontos a seguir devem ser considerados ao usar operadores de teste de arquivo -

  • Deve haver espaços entre os operadores e as expressões. Por exemplo, 2 + 2 não está correto; deve ser escrito como 2 + 2.

  • if...then...else...fi declaração é uma declaração de tomada de decisão que foi explicada no próximo capítulo.

operadores-unix-basic.htm