Verificar se um arquivo ou diretório existe a partir de um script Bash
O 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 no
E se
declaração.
if [-f] então fi
Para negar o valor retornado, simplesmente preceda o -f
com um operador de negação (!
).
E se [ ! -f] então fi
Neste caso, a condição será satisfeita se o arquivo não existe, já que 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 existe e um diferente de zero, ou seja, o status de falha é retornado se não existir. Isso também é comumente usado em um
E se
condição de declaração.
se [-d] então fi
Para negar o status retornado, preceda o -d
com um operador de negação (!
).
E se [ ! -d] então 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 dos colchetes ( [...]
) usado aqui é na verdade um comando Linux chamado teste
. As opções -f
e -d
são os recursos deste comando. Para obter mais informações, consulte a página de manual do teste ( teste de homem
).
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 (E se
no nosso caso), ele continua o prompt e permite que o usuário entre para continuar o bloco.
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 como zsh
, que deve ser especificado no lugar de bash no início deste arquivo.
Para dar permissões de execução para este arquivo, execute:
chmod + x test.sh
Finalmente, para executar o arquivo, corre:
./test.sh