Bash - teste se existe arquivo ou diretório

Bash - teste se existe arquivo ou diretório

Se você precisar verificar se existe um arquivo ou diretório, você pode usar o comando de teste. Ele retornará verdadeiro se houver um arquivo ou diretório e falso caso contrário. O comando de teste pode ser usado com qualquer um dos seguintes parâmetros:

Este artigo tem poucos detalhes sobre o teste se existir um arquivo ou diretório no sistema. O que pode ser muito útil para você enquanto escreve scripts de shell.

#1. Teste se existe um arquivo

Se exigimos adicionar algum conteúdo ou precisar criar arquivos a partir do script. Primeiro, verifique se o arquivo já existe ou não. Por exemplo, um dos meus scripts cria logs no arquivo /tmp/testfile.registro E precisamos garantir que este arquivo exista ou não

#!/bin/bash se [-f/tmp/testfile.log] então eco "o arquivo existe" fi
123456#!/bin/bash se [-f/tmp/testfile.log] então eco "o arquivo existe" fi

As declarações acima também podem ser escritas usando o teste palavra -chave como abaixo

#!/bin/bash se teste -f/tmp/testfile.Log então eco "arquivo existe" fi
123456#!/bin/bash se teste -f/tmp/testfile.LogThen Echo "Arquivo Existe" Fi

Ou em uma única linha, podemos escrever como abaixo. Isso é muito útil ao escrever em script de shell.

[-f /tmp /testfile.log] && eco "Arquivo existe"
1[-f /tmp /testfile.log] && eco "Arquivo existe"

Para adicionar outra parte no comando acima

[-f /tmp /testfile.log] && echo "Arquivo existe" || eco "o arquivo não existe"
1[-f /tmp /testfile.log] && echo "Arquivo existe" || eco "o arquivo não existe"

#2. Teste se existir diretório

Às vezes, precisamos criar arquivos dentro de um diretório específico ou precisar de um diretório por qualquer outro motivo, devemos garantir que o diretório exista. Por exemplo, estamos verificando /tmp/mydir existe para não.

#!/bin/bash if [-d/tmp/mydir] Então echo "Diretório existe" fi
123456#!/bin/bash if [-d/tmp/mydir] Então echo "Diretório existe" fi

As declarações acima também podem ser escritas usando o teste palavra -chave como abaixo

#!/bin/bash se teste -d/tmp/mydir, então eco "o diretório existe" fi
123456#!/bin/bash se teste -d/tmp/mydirthen echo "diretório existe" fi

Ou em uma única linha, podemos escrever como abaixo

[-d /tmp /mydir] && eco "Diretório existe"
1[-d /tmp /mydir] && eco "Diretório existe"

#3. Crie arquivo/diretório se não existe

Esta é a melhor prática para verificar a existência do arquivo antes de criá -los, caso contrário, você receberá uma mensagem de erro. Isso é muito útil ao criar scripts de shell necessários para arquivar ou criação de diretórios durante o tempo de execução.

Para arquivo:

[[ ! -f /tmp /testfile.log] && touch /tmp /testfile.registro
1[[ ! -f /tmp /testfile.log] && touch /tmp /testfile.registro

Para diretório:

[[ ! -d /tmp /mydir] && mkdir -p /tmp /mydir
1[[ ! -d /tmp /mydir] && mkdir -p /tmp /mydir