Para trabalhar com distribuições Linux, você principalmente utiliza o terminal ou console, que exigem conhecimento de comandos básicos para trabalhar plenamente com o ambiente. Para quase toda tarefa existe uma utilidade que executa funções predefinidas. A busca por arquivos e padrões de texto neles não é exceção. As duas principais utilidades que ganharam popularidade e ainda são usadas hoje em dia são find e grep. Se o find é usado apenas para encontrar o caminho de arquivos pelas suas propriedades, então o grep realiza, além disso, uma busca pelo conteúdo dos arquivos. Neste artigo, vamos examinar sua sintaxe, principais opções e exemplos de uso!
O que é o GREP e como posso encontrá-lo?
Como mencionado acima, o GREP é uma utilidade multifuncional do Linux para busca de arquivos e textos usando padrões, expressões regulares.
Em geral, muitas distribuições já possuem esse pacote pré-instalado. Para verificar se ele está disponível na sua máquina, insira o comando:
Se a saída se parecer com esta, então o pacote já está instalado; caso contrário, instale-o por meio do seu gerenciador de pacotes. Para Ubuntu, Debian e sistemas apt-like:
Para sistemas RPM-like, o comando para instalar um pacote com suas dependências pode ser assim:
Depois de garantir que o pacote foi instalado, vamos analisar a sintaxe da utilidade e suas opções!
Sintaxe e opções
O comando grep é utilizado para buscas, assim como as opções básicas que formam a sintaxe do comando:
Para uma busca simples de um padrão em um arquivo, usamos o comando:
No arquivo dado, o padrão solicitado foi encontrado e destacado, neste caso utilizando apenas os dois blocos de sintaxe básicos [pattern] e [path to file] sem [options]. Mas e se precisarmos realizar uma busca mais complexa com várias condições? Existe uma lista completa de opções [options] para isso, vamos analisar as principais e dar exemplos de uso:
Configuração de mapeamento de padrões:
- E, --extended-regexp: Expressões regulares estendidas para padrões;
- G, --basic-regexp: Expressões regulares básicas para padrões;
- P, --perl-regexp: Uso de expressões regulares Perl.
Fontes de padrões:
- e, --regexp=[pattern]: Permite especificar um padrão diretamente;
- f, --file=[file]: Permite especificar o padrão diretamente.
Controle de maiúsculas e minúsculas:
- i, --ignore-case: Busca ignorando a diferenciação entre maiúsculas e minúsculas;
--no-ignore-case: Busca sensível a maiúsculas e minúsculas, comportamento padrão.
Modos especiais de correspondência:
- w, --word-regexp: Considera apenas palavras inteiras ao buscar;
- x, --line-regexp: Apenas corresponde a linhas inteiras.
Terminação alternativa de strings:
- z, --null-data: Trata o fim de uma linha como um byte nulo em vez de um caractere de nova linha.
Todos esses grupos de opções se referem à configuração da maneira como o padrão é mapeado em um conjunto de dados. Para uma busca um pouco mais complexa do que no primeiro exemplo, usaremos expressões regulares comuns. As outras opções não serão necessárias agora. Vamos especificar o mesmo padrão:
Existem duas ocorrências de Alex e Alex's parents no texto. A essência do funcionamento das expressões regulares é que elas dividem os dados em caracteres e procuram padrões. Portanto, ao buscar com grep -e 'nome Alex' /home/kk.txt, haverá duas correspondências: Alex e Alex's parents. Como encontrar uma palavra ou string específica para que outros valores não sejam capturados? Para isso, usamos a opção -w, que permite dividir frases por palavras, não por caracteres:
Como você pode ver no exemplo, a palavra Alex's não foi destacada, pois a divisão foi feita palavra por palavra.
Busca recursiva com grep
Mas e se houver mais de um arquivo e você precisar verificar vários arquivos no mesmo diretório? Para isso, o grep possui a opção -r, que permite definir uma pasta para buscar em seu conteúdo. Vamos implementar a consulta de nosso nome de usuário nos logs:
Todos os passos no tutorial podem ser realizados em servidores na nuvem poderosos. A Serverspace fornece servidores VPS isolados para uso comum e virtualizado.
Levará algum tempo para implantar a capacidade do servidor. Após isso, você pode se conectar de qualquer maneira conveniente!
Filtrando a saída de comandos
Muito frequentemente, no Linux, a saída dos comandos no terminal é grande ou contém muitas informações desnecessárias. Para isso, usamos pipe ou redirecionamos para a utilidade grep. Parece assim, suponhamos que precisemos verificar se o pacote NetworkManager para gerenciamento de redes está instalado:
Se você estiver usando o gerenciador apt, substitua dnf no comando:
Trabalhar com distribuições Linux requer habilidades no terminal e conhecimento de comandos básicos. As utilidades find e grep ocupam um lugar importante no arsenal de ferramentas, proporcionando uma busca eficiente por arquivos e seus conteúdos.