Subshells Linux para iniciantes com exemplos

Subshells Linux para iniciantes com exemplos

Utilizar sub -Shells in Bash oferece a você a capacidade de gerar informações sensíveis ao contexto a partir do comando BASH. Por exemplo, se você deseja modificar uma sequência de texto dentro de um eco Declaração, então isso pode ser feito facilmente com as subs -grandes.

Neste tutorial, você aprenderá:

  • Como usar empregar o uso de sub -explosões em bash
  • Como usar sub -Shells para obter informações sensíveis ao contexto
  • Exemplos básicos de uso de sub -mais de casca
Subshells Linux para iniciantes com exemplos

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
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: Duas sintaxes diferentes

Bash permite duas sintaxes de subshell diferentes, ou seja, $ () e declarações cercadas de back-tick. Vejamos alguns exemplos fáceis para começar:

$ echo '$ (echo' a ')' $ (echo a) $ echo "$ (echo 'a')" a $ echo "a $ (echo 'b' c" abc $ echo "a'echo 'b' b "C" ABC 


No primeiro comando, como exemplo, usamos ' citações únicas. Isso resultou em nosso comando subshell, dentro das citações únicas, a ser interpretada como texto literal em vez de um comando. Esta é a festa padrão: ' indica literal, " indica que a string será analisada para sub -grandes e variáveis.

No segundo comando, trocamos o ' para " e assim a string é analisada para comandos e variáveis ​​reais. O resultado é que uma subshell está sendo iniciada, graças à nossa sintaxe de subshell ($ ()) e o comando dentro da subshell (eco 'a') está sendo executado literalmente e, portanto, um a é produzido, que é então inserido no nível abrangente / superior eco. O comando nesse estágio pode ser lido como eco "a" e assim a saída é a.

No terceiro comando, expandimos ainda mais para deixar mais claro como as subs-grandes funcionam no contexto. Nós ecoando a carta b Dentro da subshell, e isso é unido à esquerda e à direita pelas letras a e c produzindo a saída geral ser abc de maneira semelhante ao segundo comando.

No quarto e último comando, exemplificamos a sintaxe de sub-mais de subshell alternativa de usar back-ticks em vez de $ (). É importante saber que $ () é a sintaxe preferida e em alguns casos remotos, a sintaxe baseada em back-tick pode produzir alguns erros de análise onde o $ () não. Assim, eu o encorajaria fortemente a usar sempre o $ () Sintaxe para subshells, e também é isso que usaremos nos seguintes exemplos.

Exemplo 2: um pouco mais complexo

$ toque a $ echo "-$ (ls [a-z])" -a $ echo "-=-|| $ (ls [a-z] | xargs ls -l) ||-=-"-=-|| -rw -rw-r-- 1 Roel Roel 0 5 de setembro 09:26 a ||-=- 

Aqui, primeiro criamos um arquivo vazio usando o toque a comando. Posteriormente, nós usamos eco Para produzir algo que nossa sub -Shell $ (ls [a-z]) irá gerar. Claro, podemos executar o ls diretamente e produz mais ou menos o mesmo resultado, mas observe como estamos adicionando - para a saída como um prefixo.

No comando final, inserimos alguns caracteres na frente e no final do eco comando que faz a saída parecer um pouco melhor. Usamos uma subshell para primeiro encontrar o a Arquivo que criamos anteriormente (LS [A-Z]) e então - ainda dentro da subshell - passe os resultados deste comando (que seria apenas a literalmente - i.e. o arquivo que criamos no primeiro comando) para o ls -l usando o tubo (|) e a Xargs comando. Para mais informações sobre XARGs, consulte nossos artigos Xargs para iniciantes com exemplos e Xargs com vários rosqueados com exemplos.

Exemplo 3: Citações duplas dentro de subs-Shells and Sub-Subshells!

echo "$ (echo" $ (echo "ele funciona") "| sed 's | it | é certamente |')" Certamente funciona 


Legal, não? Aqui vemos que citações duplas podem ser usadas dentro da subshell sem gerar erros de análise. Também vemos como uma subshell pode ser aninhada dentro de outra subshell. Você é capaz de analisar a sintaxe? A maneira mais fácil é começar "no meio ou no núcleo de todas eco "It funciona".

Este comando será lançado funciona Como resultado da chamada de subshell $ (echo "It Works"). Foto funciona no lugar da subshell, eu.e.

eco "$ (echo", funciona "| sed 's | it | it certamente |')" Certamente funciona 

Isso já parece mais simples. Em seguida, é útil saber que o sed o comando fará um substituto (graças ao s comando pouco antes do | separador de comando) do texto isto para Certamente. Você pode ler o sed comando como Substitua __it__ por __it certamente__. A saída da subscell será assimCertamente funciona ', eu.e.

eco "certamente funciona", certamente funciona 

Conclusão

Neste artigo, vimos isso Certamente trabalhar (trocadilho pretendido) e que eles podem ser usados ​​em ampla variedade de circunstâncias, devido à sua capacidade de serem inseridas em linha e dentro do contexto do comando abrangente. As subs -grandes são muito poderosas e, quando você começar a usá -las, bem, provavelmente não haverá parar. Muito em breve você estará escrevendo algo como:

$ Var = "adeus"; eco "obrigado $ (echo" $ var "| sed 's |^| e |')" | sed 's | k | k you |' 

Este é para você tentar brincar com! Obrigado e adeus

Tutoriais do Linux relacionados:

  • Como usar as sub -mais de bases dentro das declarações if if
  • Subshells avançados de Linux com exemplos
  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Multi-thread Bash Script e Gerenciamento de Processos no…
  • Mastering Bash Script Loops
  • Comandos básicos do Linux
  • Comandos Linux: os 20 comandos mais importantes que você precisa para…
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…