Muitas vezes, ao escrever scripts Shell, você pode se encontrar em uma situação em que precisa executar uma ação com base na existência ou não de um arquivo .
No Bash, você pode usar o comando de teste para verificar se existe um arquivo e determinar o tipo do arquivo.
O comando de teste assume uma das seguintes formas de sintaxe:
Se você deseja que seu script seja portátil, você deve preferir usar o teste antigo ; then echo "$FILE exists."fi
Se você deseja realizar uma ação diferente com base na existência ou não do arquivo simplesmente use a construção if / then:
Você também pode usar o comando test sem a instrução if. O comando após o operador &&
só será executado se o status de saída do comando de teste for verdadeiro,
Se desejar execute uma série de comandos após o operador &&
, simplesmente coloque os comandos entre colchetes separados por ;
ou &&
:
Oposto a &&
, a declaração após o O operador ||
só será executado se o status de saída do comando de teste for false
.
Verifique se o diretório existe #
Os operadores -d
permitem que você teste se um arquivo é um diretório ou não.
Por exemplo, para verificar se o diretório /etc/docker
existe, você usaria:
Você também pode usar os colchetes duplos ; then echo "$FILE does not exist."fi
O mesmo que acima:
Verifique se existem vários arquivos #
Em vez de usar construções if / else complicadas aninhadas, você pode usar -a
(ou &&
com ; then echo "Both files exist."fi
Variantes equivalentes sem usar a instrução IF:
Operadores de teste de arquivo #
O comando de teste inclui os seguintes operadores FILE que permitem testar tipos específicos de arquivos:
-
-b
FILE
– Verdadeiro se o ARQUIVO existe e é um arquivo de bloco especial. -
-c
FILE
– Verdadeiro se o ARQUIVO existe e é um arquivo de caractere especial. -
-d
FILE
– Verdadeiro se o ARQUIVO existe e é um diretório. -
-e
FILE
– Verdadeiro se o ARQUIVO existe e é um arquivo, independentemente do tipo (nó, diretório, soquete, etc.). -
-f
FILE
– Verdadeiro se o ARQUIVO existe e é um arquivo normal (não um diretório ou dispositivo). -
-G
FILE
– Verdadeiro se o ARQUIVO existe e tem o mesmo grupo do usuário que está executando o comando. -
-h
FILE
– Verdadeiro se o ARQUIVO existe e é um link simbólico. -
-g
FILE
– Verdadeiro se o ARQUIVO existir e tiver o sinalizador set-group-id (sgid
) definido. -
-k
FILE
– Verdadeiro se o ARQUIVO existir e tiver um sinalizador de bit sticky definido. -
-L
– Verdadeiro se o ARQUIVO existe e é um link simbólico. -
-O
FILE
– Verdadeiro se o ARQUIVO existe e pertence ao usuário que está executando o comando. -
-p
FILE
– Verdadeiro se o ARQUIVO existe e é um tubo. -
-r
FILE
– Verdadeiro se o ARQUIVO existir e for legível. -
-S
FILE
– Verdadeiro se o ARQUIVO existe e é um soquete. -
-s
FILE
– Verdadeiro se o ARQUIVO existe e tem tamanho diferente de zero. -
-u
FILE
– Verdadeiro se o ARQUIVO existir e o sinalizador set-user-id (suid
) estiver definido. -
-w
FILE
– Verdadeiro se o ARQUIVO existe e é gravável. -
-x
FILE
– Verdadeiro se o ARQUIVO existe e é exe cortável.
Conclusão #
Neste guia, mostramos como verificar se um arquivo ou diretório existe no Bash.