O recurso mais poderoso do shell Linux Bash é sua capacidade de contornar arquivos e redirecionar sua entrada e saída com eficiência. O Linux usa caracteres especiais ou símbolos conhecidos como metacaracteres que adicionam significado especial a um comando shell com relação à busca de arquivos e conexão de comandos.
Os metacaracteres são úteis para listar, remover e copiar arquivos no Linux. No entanto, a função de cada metacaractere difere dependendo do comando com o qual você o está usando.
Este artigo fornece um guia detalhado sobre diferentes tipos de metacaracteres no Linux. Por fim, explicamos como esses caracteres especiais ajudam na conexão e expansão de comandos.
O shell do Linux permite que você salve as teclas digitadas enquanto digita comandos usando metacaracteres entre arquivos ou nomes de diretórios. Esses caracteres ajudam você a se referir a um grupo de arquivos ou a um diretório para listar, mover ou realizar outras atividades.
Estes são alguns metacaracteres de correspondência de arquivos que o shell do Linux pode interpretar:
- * (asterisco): Corresponde a ocorrências únicas ou múltiplas de um caractere
- ? (Ponto de interrogação): Corresponde a um único caractere ou a uma ocorrência de padrão
- [ ] (Colchetes): corresponde a qualquer número, símbolo ou alfabeto separados por hífen especificados entre colchetes
Uma maneira ideal de praticar metacaracteres no Linux é criar uma nova pasta vazia dentro do /tmp diretório.
sudo mkdir /tmp/meta
Agora navegue no /tmp/meta diretório usando o comando cd e crie novos arquivos vazios usando o toque, do seguinte modo:
toque apple.txt cidra.sh vinagre.php cat.txt lemon.txt suco.sh catfish.sh
Use os seguintes comandos para testar o "*" metacaractere e exiba as saídas:
lsc*
Saída:
catfish.sh cat.txt cidra.sh
ls c*h
Saída:
catfish.sh cidra.sh
é *r*
Saída:
cidra.sh vinagre.php
sudo rm *p*
O comando mencionado acima excluirá todos os arquivos que contenham a letra "p" em seu nome. Você pode verificar a alteração usando o comando ls da seguinte forma:
ls
Saída:
catfish.sh cat.txt cidra.sh juice.sh lemon.txt
Aqui estão alguns exemplos de "?" metacaractere para correspondência de padrões:
é um?*
Saída:
apple.txt
é c? t*
Saída:
catfish.sh cat.txt
O último comando corresponde a qualquer arquivo que comece com c e tem t como a terceira letra (cat.txt, catfish.sh, etc.).
Agora use o [av]* opção com o comando ls para listar todos os arquivos que começam com uma ou v, do seguinte modo:
ls [av]*
Saída:
apple.txt vinagre.sh
Você pode modificar o comando acima para listar apenas os arquivos que terminam com a letra t:
ls [ac]*[t]
Saída:
apple.txt catfish.txt cat.txt
Da mesma forma, você pode usar as letras separadas por hífen para definir intervalos e listar arquivos da seguinte forma:
ls [a-j]*
Saída:
apple.txt catfish.sh cat.txt cidra.sh juice.sh
Para um melhor entendimento do redirecionamento no Bash, cada processo no Linux possui descritores de arquivos, conhecidos como entrada padrão (padrão/0), saída padrão (stdout/1) e erro padrão (stderr/2). Eles determinam a origem da entrada do comando e decidem para onde enviar a saída e as mensagens de erro.
Os metacaracteres de redirecionamento ajudam a modificar essas ações redirecionando o fluxo de E/S de conteúdo. Geralmente, o shell do Linux lê a entrada do comando do teclado e grava a saída na tela. O redirecionamento de entrada permite que o comando leia o conteúdo de um arquivo em vez de um teclado, enquanto o redirecionamento de saída salva a saída do comando em um arquivo.
Em outras palavras, os metacaracteres de redirecionamento de arquivo do Linux permitem redirecionar o conteúdo para (>) e de (<) os arquivos. Os três metacaracteres de redirecionamento primários são:
- <: Direciona o conteúdo do arquivo para o comando. Por exemplo, a saída do comando para menos .bashrc é o mesmo que menos <.bashrc>.
- >: Direciona a saída do comando para o arquivo. O comando ls /etc > listas.txt salva a saída no arquivo lists.txt.
- >>: anexa a saída do comando ao conteúdo do arquivo.
wc significa contagem de palavras e você pode usá-lo para exibir a diferença entre o arquivo antes e depois de anexá-lo à saída.
Relacionado: Entendendo a E/S padrão no Linux
O metacaractere de expansão de chaves permite expandir os caracteres entre diretórios, nomes de arquivos ou outros argumentos de linha de comando. Por exemplo, você pode criar um novo diretório braçadeira dentro de /tmp pasta e crie um conjunto de arquivos usando o comando touch da seguinte forma:
sudo mkdir /tmp/brace; cd /tmp/brace
teste de toque{1,2,3,4,5}
Agora, você pode verificar se o touch criou os arquivos ou não usando o comando ls.
ls
Saída:
teste1 teste2 teste3 teste4 teste5
Você pode especificar várias listas para gerar nomes de arquivos com base nas combinações dos elementos da lista. Por exemplo:
toque {maçã, cidra, vinagre}. {fruta, líquido, azedo}
toque {a, b, c}.{1,2,3}
O último comando criará os seguintes arquivos no diretório atual:
O primeiro comando usa dois conjuntos de chaves para associar nomes de arquivo em cada conjunto com o outro. Você também pode escrever o último comando como toque em {a..c}.{1..3} para especificar o intervalo entre a e c e 1 e 3.
Além de criar arquivos, você também pode usar a expansão de chaves para remover ou copiar arquivos para outros locais.
Aqui está uma tabela de alguns metacaracteres mais conhecidos para conexão e expansão de comandos com seus nomes, descrição e exemplos para praticar:
Nome | Descrição | Exemplo |
---|---|---|
Tubo (|) | Conecta a saída do comando como uma entrada para o outro comando. | cat /etc/passwd | raiz grep |
Ponto e vírgula (;) | Permite a execução de comandos sequenciais, um após o outro. | cd /etc; ls -la; chmod +x /tmp/script.php |
E comercial (&) | Executa os processos ou comandos em segundo plano. | find / -perm -u=s -type f & |
Dólar ($) | Expande a expressão aritmética e a passa para o shell | echo "o total de arquivos neste diretório é: $(ls | wc -l)" |
Redirecionamento Nulo (2>) | Direciona mensagens de erro padrão para o arquivo /dev/null | seu_comando 2>/dev/null |
Circunflexo (^) | Corresponde a qualquer padrão que comece com a expressão seguida por ^ | cd /etc/ssh; ls | grep ^s |
Os metacaracteres do Linux também são conhecidos como curingas que adicionam significado especial aos comandos e controlam seu comportamento. Metacaracteres otimizam o desempenho de trabalho de um usuário em um ambiente produtivo enquanto trabalham em arquivos/diretórios e conectam/expandem os comandos do shell do Linux.
Além disso, metacaracteres também são os blocos de construção de expressões regulares. Além disso, aprender sobre metacaracteres e seu uso é uma habilidade importante se você quiser se tornar um usuário pró-Linux.
Quer acelerar seu fluxo de trabalho Python com alguns comandos simples? As expressões regulares são suas amigas.
Leia a seguir
- Linux
- Linux elementar
- Shell Bash Linux
Rumaisa é redatora freelancer na MUO. Ela já desempenhou muitos cargos, de matemática a entusiasta de segurança da informação, e agora está trabalhando como analista de SOC. Seus interesses incluem ler e escrever sobre novas tecnologias, distribuições Linux e qualquer coisa relacionada à Segurança da Informação.
Assine a nossa newsletter
Junte-se à nossa newsletter para dicas de tecnologia, análises, e-books gratuitos e ofertas exclusivas!
Clique aqui para assinar