Segundo a Wikipedia, um metacaractere é qualquer caractere que tenha um significado especial, como um quilate (^), um cifrão ($) ou um asterisco (*).
Em termos de Linux, há um número razoável desses metacaracteres e seus significados diferem dependendo de qual comando ou programa você está executando.
O ponto final como metacaractere (.)
O humilde ponto final é usado para doar a posição atual ao executar comandos como cd, find ou sh, mas dentro de aplicativos como awk, grep e sed ele é usado para denotar qualquer caractere.
Como exemplo, o seguinte comando encontrará todos os arquivos mp3 na pasta atual e abaixo.
encontrar . -name * .mp3
Se você executar esse comando em seu diretório de trabalho atual (pwd), provavelmente obterá resultados retornados, supondo que você mantenha seus arquivos de mp3 em uma pasta de músicas dentro de 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 usa linhas de entrada e procura por um padrão.
Portanto, o comando ps -ef obtém uma lista de processos em execução e dá ao grep que procura por qualquer linha na lista que tenha f..efox onde o. pode significar qualquer personagem.
Se você tiver o firefox funcionando, receberá uma correspondência. Da mesma forma, se você tiver um programa chamado fonefox ou freefox, eles também serão retornados.
O asterisco como metacaractere (*)
O asterisco é um metacaractere mais universalmente conhecido e é usado para significar 0 ou mais ao pesquisar um padrão.
Por exemplo:
encontrar . -name * .mp3
O * .mp3 retorna uma correspondência para qualquer nome de arquivo que termine em .mp3. Da mesma forma, eu poderia ter usado o asterisco com o comando grep, como mostra a seguir:
ps -ef | grep F * efox
Vale a pena notar que isto difere ligeiramente porque o asterisco significa zero ou mais, bem como encontrar firefox, facefox e fonefox, também pode encontrar flutefox, ferretfox e até mesmo apenas fefox.
O quilate como metacaractere (^)
O quilate (^) é usado para denotar o início de uma linha ou uma string. Então, como é usado?
O comando ls é usado para listar todos os arquivos em uma pasta da seguinte maneira:
ls
Se você quiser saber todos os arquivos em uma pasta que começa com uma determinada string como "gnome", o carat pode ser usado para especificar essa string.
Por exemplo:
ls | grep ^ gnome
Observe que isso lista apenas os arquivos que começam com o gnome. Se você quiser que os arquivos que têm um gnome no nome do arquivo em qualquer lugar, você retorne novamente ao asterisco.
No exemplo acima, o ls retorna uma lista de nomes de arquivos e passa essa lista para o grep, que é usado para correspondência de padrões. O 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, é um gnomo.
O símbolo do dólar como metacaractere ($)
O símbolo do dólar pode ter vários significados como um metacaractere no Linux.
Quando usado para combinar padrões, significa o oposto ao quilate e denota qualquer padrão que termine com uma string específica.
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:
cão de exportação = mollyecho $ dog
O cão de exportação de linha = molly cria uma variável de ambiente chamada dog e define seu valor como molly. Para acessar a variável de ambiente, o símbolo $ é usado. Com o símbolo $, a instrução echo $ dog exibe molly, mas sem ela, a instrução echo dog exibe a palavra dog.
Escapando metacaracteres
Às vezes você não quer que o metacaractere tenha um significado especial. E se você tiver um arquivo chamado f.refox e um arquivo chamado firefox.
Agora olhe o seguinte comando:
ls | grep f.refox
O que você acha que é retornado? Tanto f.refox quanto firefox são retornados porque ambos correspondem ao padrão.
Para apenas retornar f.refox, você precisaria escapar do ponto final para realmente significar um ponto final da seguinte forma:
ls | grep f .
Metacaracteres comuns e seus significados
| Personagem | Significado |
| . | Qualquer personagem |
| * | Zero ou mais caracteres |
| ^ | Coincidir com qualquer linha ou string que comece com um padrão (por exemplo, gnome) |
| $ | Coincidir com qualquer linha ou string que termine com um padrão (ou seja, gnome $) |
| Escapa o próximo caractere para remover seu significado especial | |
| Corresponder um de uma lista ou intervalo (por exemplo, "abc", "def" ou 1..9 | |
| + | Corresponde a um ou mais precedentes (por exemplo, grep a +) |
| ? | Correspondência zero ou um precedente |




