Alura > Cursos de DevOps > Cursos de Linux > Conteúdos de Linux > Primeiras aulas do curso Linux Onboarding: localizando arquivos e conteúdos

Linux Onboarding: localizando arquivos e conteúdos

Localizando conteúdos e trabalhando com as saídas - Apresentação

Agora na parte 2 do curso, vamos avançar explorando ainda mais o nosso sistema. Eu vou procurar arquivos na estrutura; dentro desses arquivos, vamos conseguir extrair conteúdos e fazer algumas filtragens no conteúdo dos arquivos (e não nos nomes, como fizemos no módulo passado).

Também vamos fazer parte de redirecionamento, entender entrada e saída, e começar a trabalhar, dar uma visão sobre as expressões regulares que vão nos ajudar a fazer essas atividades.

Lembrando que esse curso é destinado a você que precisa aprender Linux para resolver os problemas do dia a dia. Chegou na tela preta, precisa navegar e resolver essas atividades.

Então, vamos abrir o Shell e começar.

Localizando conteúdos e trabalhando com as saídas - Filtrando o conteúdo

Vamos começar diretamente com a mão na massa, no Shell, naquela estrutura que criamos no módulo passado.

Se ficou alguma dúvida do comando que vou usar aqui, dá uma checada na parte 1 do curso para sanar todas as dúvidas.

No meu diretório labs, vou criar um diretório chamado filtrando_conteudo para fazermos as buscas. cd filtrando_conteudo, estou no meu diretório e ele está vazio.

Primeiro item que precisamos fazer é pegar um arquivo para trabalharmos. Ainda não entramos no detalhe de permissão de arquivo – vimos uma coisa ou outra na hora que tentamos executar com sudo e ele viu que não tinha permissão, mas vamos tratar esse tema mais adiante, pode ficar tranquilo.

O que eu quero mostrar é o seguinte: existe um arquivo no etc chamado services que tem a lista de portas e qual protocolo está associado a cada porta.

Então, a primeira coisa: "Não lembro bem se é service, como localizo o arquivo?" Já dei a dica que está no etc (diretório de configuração) e sei que ele chama “servi” alguma coisa. Então, colocamos um asterisco, /etc/servi*, já aprendemos isso.

Ele trouxe para nós. Esse arquivo está no services, é uma configuração de arquivo de sistema. O que vamos fazer? Eu vou fazer uma cópia dele para o nosso diretório de trabalho.

Eu sei que ele está no diretório services e eu estou no meu diretório de trabalho. Como faço uma cópia de lá para onde estou (~/labs/filtrando_conteudo)? Fácil, cp: vou dizer onde está o arquivo de origem e onde quero colocá-lo.

Eu quero colocá-lo em labs/filtrando_conteudo, eu poderia fazer cp /etc/services ~/labs/filtrando_conteudo/ e ele cairia no meu diretório corrente, mas a vida é mais fácil, só precisamos usar o ponto, cp/etc/services ..

Aprendemos que com o ponto ponto, .., nós voltamos para o diretório-pai, e o ponto é o diretório corrente, ou seja, é onde estou. Então, cp/etc/services . traz o services para onde estou. Será que veio? Olha o services no diretório de trabalho!

Estrutura montada, vamos trabalhar com ele. O primeiro comando para aprender é cat. O que ele faz? Ele mostra o conteúdo se for um arquivo de texto – se for um binário, ele vai trazer aqueles caracteres misturados.

cat services. Como comentei, o que ele faz? Ele traz o nome do serviço. Vamos ver do início: ele vai trazer o nome, a porta, se é TCP ou UDP, e traz um descritivo.

É legal que é do IANA, que define os padrões, mas é só um comentário. É isso que queremos, o arquivo já está local. O que fazemos? Imaginemos o seguinte cenário.

Eu quero localizar, nesse arquivo, a porta 80. Se formos ficar subindo e descendo, logicamente vai dar um trabalho que não tem sentido. Eu queria localizar a porta 80, http. O cat, você já viu que mostra tudo.

Eu vou usar outro comando muito especial, e você certamente já viu isso em vários exemplos usando internet, o grep é mágico, porque ele vai resolver vários problemas.

grep, eu quero procurar pela string http. Onde quero procurar? Você já aprendeu, o asterisco o que faria? Faria a busca em todos os arquivos. Eu só tenho um arquivo, mas ele faria em todos.

Eu posso especificar o arquivo para filtrar, grep http services. Olha o que ele trouxe para mim, http, https, tudo que tiver a string http ele retorna para mim.

Vamos melhorar, vamos dizer que eu queria procurar só https, para você entender: grep https services. Olha só que interessante, no descritivo do arquivo, ele diz que foi feito o update e https também aparece, então ele trouxe duas linhas.

O grep é um comando extremamente útil. grep --help, logicamente, tem várias opções para trabalharmos. --help, man grep, isso você já aprendeu, isso é atividade para você fazer depois do vídeo.

Para expandirmos o conteúdo, grep -i. O que será que esse -i faz? Vamos executar para testarmos. grep -i http services, quero procurar http no arquivo services, é a forma do comando.

Veja a saída. Vamos tirar o -i para comparar com a outra saída. Você vê que essa primeira tem mais uma linha. Por quê? Coincidentemente, o que aconteceu?

