Subshells Linux para iniciantes com exemplos
- 966
- 22
- Mr. Mitchell Hansen
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
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: 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á assim
Certamente 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…
- « Tutorial de depuração do GDB para iniciantes
- Como definir Crontab para executar a cada 5 minutos »