Na maioria das vezes, podemos encontrar uma situação em que podemos precisar executar uma ação que verificará se um arquivo existe ou não.
No Bash, podemos usar um “comando de teste” para verificar se um arquivo existe e determinar o tipo de um arquivo.
A seguir estão as sintaxes do comando de teste, e nós pode usar qualquer um destes comandos:
Somos obrigados a usar um único comando de colchete “[” para tornar nosso script portátil para todos os shells POSIX. A versão atualizada do comando test contém colchetes duplos “[[” que é compatível com a maioria dos sistemas modernos usando Bash, Zsh e Ksh como shell padrão.
Verificar se o arquivo existe
Ao verificar se um arquivo existe, os operadores de arquivo mais comumente usados são -e e -f. A opção “-e” é usada para verificar se um arquivo existe independentemente do tipo, enquanto a opção “-f” é usada para retornar o valor verdadeiro apenas se o arquivo for um arquivo normal (não um diretório ou dispositivo).
A opção mais comum para verificar se o arquivo existe ou não é usar o comando test com a “declaração condicional if”.
A seguir estão os exemplos para verificar se o “read_file. txt “arquivo existe:
Método 1
Método 2
Método 3
Saída
A saída para todos os três métodos será a seguinte, porque temos um arquivo (read_file.txt) presente no diretório:
read_file.txt exist
Se quisermos realizar uma ação que fornecerá um resultado com base na existência ou não do arquivo, podemos usar a construção if / then no seguinte maneira:
Exemplo
Saída
read_file.txt exist
Também podemos usar o comando test sem a instrução if. Podemos usar qualquer um dos seguintes métodos:
Método 1
Método 2
Método 3
Saída
A saída para todos os três métodos será como abaixo porque temos um arquivo (read_file.txt) presente no diretório:
read_file.txt exist
Exemplo
Diferente de & &, a instrução após || operador é executado apenas se o status de saída do comando de teste for “falso”.
Exemplo
Saída
read_file.txt exist
Estes são os métodos comumente usados no Bash para verificar se o arquivo existe ou não.
Verificar se o diretório existe
O operador “-d” nos permite testar se um arquivo é um diretório ou não.
A seguir estão os métodos para verificar se o diretório “Javatpoint” existe:
Método 1
Método 2
Observação: também podemos usar colchetes duplos “[[” em vez de um único colchete “[” .
Saída
A saída para ambos os métodos acima será a seguinte, pois temos um diretório (chamado Javatpoint) presente no local especificado:
Javatpoint is a directory
Verificar se o arquivo não existe
A expressão de teste pode ser negada usando o ponto de exclamação (! -operador lógico NOT). Confira o seguinte exemplo:
Exemplo
O script acima também pode ser escrito como abaixo:
Saída
missing_read_file.txt unavailable
Operadores de teste de arquivo
Os comandos de teste incluem os seguintes Operadores de arquivo que nos permitem teste para determinados tipos de arquivos:
-b FileReturns | “True” se o ARQUIVO existir como um bloco especial arquivo. |
-c FileReturns | “Verdadeiro” se o ARQUIVO existir como um arquivo de caractere especial. |
-d FileReturns | “Verdadeiro” se o FILE existir como um diretório. |
-e FileReturns | “Verdadeiro “se o ARQUIVO existir como um arquivo, independentemente do tipo (nó, diretório, soquete, etc.). |
-f FileReturns | ” Verdadeiro ” se o ARQUIVO existir como um arquivo normal (não um diretório ou dispositivo). |
-G FileReturns | “Verdadeiro” se o ARQUIVO existir e contiver o mesmo grupo que o usuário está executando o comm e. |
-h FileReturns | “Verdadeiro” se o ARQUIVO existir como um link simbólico. |
-g FileReturns | “Verdadeiro” se o FILE existir e contiver o conjunto de sinalizadores set-group-id (sgid). |
-k FileReturns | “Verdadeiro” se o ARQUIVO existir e contiver um conjunto de sinalizadores de bit pegajoso. |
-L FileReturns | “Verdadeiro” se o ARQUIVO existe como um link simbólico. |
-O FileReturns | “Verdadeiro” se o ARQUIVO existe e é de propriedade do usuário que está executando o comando. |
-p FileReturns | “Verdadeiro” se o ARQUIVO existir como um tubo. |
– r FileReturns | “Verdadeiro” se o ARQUIVO existir como um arquivo legível. |
-S FileReturns | “Verdadeiro” se o FILE existe como um socket. |
-s FileReturns | “Verdadeiro” se o ARQUIVO existe e tem tamanho diferente de zero. |
-u FileReturns | “True” se o FILE existir e o sinalizador set-user-id (suid) estiver definido. |
-w FileReturns | “True” se o FILE existir como um arquivo gravável. |
-x FileReturns | “True” se o FILE existir como um arquivo executável. |