Eu tenho a string http em várias partes do arquivo e ela em maiúsculo tem, por acaso, na mesma linha. A primeira busca retornou essa linha. Coincidentemente, estava aqui o HTTP também.

Quando eu procurei agora por letra maiúscula – o -i é para ignorar o case da letra, se é maiúscula ou minúscula –, ele vai localizar agora tanto um quanto o outro. Na verdade, ele colocou em vermelho os dois.

Está vendo a diferença? No primeiro retorno tem HTTP só em maiúsculo. Você que no segundo retorno, quando não usamos o -i, ele não trouxe essa linha. Então, para procurar independente da caixa, use o -i.

Vamos trazer outro arquivo para acrescentarmos conteúdo. Que arquivo vou trazer? cp /etc/passwd .. O que isso? À medida que formos conhecendo os arquivos, vou dando um breve descritivo.

O passwd, que está dentro do etc (que é o arquivo de configuração), é a base de dados dos usuários, é uma base de dados local. Quando você fez o login e autenticação local, ele está usando o passwd – ele guarda várias coisas, depois exploraremos melhor.

Vamos ver rapidamente o conteúdo que está local agora. Ele trouxe várias informações e olha como o grep é útil. Eu quero localizar, na minha base local, o usuário "Ricardo".

grep Ricardo, não vou usar o passwd, vou usar asterisco, grep Ricardo *. O que ele vai fazer? Vai varrer todos os arquivos, ele varreu passwd e services. Com services não tem isso.

Aqui fiz de propósito, mas atenção quando usar. O legal do grep é que o seu output fica bem limpo para você trabalhar. Olha só mais dois itens bem interessantes: -l minúsculo e vou procurar por "ricardo": grep -l ricardo.

Onde? Você vai procurar em todo o seu conteúdo, grep -l ricardo *. Isso é muito útil para script, é muito legal. Ele não me retornou dentro do arquivo onde estava o conteúdo, ele me retornou o arquivo que tem aquele conteúdo que eu procuro.

Então, essa sintaxe retorna exatamente que no passwd tem o que você está procurando. O mais legal é o seguinte: grep -L ricardo *, com L maiúsculo. services, como assim? Ele retorna para nós todos os arquivos que não têm a string que estamos procurando.

Isso já abre um leque de opções para você trabalhar e localizar as coisas dentro do sistema. Mais? Na continuação, no próximo vídeo!

Localizando conteúdos e trabalhando com as saídas - Utilizando a recursividade no Grep

Aproveitando que estamos trabalhando com grep, vamos estender ainda mais o uso dele.

Então, clear. Só ls, para você situar o que temos de conteúdo. mkdir, vou criar um diretório: mkdir teste. Onde está o teste? Dentro do filtrando_conteudo, já aprendemos isso.

Dentro do teste (cd teste), vou pegar uma cópia do arquivo services. Vou fazer o seguinte: copia do diretório anterior, cp ../. Copia o quê? cp ../serv e tecla “Tab”. Dá o “Tab” que não tem erro, ele completa cp ../services.

Se você estiver com o diretório errado, ele não vai completar. Eu quero copiar esse arquivo para dentro e já chamá-lo de services2. A sintaxe, sempre, origem e destino: cp ../services services2. Essa origem (../services) para esse destino (services2). O destino, no caso, é o nome do arquivo, services2.

ls, services2. Vou voltar um diretório, cp .., e vou repetir um comando. grep HTTP services. Estou no diretório filtrando_conteudo. Ele trouxe um retorno.

Você procurou só em um arquivo, ele não ia expandir a procura. Vamos, então, resolver o nosso problema: grep HTTP *. Mas ele não foi dentro do diretório teste. Olha o que ele diz, que teste é um diretório. Ele restringiu a busca ao diretório corrente.

O legal do Linux é que as coisas se repetem. Quando estudamos a parte de copiar e mover, eu introduzi o contexto de recursividade, que significa "daquele ponto em diante". Será que o grep trabalha com isso também? Vamos ver: grep -r HTTP services.

Você verifica que ele já não deu erro do diretório, ele foi lá dentro e procurou também. Podemos mostrar isso de outra forma bem legal. Lembra que usamos o -l? Vou dar a procura recursiva pela string HTTP, vou combinar recursividade com a lista: -rl.

O que é a lista, o -l? Vai mostrar o nome do arquivo. grep -rl HTTP services, só tem services. Mas a ideia não é essa, a ideia é usar esse exemplo: grep -rl HTTP *. É isso que eu queria mostrar, services, teste/services2.

Acho que até usei o exemplo errado. Exatamente, ele tinha que mostrar duas vezes. grep -r HTTP *, é o exemplo certo. -rl, da recursividade, ele mostrou os arquivos services e teste/services2. O -r (buscando o conteúdo) colocou na tela o conteúdo do arquivo services e depois o conteúdo do services2.

Então, está funcionando direito. Asterisco em grep -rl HTTP *. Logicamente em grep -rl HTTP services eu fiz a procura só no arquivo. O asterisco é legal porque você expande essa sua procura.

Isso nos scripts é muito útil para você localizar e filtrar as informações, mas ainda não acabou, vamos continuar.

Sobre o curso Linux Onboarding: localizando arquivos e conteúdos

O curso Linux Onboarding: localizando arquivos e conteúdos possui 108 minutos de vídeos, em um total de 35 atividades. Gostou? Conheça nossos outros cursos de Linux em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Linux acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas