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.
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!
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.
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:
Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.
Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.
Emitimos certificados para atestar que você finalizou nossos cursos e formações.
Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.
Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.
Emitimos certificados para atestar que você finalizou nossos cursos e formações.
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.
Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.
Acesso completo
durante 1 ano
Estude 24h/dia
onde e quando quiser
Novos cursos
todas as semanas