Como usar a expansão de cinta na Shell Bash do Linux

May 12, 2025
Linux
Fatmawati Achmad Zaenuri / Shutterstock

A expansão da chave é uma técnica útil para gerar listas de strings que podem ser usadas em scripts e aliases e na linha de comando do Linux. Economize tempo e evite erros digitando menos.

Expansão de cinta

Antes do shell bash Executa um comando Em uma janela de terminais ou uma linha em um script, ele verifica se precisa executar qualquer substituição no comando. Os nomes variáveis ​​são substituídos por seus valores, os aliases são substituídos pelos comandos que são taquigrafia e qualquer expansão é executada. A expansão da chave é uma forma de expansão suportada pelo bash.

A expansão de cinta está disponível em conchas modernas, mas pode estar faltando de algumas conchas antigas. Se você for usar a expansão de cinta em scripts, certifique-se de invocar uma casca que suporta a expansão de cinta, como o bash:

Nós estaremos usando bash para nossos exemplos.

Gerar listas de strings pode parecer mais uma novidade do que um benefício, mas oferece alguma funcionalidade que pode economizar tempo e pressionamentos de tecla. Muitas vezes, pode fornecer uma solução simples e elegante para um problema ou requisito.

Expansões simples.

Uma expansão de cinta está contida entre um par de chaves "{}". Pode ser uma lista de itens separados por vírgulas ou especificador de intervalo. Espaços não são permitidos dentro das chaves, a menos que você tenha enrolado a string nas aspas " " . "

Para uma lista separada por vírgula, o processo de expansão leva cada elemento por sua vez e passa para o comando de chamada. Neste exemplo, é eco isso simplesmente imprime-os na janela do terminal . Note que as vírgulas são ignoradas.

 Echo {um, dois, três, quatro} 

Uma lista pode ser palavras ou dígitos.

 Echo {1,2,3,4} 

A ordem dos elementos da lista é completamente arbitrária.

 Echo (4,2,3,1) 

Um intervalo de expansão tem um comando e um caractere final conectado com dois períodos " .. "Sem espaço em branco. Todos os elementos de lista ausentes são fornecidos automaticamente pela expansão para que o intervalo inteiro do caractere de inicialização ao caractere final seja criado.

Isso imprimirá os dígitos de 1 a 10.

 Echo {1..10} 

A numeração é arbitrária. Não precisa começar em um.

 Echo {3..12} 

Os intervalos podem ser especificados para que eles sejam voltados para trás. Isso gerará uma lista de cinco para baixo para um.

 Echo {5..1} 

Os intervalos podem incluir números negativos.

 Echo {4 ..- 4} 

Como nós anteriormente apontamos, um intervalo tem um começo e um fim personagem . Não precisa ser um número. Pode ser uma carta.

 echo {q..v} 

As letras podem correr para trás também.

 echo {f..a} 

Usando a expansão de cinta com loops

Você pode usar a expansão de cinta com intervalos em loops em scripts.

 para eu em {3..7}
Faz
   Echo $ I.
feito 

As faixas de expansão de cinta permitem que você use caracteres como a variável de loop.

 para eu em {m..Q}
Faz
   Echo $ I.
feito 

Loops são geralmente usados ​​em scripts, mas não há nada para impedi-lo de digitá-los na linha de comando para ver o que acontecerá.

 para eu em {3..7}; fazer eco $ i; feito 

 para eu em {m..Q}; fazer eco $ i; feito 

Concatenação e aninhamento

Duas expansões adjacentes não agem de forma independente uma após a outra. Eles interoperam. Cada elemento na primeira expansão é agido por cada elemento na segunda expansão.

 echo {q..v} {1..3} 

Expansões também podem ser aninhadas. Uma expansão aninhada atuará no elemento imediatamente a precedendo.

 Echo {Part-1, Part-2 {A, B, C, D}, Part-3} 

Você também pode aninhar expansões criando uma lista delimitada por vírgula de expansões de alcance.

 echo {{5..0}, {1..5}} 

Preâmbulo e PostScript

Você pode colocar texto antes e depois de uma expansão de suporte para ter esse texto incluído nos resultados da expansão. O texto colocado na frente de uma expansão é chamado de preâmbulo, enquanto o texto colocado atrás de uma expansão de cinta é chamado de PostScript.

Este comando usa um preâmbulo.

 Echo Capítulo {1..3} 

Este exemplo usa um PostScript:

 Echo {Conteúdo, papel, bilbiografia} .md 

E este comando usa ambos.

 Capítulo Echo - {1..4} .md 

Expandindo nomes e diretórios de arquivos

Como você provavelmente adivinhou agora, um dos principais usos das expansões de cinta é criar nomes de arquivo e diretório que possam ser passados ​​para outros comandos. Nós estamos usando eco como uma maneira conveniente de ver exatamente o que acontece quando uma expansão é acionada. Você pode substituir qualquer comando que leva nomes de arquivos ou nomes de diretório como entrada e use a expansão de cinta com ele.

