Exemplos úteis de linha de comando BASH - Parte 3
- 2947
- 142
- Arnold Murray
Bash é uma interface de shell variada com muitas opções de programação e uma rica linguagem instrucional. É fácil perder os recursos e dinâmicos do Bash, então esta série apresenta várias dicas, truques, exemplos e pegadas quando se trata de usar o Bash. Para os dois primeiros artigo desta série, consulte o nosso artigo, dicas de linha de comando e truques úteis da linha de comando BASH Parte 2 e Exemplos de linha de comando BASH úteis Parte 3.
Nesta série de tutoriais, você aprenderá:
- Dicas úteis da linha de comando Bash, truques e métodos
- Como interagir com a linha de comando Bash de maneira avançada
- Como aprimorar suas habilidades de bash em geral e se tornar um usuário de bash mais proficiente
Requisitos de software e convenções usadas
Categoria | Requisitos, convenções ou versão de software usada |
---|---|
Sistema | Independente da distribuição Linux |
Programas | Linha de comando Bash, sistema baseado em Linux |
Outro | Qualquer utilidade que não esteja incluída no shell bash por padrão pode ser instalada usando sudo apt-get install utility-name (ou yum install para sistemas baseados em redhat) |
Convenções | # - requer que o Linux -Commands seja executado com privilégios de raiz diretamente como usuário root ou por uso de sudo comando$-exige que o Linux-Commands seja executado como um usuário não privilegiado regular |
Exemplo 1: Verificando corretamente a existência de arquivos e diretórios
Podemos verificar a presença de um diretório facilmente usando o -d
(Existe um diretório com o nome especificado) em uma cláusula em um se
declaração:
$ Mypathtocheckforexistence = "$ pwd" $ echo "$ mypathtocheckforexistência"/home/roel/iamhappy $ if [-d $ mypathtocheckforexistence]; Então eco "existe!"; Fi existe!
No entanto, é igualmente fácil cometer um erro difícil de dividir em algumas áreas do Bash. Por exemplo, vamos considerar (e ver se você consegue encontrar o bug);
$ MypathtocheckForexistance = "/nãoNotReallyExist" $ se [-d $ myPathtocheckForexistence]; Então eco "existe!"; Fi existe! $ ls /não não é reallyExist LS: não pode acessar
Por que o se
Verifique chega à conclusão de que o /não não é realmente existente
Diretório existe? Você pode ver o bug?
A questão aqui é que há um erro de digitação no nome da variável. Existência
vs EXISTÊNCIA
..
Talvez um pouco atrevido, mas com toda a seriedade, isso também deve ser muito fácil de se deparar com o Gotcha:
$ se [-d]; Então eco "existe!"; Fi existe!
E mais significativamente;
$ Var1 = "; se [-d $ var1]; então eco" existe!"; Fi existe!
Assim, se você esqueceu a inicialização da variável de nome do diretório que está posteriormente verificando, ou o nome da variável é incorreto, o resultado será que o Bash se
a declaração retorna que o diretório existe! Não há mais menção sobre esta exceção interessante no manual (ref Homem Bash
) que apenas esclarece isso -d
é Verdadeiro se o arquivo existe e for um diretório..
Então, como podemos consertar isso?
Exemplo 2: Uma maneira melhor de verificar a existência de arquivos e diretórios
A correção é fácil; Podemos citar nossa variável com citações duplas ("
), que então fará o se
não padrão para o resultado sempre verdadeiro. Como uma nota lateral interessante para pensar mais, e talvez seu comentário experiente abaixo com o mesmo efeito, é preciso se perguntar por que foi implementado assim e o que a implementação sempre subjacente.
$ Var1 = "; se [-d" $ var1 "]; então eco" existe!"; fi $
Uma solução simples e elegante. Ao invés de se
declaração agora sendo analisada como Se [-d]
que, como vimos, sempre avalia para verdadeiro, agora é analisado como (desde que VAR1
está vazio pelo menos) Se [-d ""]
o que resulta em falso e assim o então
Cláusula não é executada.
Exemplo 3: sempre quis extrair o conteúdo de um .Arquivo Deb?
Às vezes, algo quebra em um sistema, e podemos querer obter um único arquivo de um .Deb
pacote. .Deb
Pacotes (pacotes de instalação no estilo Debian, como também usado pelo Ubuntu e Mint) podem ser facilmente encontrados online, mas nem sempre é tão evidente sobre como extrair arquivos dele. Para fazer isso, podemos:
ar x algum_deb_file.Dados Deb Tar -xf.alcatrão.xz
ar
é uma ferramenta para criar, modificar e extrair de arquivos, como o manual (homem ar
) explica. Esses comandos produzirão os arquivos dentro do .Deb
pacote. Cada .Deb
o arquivo terá dois arquivos de arquivo, ou seja, ao controle.alcatrão.xz
e dados.alcatrão.xz
(um padrão comum) e - como você pode ver no exemplo - é o dados.alcatrão.xz
arquivo que precisa ser expandido para ver os arquivos dentro do .Deb
pacote.
Conclusão
Neste artigo, exploramos maneiras de verificar corretamente a existência de arquivos e diretórios usando a citação adequada, e exemplificamos como é fácil cometer erros nesta área. Sempre teste seus scripts e tente uma variedade de diferentes situações e cenários. Também analisamos como podemos extrair conteúdo de um .Deb
arquivo usando o ar
e alcatrão
comandos. Como sempre, aproveite a codificação e deixe um comentário abaixo com suas descobertas!
- Exemplos úteis de linha de comando bash e exemplos de truques - Parte 1
- Exemplos úteis de linha de comando bash e exemplos de truques - Parte 2
- Exemplos úteis de linha de comando BASH - Parte 3
- Exemplos úteis de linha de comando Bash e truques - Parte 4
- Exemplos úteis de linha de comando BASH - Parte 5
Tutoriais do Linux relacionados:
- Uma introdução à automação, ferramentas e técnicas do Linux
- Mastering Bash Script Loops
- Exemplos úteis de linha de comando bash e exemplos de truques - Parte 1
- Exemplos úteis de linha de comando bash e exemplos de truques - Parte 2
- Exemplos úteis de linha de comando Bash e truques - Parte 4
- Coisas para instalar no Ubuntu 20.04
- Ubuntu 20.04 truques e coisas que você pode não saber
- Loops aninhados em scripts de basquete
- Ubuntu 20.04 Guia
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- « Exemplos úteis de linha de comando bash e exemplos de truques - Parte 2
- Exemplos úteis de linha de comando Bash e truques - Parte 4 »