Como verificar se um caminho é um diretório ou algo mais no script de bash

Como verificar se um caminho é um diretório ou algo mais no script de bash

Estamos tentando desenvolver um script Ubuntu muito básico que nos permitirá fornecer as informações, seja um nome de arquivo ou talvez uma pasta. Como posso verificar se existe uma pasta dentro de um script de shell sob as máquinas virtuais do tipo Linux ou Unix? Ou como eu vejo se existe um arquivo? Como um usuário distinguirá se o caminho mencionado for um diretório ou um arquivo? Então, vamos ter alguns exemplos em um script bash para elaborar esse conceito. Certifique -se de fazer login no seu sistema primeiro. Estamos utilizando o Ubuntu 20.04. Após o login, abra seu aplicativo de console para fazer exemplos.

Exemplo 01:

Para a abertura da concha, tente “Ctrl+alt+t”. Criando um arquivo bash primeiro começando com um exemplo simples de verificação se o caminho mencionado em um arquivo bash for um arquivo ou diretório. Para criar um arquivo de código Bash, digite "Touch" no terminal enquanto menciona o nome de um arquivo com o ".shExtensão. Então, nomeamos o arquivo “teste.sh”. Acerte a chave “Digitar”Para processar a consulta.

Teste de Touch.sh

Você pode encontrar facilmente o arquivo bash recém-criado no diretório inicial. Para adicionar um código Bash, precisamos abri -lo em algum editor. Então, estamos utilizando um editor GNU embutido do Ubuntu 20.04. Por isso, tentamos a consulta embaixo de uma concha e a abrimos em um editor.

$ nano teste.sh

O arquivo foi lançado em um editor. Escreva o script mostrado abaixo. Em primeiro lugar, adicione a extensão do BASH no arquivo como “#!/Bin/Bash ”. Declaramos uma nova variável "V1" e atribuímos um "caminho" de um arquivo como seu valor. Fica claro pelo caminho que indica alguns arquivos bash. A declaração "se" foi inicializada. Dentro dos aparelhos [], temos que usar a bandeira de "-d" representando o diretório dentro de sua parte da condição. Ele verificará se o valor variável mencionado é um diretório ou outra coisa. Se a condição atingir, ele executará a parte “então” e exibirá “$ v1 é um diretório”. Caso contrário, ele estará executando a parte da declaração "se" e exibirá "$ v1 é um arquivo" no terminal do shell. O "FI" afirma que a declaração "se" foi encerrada aqui. Depois de salvar este código Bash, voltaremos ao console via “Ctrl+s" e "Ctrl+x”Consecutivamente.

Agora a hora é executar o arquivo Bash “Teste.sh ”. Portanto, usamos a instrução Bash em nosso console com o nome do arquivo para verificar a saída. A saída para esta instrução mostra que o caminho mencionado no arquivo está especificando um arquivo. Portanto, podemos dizer que a parte "else" deve ter sido executada seu tempo.

Teste de $ bash.sh

Exemplo 02:

Vamos ver o resultado de um diretório desta vez. Desta vez, veremos como a bandeira “-d” funciona em uma variável contendo um caminho para um diretório. Então, abrimos o arquivo "Teste.SH ”novamente no editor através da consulta“ Nano ”na concha.

$ nano teste.sh

Depois de abri -lo, atualizamos o valor da variável "V1" e mudamos o caminho para um caminho de diretório. Substituímos o arquivo “arquivo.sh "com um diretório" fotos/". O script bash restante é o mesmo em todo o arquivo em um editor. Você precisa salvar de maneira simples e rápida o código da Bash atualizado e sair do editor usando "Ctrl+S" primeiro e depois "Ctrl+X" depois disso.

Então, vamos executar nosso arquivo novamente. Para execução, a mesma consulta acima foi utilizada no console. Desta vez, a execução mostra que o caminho mencionado no script bash é um diretório dentro do diretório inicial do Ubuntu 20.04.

Teste de $ bash.sh

Exemplo 03:

Nos dois exemplos acima, você viu como usar uma bandeira "-d" para ver se a variável de caminho mencionado é um diretório ou não. Desta vez, utilizaremos outra bandeira, "-f", em nosso exemplo, especificando se o caminho mencionado é um arquivo ou não. Por outro lado, usaremos uma declaração "if-else" aninhada em nosso código Bash para usar as bandeiras "-d" e "-f". Nós abrimos o “teste.Arquivo SH ”no editor GNU através do terminal usando a instrução“ Nano ”mais uma vez.

$ nano teste.sh

Depois de abrir o documento BASH, escrevemos o script de bash abaixo da bolsa dentro dele. Adicionou a extensão do BASH e inicializou uma variável V1, contendo um caminho de arquivo como seu valor. Além disso, a declaração "if-else" aninhada foi utilizada corretamente para verificar se o caminho de uma variável é um arquivo ou um diretório. Então, dentro da primeira, se afirmamos, mencionamos uma condição para verificar se o valor da variável é um diretório por meio da bandeira "-d". Se a condição se encontrar, ele imprimirá "$ v é um diretório"; Caso contrário, a outra parte de uma declaração será compilada. Na parte "else", há outra declaração "if-else" mencionada. Dentro da parte "se" desta declaração, a condição foi usada para verificar se o caminho variável "V" contém um arquivo ou não através da bandeira "-f". Se o caminho contiver um arquivo, ele imprimirá que "$ v é um arquivo"; Caso contrário, a declaração de eco "else" será compilada no terminal.

Depois que o código foi salvo, este é um momento para compilar o script de bash por meio de uma consulta de bash. Portanto, usamos a consulta "Bash" com o nome do arquivo mencionado nela. A saída é a mesma que esperávamos. Como o valor variável contém o caminho que especifica o caminho do arquivo, ele exibe que o "$ v é um arquivo".

Teste de $ bash.sh

Exemplo 04:

No exemplo ilustrado acima, usamos o caminho para um arquivo para ver como a declaração "if-else" aninhada reage ao usar as bandeiras "-d" e "-f". Desta vez, usaremos o caminho do diretório. Abra o arquivo mais uma vez e atualize o valor do caminho da variável. Nós substituímos “teste.txt "com" documentos/". O script restante é o mesmo.

Ao compilar com sucesso um script Bash, o caminho declarado no valor variável "V" é um diretório, e.g., Transferências.

Teste de $ bash.sh

Exemplo 05:

O último e bônus exemplo é para prática extra. Abra o novo arquivo “Arquivo.sh ”e preencha -o com o código abaixo. Duas variáveis ​​foram declaradas para mostrar o caminho e o caminho do diretório consecutivamente. As declarações "if-else" foram utilizadas com a bandeira "-d" para especificar o tipo de caminho, e.g., diretório ou arquivo.

Depois que o código é compilado, a primeira variável contém um arquivo e o segundo contém um diretório conforme a saída abaixo.

$ BASH FILE.sh

Conclusão:

Neste guia, vimos como descobrir que o caminho mencionado é um arquivo, um diretório ou outra coisa. Usamos as declarações "if-else" e aninhadas "if-else" enquanto utiliza bandeiras "-d" e "-f" em nossos exemplos para elaborar melhor.