Chegou a hora de começar a parte 3 do nosso curso de LPI Essentials. Sou Ricardo Merces e vou acompanhar você durante as aulas.
Audiodescrição: Ricardo Merces é uma pessoa de pele clara, com rosto arredondado e olhos escuros. É careca, usa uma camiseta cinza e está sentado em uma cadeira preta. Ao fundo, parede azul.
Lembre-se que esses são cursos iniciais da formação LPI, como discutimos ao longo das aulas.
Neste módulo 3, vamos conhecer uma parte bastante relevante, que é a navegação.
Navegação no sistema significa conseguir percorrer diretórios, mover e copiar arquivos, além de fazer localização e muito mais. Por exemplo, como procurar um arquivo dentro da árvore do sistema.
Dica: Se ficou algum assunto pendente, retorne ao módulo 1 ou 2, para que possamos avançar juntos.
Dentro da proposta de navegar no sistema, algo que as pessoas geralmente querem saber rapidamente é:
Como encontrar arquivos no sistema?
Adiante, vamos conhecer em detalhes a hierarquia da estrutura de diretórios e arquivos. Mas, antes disso, vamos responder a essa pergunta inicial.
locate
Para localizar arquivos, podemos usar comando locate
no terminal.
locate
Arquivo ou diretório inexistente
Primeiro, precisamos instalá-lo na máquina. Como podemos instalar um pacote? Você se lembra das primeiras aulas?
Com o comando sudo apt update
podemos fazer o sync (sincronização) entre os repositórios. Assim, vamos ter a referência atualizada do que está no repo (repositório) Ubuntu na base local.
sudo apt update
Uma vez feita essa atualização de referência da base, agora, sim, podemos escrever sudo
para ter os privilégios para instalar o comando apt install
que permitirá instalar o locate
.
sudo apt install locate
Esse monte de pacotes listados são as dependências necessárias para a aplicação funcionar.
Feita a instalação, podemos digitar locate
:
locate
locate: pattern argument expected
É preciso passar argumentos para serem localizados.
Vamos localizar o comando ping
que ainda não conhecemos. Podemos usá-lo para testar a nossa conectividade de rede com o DNS do Google, por exemplo.
ping 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=5.90 ms
[...]
Vamos usar o atalho "Ctrl + C" para parar esse comando.
Onde fica o comando, o binário, ou o executável ping
? Para isso, usamos o locate ping
.
locate ping
Não houve nenhum retorno. Por quê? O locate
não localiza os arquivos?
O locate
trabalha com banco de dados e vai criar a referência de tudo que temos no sistema. Essa é uma das razões pelas quais o instrutor Ricardo não o utiliza muito, pois é preciso ficar fazendo o update (atualização) do banco de dados.
Como fazemos essa atualização? Vamos executar o seguinte comando:
sudo updatedb
Deu algumas permissões negadas no find, mas não se preocupe com isso.
Vamos repetir o locate ping
e repare como teremos um retorno na tela. Muitas informações na tela.
Quando escrevemos locate
e o comando que queremos localizar (nesse caso, o ping
), ele vai procurar por todos os arquivos que têm a palavra ping
.
/usr/src/linux-hwe-5.19-headers-5.19.0-46/include/linux/dma-mapping.h
Ele vai varrer todo o sistema. Por exemplo, você pode notar que tem ping em dma.mapping
. Ele encontrou essa palavra em vários lugares diferentes no sistema.
Ele também encontrou o executável do ping
:
/usr/bin/ping
É interessante ficar atento à questão das árvores de diretório, onde ficam os arquivos.
Os binários, ou seja, os executáveis, geralmente estão em usr/bin
. Podem estar em outro lugar? Sim, mas por convenção ficam nesse local.
Agora, no terminal, vamos escrever o comando ls
que mostra o conteúdo do diretório local.
ls
O que vamos fazer? Vamos criar um arquivo a1.txt
.
touch a1.txt
Vamos supor que não lembramos onde está esse arquivo. Não sabemos onde o criamos no sistema. Como prosseguir? Vamos localizá-lo:
locate a1.txt
/usr/lib/firmware/brcm/brcmfmac43430-sdio.beagle,beaglev-starlight-jh7100-a1.txt
Que interessante, ele encontrou um arquivo jh7100-a1.txt
. Na verdade, nem sabíamos que isso existia.
Mas, ele não mostrou o a1.txt
que acabamos de criar. Por quê? Precisamos sempre fazer a atualização da base de dados.
Para isso, vamos repetir aquele comando sudo updatedb
.
sudo updatedb
Com isso, vamos fazer as atualizações e a partir daí, podemos localizar o arquivo que criamos. Vamos limpar a tela com o comando clear
para facilitar a visualização.
locate a1.txt
/home/ricardo/a1.txt
Se repetimos o comando para criar um a2.txt
, ele vai estar em /home/ricardo
. Mas, se mandamos localizar com locate
, não será encontrado porque o database (banco de dados) não foi atualizado.
A ideia é sempre apresentar novos comandos, pois é importante que você saiba que eles existem.
Porém, vamos te apresentar uma ferramenta que consideramos superior ao locate
, que é frequentemente utilizada no dia a dia. Mas, pratique o locate
, principalmente se estiver interessado em fazer a prova de certificação.
No próximo vídeo, localizaremos arquivos sem precisar atualizar o database a cada nova entrada que geramos no sistema.
Outro comando muito comum é o find
, como mencionado anteriormente.
Qual a diferença entre
find
elocate
? Ofind
é ótimo, pois não precisamos atualizar continuamente o banco de dados. Mas a pesquisa é muito mais rápida quando usamos olocate
, já que usa um database.
Podemos testar, vamos escrever locate
e o comando para desligar poweroff
.
locate poweroff
Dessa forma, quando você digita locate
para procurar algo no banco, o output (saída) é muito mais rápido, pois já está tudo indexado.
Diferentemente do locate
, o find
vai fazer essa busca a cada "Enter" que você pressionar. Ou seja, a cada pesquisa realizada, ele vai escanear aquele local ou o sistema todo, dependendo de como você vai interagir com ele.
find
Dentro do diretório etc
, existe um arquivo que é um database dos usuários que são criados localmente no Linux. Este database é chamado passwd
, onde estão listados o nome dos usuários, qual o home que ele vai usar, qual o Shell e alguns outros detalhes.
Vamos supor que estamos procurando esse arquivo passwd
e que não sabemos que ele está no etc
. Como vamos buscá-lo usando o find
?
Digitamos find
e onde queremos procurar. Primeiro, vamos colocar uma barra, porque é o topo da nossa árvore de diretórios.
Em seguida, vamos passar o -name
, que especifica o tipo de busca que realizamos dentro do find
. Nesse caso, o que estamos procurando por nome? O arquivo passwd
. Vamos pressionar "Enter" e conferir o que acontece.
find / -name passwd
Aparecem muitas permissões negadas. Mais adiante no curso, vamos estudar sobre permissões. Entre essas saídas, aparece o passwd
:
/usr/bin/passwd
Você pode digitá-lo, ele serve para trocar a senha. Também existe um arquivo /etc/passwd
:
/etc/passwd
Dois arquivos com esse mesmo nome, mas em diretórios diferentes. O que estávamos procurando era o arquivo dentro de etc
.
Mas, o que essas mensagens de "permissão negada" significam? Como já aprendemos, nós estamos realizando a busca com um usuário não privilegiado. Nessa caso, o Ricardo.
Como não é um usuário com os devidos privilégios, o que vai acontecer? Existem diretórios que não vamos conseguir acessar por questões de segurança.
Portanto, todos os diretórios que eu não puder acessar, vão aparecer como "permissão negada". Essa saída é normal, considerando a permissão que temos.
Agora, vamos repetir o comando, usando a seta para cima.
As setas para baixo e para cima servem para navegar entre os comandos executados.
Isto é uma função do Shell. Qual Shell estamos usando? O Bash, como aprendemos anteriormente. No começo do comando, vamos adicionar o sudo
para executá-lo de forma privilegiada.
sudo find / -name passwd
Ele começou a percorrer o sistema todo, procurando por passwd
. As mensagens já foram diferentes, mas ainda temos o /etc/passwd
e também o binário.
Mas, se sempre procurarmos a partir da barra, a busca poderia demorar bastante em um sistema com muitos arquivos. Afinal, o comando vai vasculhar todos os diretórios e subdiretórios.
Como resolvemos isso? Podemos passar o caminho (path) onde desejamos iniciar a busca. Isso poupa bastante tempo.
Por exemplo, a partir do /etc
, ele realizará a busca a partir do diretório /etc
em diante. Ao executar essa opção, o tempo de resposta é muito mais rápido.
sudo find /etc -name passwd
/etc/passwd
/etc/pam.d/passwd
Todos os arquivos que contêm passwd
a partir do diretório /etc
foram listados.
Adiantando algo que aprenderemos mais detalhadamente no futuro: tanto o comando find
quanto o comando locate
aceitam caracteres especiais.
Por exemplo, pass*
significa que será localizada qualquer arquivo que comece com a string "pass", onde o asterisco representa qualquer conjunto de caracteres de qualquer tamanho.
sudo find /etc -name pass*
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
O comando retorna todos os arquivos que iniciam com "pass". Inclusive, retorna passwd-
que é um arquivo diferente.
Em breve, detalharemos mais sobre esses coringas e esses caracteres especiais. O asterisco é um dos mais comuns, independentemente da distribuição Linux que você esteja utilizando.
Portanto, aprendemos bastante apenas com estas poucas interações. Mas, não é só isso! O find
também tem outros parâmetros bem interessantes que exploraremos no próximo vídeo.
O curso Certificação Linux LPI Essentials: Command Line Basics possui 101 minutos de vídeos, em um total de 23 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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.