Verificar se um arquivo ou diretório existe a partir de um script Bash
Bash é usado para automatizar comandos executados regularmente no Linux. Os comandos destinados a operações em arquivos / diretórios são usados com bastante frequência e, normalmente, antes de executarmos tal comando, precisamos verificar se o arquivo ou diretório específico existe. Vamos ver como fazer essa verificação.
Sintaxe e uso
arquivos
Para verificar se existe um arquivo , use a seguinte sintaxe:
[ -f ]
A expressão [ -f ]
retorna 0, ou seja, sucesso se existe e, se não existir, retorna um status diferente de zero. Normalmente, isso é usado como uma condição na if
instrução.
if [ -f ]
then
fi
Para negar o valor retornado , basta preceder o -f
com um operador de negação ( !
).
if [ ! -f ]
then
fi
Neste caso, a condição será satisfeita caso o arquivo não exista , pois o status diferente de zero retornado (falso) será negado e considerado como 0 (verdadeiro).
Observe que se o arquivo a ser verificado não existe no diretório atual e existe em algum outro diretório, o caminho completo do arquivo deve ser mencionado em vez de apenas o nome do arquivo.
Diretórios
Sintaxe semelhante à usada para verificar arquivos é usada para verificar diretórios.
[ -d ]
Semelhante à instrução para arquivos, esta instrução retorna 0, ou seja, sucesso, se o diretório existir, e um diferente de zero, ou seja, o status de falha é retornado se não existir. Isso também é comumente usado em uma if
condição de instrução.
if [ -d ]
then
fi
Para negar o status retornado, preceda o -d
com um operador de negação ( !
).
if [ ! -d ]
then
fi
A condição será satisfeita (status 0) neste caso se o diretório não existir e falhará (status diferente de zero) se o diretório existir.
Conforme mencionado antes para os arquivos, se o diretório a ser verificado existe em outro local e não no diretório atual, todo o caminho do diretório precisa ser inserido em vez de apenas o nome do diretório.
💡 A sintaxe de colchetes ( [...]
) usada aqui é na verdade um comando Linux chamado test
. As opções -f
e -d
são os recursos deste comando. Para obter mais informações, consulte a página de manual de test ( man test
).
Verificar a partir de um script Bash
Nos exemplos acima, usamos as sintaxes diretamente no terminal. O shell sempre que encontra um loop ou uma instrução condicional ( if
em nosso caso), ele continua o prompt e permite que o usuário insira o bloco para continuar.
As mesmas sintaxes podem ser usadas dentro de um script Bash.
O #!/bin/bash
no início especifica o interpretador a ser usado quando o arquivo é executado. Embora o Bash seja o shell mais comumente usado hoje em dia, alguns usuários preferem shells like zsh
, que devem ser especificados no lugar do bash no início deste arquivo.
Para conceder permissões de execução para este arquivo, execute:
chmod +x test.sh
Finalmente, para executar o arquivo , execute:
./test.sh