Como verificar se um arquivo ou diretório existe no Bash

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:

Sempre use aspas duplas para evitar problemas ao lidar com arquivos contendo espaços em branco em seus nomes.

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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *