Bash - teste se existe arquivo ou diretório
- 2693
- 679
- Leroy Lebsack
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" fi123456 | #!/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" fi123456 | #!/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" fi123456 | #!/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" fi123456 | #!/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.registro1 | [[ ! -f /tmp /testfile.log] && touch /tmp /testfile.registro |
Para diretório:
[[ ! -d /tmp /mydir] && mkdir -p /tmp /mydir1 | [[ ! -d /tmp /mydir] && mkdir -p /tmp /mydir |
- « Como instalar o módulo Xcache PHP em cpanel
- Como instalar o LightTPD com PHP e MARIADB no CentOS/RHEL 6/5 »