Android

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

VERIFICANDO SE ARQUIVO EXISTE. SHELL SCRIPT

VERIFICANDO SE ARQUIVO EXISTE. SHELL SCRIPT

Índice:

Anonim

Muitas vezes, ao escrever scripts do Shell, você pode encontrar 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 test para verificar se existe um arquivo e determinar o tipo do arquivo.

O comando test assume uma das seguintes formas de sintaxe:

test EXPRESSION]

Verifique se o arquivo existe

Ao verificar se existe um arquivo, os operadores FILE mais usados ​​são -e e -f . O primeiro verificará se existe um arquivo, independentemente do tipo, enquanto o segundo retornará verdadeiro somente se o FILE for um arquivo regular (não um diretório ou um dispositivo).

A opção mais legível ao verificar se um arquivo existe ou não é usar o comando test em combinação com a instrução if. Qualquer um dos trechos abaixo verificará se o arquivo /etc/resolv.conf existe:

FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi

Se você deseja executar uma ação diferente com base na existência ou não do arquivo, use simplesmente a construção if / then:

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi Sempre use aspas duplas para evitar problemas ao lidar com arquivos que contenham 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 && será executado apenas se o status de saída do comando test for verdadeiro, test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

&& { echo "$FILE exist"; cp "$FILE" /tmp/; }

Ao contrário de && , a declaração após o || O operador será executado apenas se o status de saída do comando test for false .

&& echo "$FILE exist" || echo "$FILE does not exist"

Verifique se o diretório existe

Os operadores -d permitem testar se um arquivo é um diretório ou não.

Por exemplo, para verificar se o diretório /etc/docker existe, você usaria:

FILE=/etc/docker if; then echo "$FILE is a directory" fi

&& echo "$FILE is a directory"

Você também pode usar os colchetes duplos , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

Verifique se o arquivo não existe

Semelhante a muitos outros idiomas, a expressão de teste pode ser negada usando o ! (ponto de exclamação) lógico, não operador:

FILE=/etc/docker if; then echo "$FILE does not exist" fi

O mesmo que acima:

&& echo "$FILE does not exist"

Verifique se existem vários arquivos

Em vez de usar construções if / else aninhadas complicadas, você pode usar -a (ou && com ; then echo "$FILE is a directory" fi

FILE=/etc/docker if; then echo "$FILE is a directory" fi

Variantes equivalentes sem usar a instrução IF:

&& echo "both files exist"

] && echo "both files exist"

Operadores de teste de arquivo

O comando test inclui os seguintes operadores FILE que permitem testar tipos específicos de arquivos:

  • -b FILE - Verdadeiro se o arquivo existir e for um arquivo especial de bloco. -c FILE - True se o arquivo existe e é um arquivo de caracteres especiais. -d FILE - Verdadeiro se o arquivo existir e for um diretório. -e FILE - True se o FILE existe e é um arquivo, independentemente do tipo (nó, diretório, soquete etc.). -f FILE - Verdadeiro se o arquivo existir e for um arquivo regular (não um diretório ou dispositivo). -G FILE - Verdadeiro se o arquivo existir e tiver o mesmo grupo que o usuário executando o comando. -h FILE - Verdadeiro se o arquivo existir e for 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 adesivo definido. -L FILE - Verdadeiro se o arquivo existir e for um link simbólico. -O FILE - True se o FILE existe e pertence ao usuário que está executando o comando. -p FILE - Verdadeiro se o arquivo existir e for um canal. -r FILE - True se o ARQUIVO existe e é legível. -S FILE - True se o arquivo existe e é soquete. -s FILE - Verdadeiro se o arquivo existir e tiver um tamanho diferente de zero. -u FILE - True se o sinalizador set-id-user-id (suid) estiver definido. -w FILE - Verdadeiro se o arquivo existir e for gravável. -x FILE - True se o arquivo existe e é executável.

Conclusão

Neste guia, mostramos como verificar se existe um arquivo ou diretório usando o Bash.

terminal bash