Para rapidamente Crie alguns arquivos , usar tocar :

 Toque em File- {1..4} .txt 
 ls * .txt 

Se você tiver muitos arquivos com o mesmo nome de base, mas diferentes extensões de arquivo e deseja executar uma operação em um subconjunto deles, as expansões de cinta podem ajudar. Aqui, estamos comprimindo um subconjunto de arquivos que têm "programa" como o nome de basen em um arquivo zip chamado "source-code.zip".

Diretórios de desenvolvimento contêm muitos arquivos que terão o mesmo nome de basen como seu programa principal. Normalmente, você não quer fazer backup ou distribuir arquivos como arquivos de objeto ".o". Esta é uma maneira legal de incluir apenas os tipos de juros de arquivo.

 Programa de código de origem Zip {.c, .h, .css} 

Este comando fará uma cópia de um arquivo e anexará ".bak" para ele, fazendo uma cópia de backup do arquivo original. Um ponto interessante para observação é que a expansão da chave contém uma lista separada por vírgulas, mas o primeiro elemento está vazio. Se não tivéssemos incluído a vírgula, a expansão não teria ocorrido.

 CP Brace / New / Prog-1.C {,. bak} 
 LS BRACE / NOVO / PROG-1.C.BAK 

Para executar alguma ação em dois arquivos em diretórios diferentes, podemos usar uma expansão de cinta no caminho para os arquivos.

Neste exemplo, o diretório "Brace" contém dois subdiretórios, um chamado "novo" e um chamado "velho". Eles contêm versões diferentes do mesmo conjunto de arquivos de código-fonte. Nós vamos usar o. dif. programa para ver as diferenças entre as duas versões de "Prog-1.c".

 diff Brace / {novo, velho} /prog-1.c 

Se você tiver um esqueleto padrão de diretórios que você precisa criar no início de um projeto, poderá criá-los rapidamente usando a expansão de cinta. o mkdir. -p. Opção (pai) cria todos os diretórios parentais perdidos quando um diretório filho é criado.

 mkdir -p {fonte, construir, man, ajuda {/ páginas, / yelp, / images}} 
 Árvore 

Você pode usar a expansão de cinta com wget. para Baixe vários arquivos .

Nesse comando, vamos baixar arquivos de dois diretórios, chamados "test1" e "test2". Cada diretório detém dois arquivos chamados "Picture1" e "Imagem2".

 wget https://www.url-of-your-choice.com/test_test_test_test_Test_Test_
  

Listando os arquivos mostra os arquivos que foram recuperados e como wget. Renomeia arquivos para evitar confrontos de nome com arquivos existentes.

 LS Picture *. * 

Abraçar a cinta.

Parece que a expansão da chave é outra de Segredos mais bem guardados do Linux . Muitas pessoas me dizem que nunca ouviram falar de expansão de cinta, enquanto outros me informam que é um dos seus truques de linha de comando favoritos.

Dê uma tentativa e só pode encontrar o seu caminho em seu conjunto de truques de linha de comando.


Linux - Artigos mais populares

Como recuperar arquivos excluídos no Linux com o TestDisk

Linux Nov 18, 2024

Fatmawati Achmad Zaenuri / Shutterstock Você já excluiu um arquivo e lamentou instantaneamente? Você precisa de volta e rápido! Mas e se o arquivo for tão..


Como gerenciar servidores Linux com a interface da Web da Cockpit

Linux Dec 9, 2024

Fatmawati Achmad Zaenuri / Shutterstock Você pode facilmente monitorar e gerenciar vários computadores Linux com Cockpit, uma ferramenta de administração e..


Como atualizar Arch Linux

Linux Jul 30, 2025

Projeto Ubuntu. Chegou a hora de atualizar seu sistema Arch Linux? Se você está em arco puro ou uma distro de arco como Manjaro. e Garuda Linux,..


O que há de novo no GNOME 40?

Linux Jul 23, 2025

Fundação Gnome. O GNOME 40 tem mais que um novo esquema de numeração. Junto com seu novo visual vem uma nova maneira de trabalhar. As antigas metáforas ..


Como usar o comando fsck no Linux

Linux Aug 18, 2025

Pixza Studio / Shutterstock Todos os nossos dados importantes sentam em um sistema de arquivos de um tipo ou outro, e os problemas do sistema de arquivos são ..


O que há de novo no sistema elementar "Odin"

Linux Aug 14, 2025

Elementary, Inc. Existem muitas distribuições do Linux. (Distros) que as pessoas afirmam que são boas substituições para Windows ou MacOS. Mas há pouco..


Como reverter o kernel no Linux

Linux Sep 30, 2025

Fatmawati Achmad Zaenuri / Shutterstock.com Se o seu PC do Linux de repente tiver problemas após uma atualização para o seu sistema, é possível um ..


Como obter seu IP público em um script de Bash Linux

Linux Nov 9, 2024

Você precisará do seu endereço IP externo se deseja se conectar remotamente ao seu computador. Encontrá -lo manualmente é fácil, mas veja como encontrar seu script Linux. Endereços..


Categorias