Metacaracteres do Linux e seus significados

Um metacaractere é qualquer caractere que possui um significado especial, como um carat (^), cifrão ($) ou um asterisco (*). Linux tem um bom número desses metacaracteres, e seus significados diferem dependendo de qual Comando Linux ou programa que você usa.

O ponto final como um metacaractere (.)

O ponto final (.) indica a posição atual ao executar comandos como CD, achar, ou sh. Em aplicações como awk, grepe sed, é um curinga que denota um número específico de qualquer caractere.

Como exemplo, o seguinte comando encontra todos Arquivos MP3 na pasta atual e suas subpastas.

achar. -tipo f -nome '* .mp3'

Se você executar esse comando no diretório de trabalho atual (pwd), verá os resultados retornados, supondo que você mantenha os arquivos MP3 em uma pasta de música em sua pasta pessoal.

Agora olhe para este comando:

ps -ef | grep f..efox

O comando ps lista todos os processos em execução no seu computador. O comando grep pega linhas de entrada e procura um padrão.

Caractere de ponto do Linux

O comando ps -ef recupera uma lista de processos em execução. O cano (

|) o metacaractere envia essa lista para o comando grep, que procura por qualquer linha na lista que contém f..efox, onde os pontos se referem a dois de qualquer caractere.

Se o Firefox estiver rodando, você obterá uma correspondência. Da mesma forma, se um programa chamado fonefox ou freefox estiver em execução, eles também serão retornados.

Se você precisar pesquisar apenas um único caractere, em vez de usar o metacaractere ponto final (.), Use o caractere? metacaractere. Usando o? metacaractere refere-se a qualquer caractere único no início ou no final do padrão.

O asterisco como um metacaractere (*)

O asterisco (*) é um metacaractere universalmente conhecido. Significa zero ou mais de qualquer caractere ao pesquisar um padrão. Por exemplo:

ls * .flac
Lista de asterisco Linux

o * .flac parte do comando retorna uma correspondência para qualquer nome de arquivo que termine em .flac. Da mesma forma, você pode usar o asterisco com o comando grep na última seção da seguinte maneira:

ps -ef | grep f * efox

Isso difere um pouco porque o asterisco significa zero ou mais, portanto, além de localizar firefox, facefox e fonefox, também encontra flutefox, ferretfox e fefox.

Asterisco do Linux

O Carat como Metacaractere (^)

O quilate (^) é usado para denotar o início de uma linha ou string. Então, como é usado?

O comando ls lista os arquivos em uma pasta, da seguinte maneira:

ls -a

Se você quiser listar os arquivos em uma pasta que começa com uma certa string, por exemplo, gnome, o carat pode ser usado para especificar essa string. Por exemplo:

ls -a | grep ^ gnome

Isso lista os arquivos que começam com gnome. Se você quiser arquivos com gnome em qualquer lugar do nome do arquivo, use o asterisco.

Personagem Linux quilate

No exemplo acima, o comando ls retorna uma lista de nomes de arquivos e passa essa lista para o comando grep, que é usado para correspondência de padrões. Grep sabe que o símbolo do quilate significa encontrar qualquer coisa que comece com os caracteres que vêm depois dele e, neste caso, é o gnomo.

O símbolo do dólar como um metacaractere ($)

O símbolo do dólar ($) tem vários significados como um metacaractere no Linux. Quando usado para combinar padrões, significa o oposto de quilate e denota qualquer padrão que termine com uma determinada string. Por exemplo:

ls | grep png $

Isso lista todos os arquivos que terminam com png.

O símbolo do dólar também é usado para acessar variáveis ​​de ambiente dentro do shell bash. Por exemplo:

#! /bin/bash
exportar cachorro = molly
echo $ dog
Personagem de cifrão Linux

A linha exportar cachorro = molly cria uma variável de ambiente chamada cão e define seu valor Molly. Para acessar a variável de ambiente, use o símbolo $. Com o símbolo $, o echo $ dog declaração exibe molly. Sem isso, o cachorro eco declaração exibe a palavra cachorro.

Metacaracteres de escape (\\)

Às vezes, você não deseja que o metacaractere tenha um significado especial. Por exemplo, se um arquivo é chamado f.refox e outro arquivo é chamado Raposa de fogo.

Agora observe o seguinte comando:

ls | grep f.refox

O que você acha que foi devolvido? Ambos f.refox e firefox são retornados porque ambos correspondem ao padrão.

Personagem de escape do Linux

Para retornar apenas f.refox, escape do ponto final para significar realmente um ponto final, da seguinte maneira:

ls | grep f \\. refox

Parênteses como um metacaractere ([])

Você pode usar colchetes ([ ]) ao pesquisar padrões. Os colchetes especificam letras específicas para corresponder a qualquer lugar no padrão. Por exemplo:

ls | grep [abc]

Isso lista todos os arquivos que contêm as letras a, b ou c.

Caractere de colchete Linux

Você pode usar colchetes no início, no final ou no meio de um padrão de pesquisa.

Para pesquisar um intervalo de letras, use o caractere hífen (-). Por exemplo, ls [a-h] * retorna arquivos que começam com qualquer letra de a a h.

O Metacaractere Sotaque Grave

Nos exemplos acima, o metacaractere pipe envia os resultados de um comando (como o comando ls) para outro comando (como o comando grep).

Uma maneira alternativa de fazer isso é usar a citação anterior, também conhecida como sotaque grave (`), para inserir os resultados de um comando em outro comando. Para fazer isso, armazene o resultado de um comando em uma variável. Por exemplo:

comando = `ls -lah`
echo $ command
Personagem de backtick do Linux

O exemplo é super artificial e provavelmente você nunca fará nada parecido, mas pode ver como funciona. O personagem backtick executa um comando e salva o resultado. Isso pode ser útil em scripts, mas é menos flexível do que usar o pipe para comandos simples.

Metacaracteres comuns e seus significados

Personagem Significado
. Qualquer personagem.
* Zero ou mais caracteres.
^ Corresponde a qualquer linha ou string que comece com um padrão (por exemplo, ^ gnome).
$ Corresponde a qualquer linha ou string que termine com um padrão (por exemplo, gnome $).
\ Escapa o próximo caractere para remover seu significado especial.
[] Corresponde a um de uma lista ou intervalo (por exemplo, ["abc", "def"] ou [1..9]).
+ Corresponde a um ou mais precedentes (por exemplo, grep a +).
? Corresponde a zero ou um precedente.