Verifique se o arquivo existe – Tutorial e comandos a serem usados

Ao criar um script bash, você pode encontrar uma situação em que precisa descobrir se um arquivo existe ou não para realizar alguma ação com ele. Você pode usar o comando test para verificar se o arquivo existe e de que tipo é.

Neste tutorial, mostraremos como verificar se o arquivo existe nos sistemas operacionais baseados em Linux.

Sintaxe básica do comando de teste

A sintaxe básica do comando de teste para verificar se o arquivo existe, conforme mostrado abaixo:

test -e file

Ou

test -f file

Onde:

  • -e
    Esta opção irá verificar se um arquivo existe independentemente do tipo.
  • -f
    Esta opção irá verificar se um arquivo existe apenas se o ARQUIVO for um arquivo normal.

Você deve ver a página do manual do comando de teste conforme mostrado abaixo:

man test

Você deve ver a seguinte tela :

Teste se o arquivo existe usando a linha de comando

Nesta seção, mostraremos a você como verificar se o arquivo existe usando a linha de comando:

Execute o seguinte comando para verificar se existe um arquivo chamado / etc / fstab (T rue):

test -f /etc/fstab

Em seguida, execute o seguinte comando para definir o código de saída para 0 ou 1, sempre que o teste for bem-sucedido ou não.

echo $?

Resultado:

0

A saída é 0, o que significa que o arquivo / etc / fstab existe.

Você também pode use o seguinte comando para verificar se o arquivo existe:


echo $0

Resultado:

0

Em seguida, execute o seguinte comando para testar se o arquivo / etc / fabab existe ( Falso).

test -f /etc/fabab
echo $?

Resultado:

1

A saída é 1, o que significa que o arquivo / etc / fabab não existe.

Você também pode testar se um arquivo chamado /etc/rc.local existe ou não usando a execução condicional bash conforme mostrado abaixo:

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

Ou

&& echo "Exists" || echo "Not Exists"

Se o arquivo chamado /etc/rc.local existir, você deverá ver a seguinte saída:

Exists

Você também pode verificar se existem vários arquivos ou não usando um único comando:

&& echo "both files exist"

Ou

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

Você deve ver a seguinte saída:

both files exist

Teste se o arquivo existe no Bash

Nesta seção, criaremos um script bash e verificaremos se um arquivo existe ou não, imprimindo uma mensagem.

Vamos criar um arquivo chamado test.sh e verificar se um arquivo /etc/rc.local existe ou não:

nano test.sh

Adicione as seguintes linhas:

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Salve e feche o arquivo e execute o script com o seguinte comando:

bash test.sh

Você deve ver a seguinte saída:

The file "/etc/rc.local" exists.

Agora, vamos criar um arquivo test.sh e testar se o arquivo / etc / rc.localad existe ou não:

nano test.sh

Adicione as seguintes linhas:

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Salve e feche o arquivo e execute o script com o seguinte comando:

bash test.sh

Você deve ver a seguinte saída:

The file "/etc/rc.localad" is not exists.

Você também pode descobrir se um arquivo existe ou não e executar alguma ação nele no script bash.

Por exemplo, encontre um arquivo chamado / etc / hosts e copie-o para o diretório / opt se o arquivo existir.

Para fazer isso, crie um arquivo chamado test.sh:

nano test.sh

Adicione as seguintes linhas:

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

Salve e feche o arquivo e execute o script usando o seguinte comando:

Agora, teste o diretório / opt com o seguinte comando:

ls /opt/hosts

Você deve ver o arquivo hosts na seguinte saída:

/opt/hosts

Você também pode usar a expressão! para verificar se o arquivo não existe.

Por exemplo, execute o seguinte comando para verificar se o arquivo / etc / hosting não existe:

&& echo "File does not exist"

Ou

test ! -f /etc/hosting && echo "File does not exist"

Você deve ver a seguinte saída:

File does not exist

Teste se o diretório existe

Você também pode descobrir se um diretório existe ou não usando a opção -d.

Por exemplo, verifique se o diretório / etc / apache2 existe ou não.

&& echo "Directory is exists"

Ou

test -d /etc/apache2 && echo "Directory is exists"

Você deve ver a seguinte saída:

Directory is exists

Você também pode criar um script bash com expressões condicionais para verificar se um diretório existe ou não.

Crie um arquivo chamado test.sh conforme mostrado abaixo:

nano test.sh

Adicione as seguintes linhas:

Salve e feche o arquivo quando terminar. Então, dê permissão adequada com o seguinte comando:

chmod 755 test.sh

Em seguida, teste se o diretório / etc / nginx está disponível ou não com o seguinte comando:

./test.sh /etc/nginx

Você deve ver a seguinte saída:

Directory /etc/nginx/ exists.

Em seguida, teste se o diretório / etc / linux está disponível ou não com o seguinte comando:

./test.sh /etc/linux

Você deve ver a seguinte saída:

Directory /etc/linux does not exists

Operadores de teste de arquivo no Bash

Os seguintes operadores de teste de arquivo o ajudarão a verificar se um “arquivo” existe e tem tipos específicos:

  • -b
    FILE existe e é um bloco especial
  • -c
    FILE existe e é um caractere especial
  • -d
    FILE existe e é um diretório
  • -e
    FILE existe
  • -f
    FILE existe e é um arquivo normal
  • -g
    FILE existe e é set-group-ID
  • -G
    FILE ex ists e pertence ao ID de grupo efetivo
  • -h
    FILE existe e é um link simbólico (o mesmo que -L)
  • -k
    FILE existe e tem seu sticky bit set
  • -L
    FILE existe e é um link simbólico (o mesmo que -h)
  • -O
    FILE existe e é propriedade do usuário efetivo ID
  • -p
    FILE existe e é um pipe nomeado
  • -r
    FILE existe e a permissão de leitura é concedida
  • -s
    FILE existe e tem um tamanho maior que zero
  • -S
    FILE existe e é um soquete
  • -u
    FILE existe e seu bit set-user-ID está definido
  • -w
    FILE existe e permissão de gravação é concedida
  • -x
    FILE existe e permissão de execução (ou pesquisa) é concedida

Conclusão

Leave a Reply

Deixe uma resposta

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