DEV Community

Cover image for O poder por trás do terminal Linux
Anderson Bosa
Anderson Bosa

Posted on • Updated on

O poder por trás do terminal Linux

Choose your preferred language:


🇧🇷 Brazilian

Table of contents

Introdução

Procurar, diferenciar, analisar, compartilhar, descompactar, criptografar um arquivo, acessar computador na nuvem, converter um vídeo em gif e etc. Essas são algumas das coisas possíveis de se fazer com a linha de comando.

O terminal é uma varinha de condão para interagir com os recursos do computador. Permitindo a interação de maneira prática e flexível, o que a torna uma ferramenta muito poderosa.

Basicamente em todos os sistemas operacionais (e.g., Windows, Android, Mac and etc) a linha de comando é uma interface de texto para se comunicar com o computador (ou dispositivo).

image

Também conhecida como shell, console, prompt, terminal e entre outros nomes, o terminal pode assustar e deixar confuso em um primeiro contato. Como todo novo conhecimento, no início pode haver mais dificuldades. Porém, conforme vencemos essas barreiras vamos nos deparando com a nossa evolução.

Saber usar o terminal pode ser essencial ao tentar lidar com os problemas que pipocam no dia-a-dia como professional de TI. Eu li um post outro dia em que o autor disse uma coisa que me coçou:

Se você é um usuário Linux, o Terminal é provavelmente a ferramenta mais poderosa que você já teve. Mas o problema do Terminal é que você precisa aprender a usá-lo se quiser se beneficiar dele. - Mauro Garcia

aí eu: SIMMMMMMMMMM

image

Isso me coçou a querer compartilhar um pouco do que aprendi por aí com os meus colegas, e então trouxe para cá também. Saber de algumas dessas coisas fazem diferença no meu dia-a-dia como desenvolvedor de software.

Espero que possa ajudá-los a se sentirem um pouco mais confortáveis da próxima vez que precisarem abrir o terminal.

Mas antes de começarmos... uma dica para não-nativos do inglês:

Pensar em inglês ajuda a assimilar os comandos!

Se você for como eu, não-nativo do inglês, acredito que entenderá melhor o que quero dizer. Vamos entender com um exemplo, o comando pwd é para Print Working Directory. O que no meu idioma (braziliano) seria algo como edt (Escrever o Diretório de Trabalho).

Acho que esse exemplo ajuda a deixar claro que pensar sobre o que você quer fazer em inglês ajuda a assimilar o que está sendo feito. Ajudando a internalizar o que você deseja fazer. Tal como acontece com ls (list) oucd (change directory).

Comandos básicos

Aqui alguns comandos práticos a se saber. Utilizei um comando para descrever eles, veremos a frente qual.

  • mv - mover (renomear) arquivos
  • cp - copia arquivos e diretórios
  • rm - remove arquivos ou diretórios
  • ls - lista o conteúdo do diretório
  • pwd - imprime o nome do diretório atual / de trabalho
  • mkdir - cria diretórios, cria um diretório
  • rmdir - remove diretórios vazios, exclui um diretório
  • cat - concatena arquivos e imprime na saída padrão
  • tac - concatena e imprime arquivos ao contrário
  • more - filtro de leitura de arquivo para visualização de crt
  • less - oposto de mais
  • chown - altera o proprietário e o grupo do arquivo, altera a propriedade de um arquivo
  • chmod - altera bits de modo de arquivo, altera as permissões de um arquivo
  • chattr - altera atributos de arquivo em um sistema de arquivos Linux
  • curl - transferir um URL
  • wget - O downloader de rede não interativo.
  • tar - um utilitário de arquivamento
  • gzip - comprime ou expande arquivos, uma espécie de Linux 'WinRar'
  • ping - envia ICMP ECHO_REQUEST para hosts de rede
  • sort - classificar linhas de arquivos de texto
  • filter - interface de filtro de conversão de arquivo do Cups
  • uniq - relatar ou omitir linhas repetidas
  • history - Biblioteca de História GNU
  • top - exibe processos Linux
  • ps - relata um instantâneo dos processos atuais.
  • pkill - procura ou sinaliza processos com base no nome e outros atributos
  • ssh - cliente de login remoto OpenSSH
  • git - o rastreador de conteúdo idiota

Todos comandos podem ser concatenados no terminal, é uma questão de saber como fazê-los. O poder de concatenar comandos nos dá um poder incrível com a linha de comando.

Por exemplo, digamos que queremos encontrar quais comandos estão no histórico, mas existem muitas repetições e informações irrelevantes no momento (como os parâmetros)... Poderiamos fazer unificando 4 comandos na seguinte ordem: history | cut --delimiter=" " -f 4 | sort | uniq.

Ou talvez você queira usar uma imagem como ícone... Você poderia:

# 1) baixar a imagem e 2) encodá-la na hora.
curl https://duckduckgo.com/i/bfc48a09.jpg --output - | base64 -
# agora está pronta para utilizar em uma tag HTML 😎
Enter fullscreen mode Exit fullscreen mode

Aqui está uma bruxaria preciosa para a próxima vez que sua memória virtual se esgotar:

  • xkill - matar um cliente por seu recurso X. Basicamente, quando você proclama este comando, a ponta do seu querido mouse se torna a varinha de Alvo Dumbledore, onde quer que você clique (com o botão esquerdo), aquilo onde você clicou, morre 😱.

image

Comandos que nos ajudam a se ajudar

  • whatis - exibir descrições de página de manual de uma linha. Ajuda a identificar a finalidade de qualquer comando em segundos. Foi este o comando que citei acima.
  • which - localize um comando.
  • whereis - localize os arquivos binários, de origem e de página de manual para um comando.
  • man - o manual do programa. Uma interface para os manuais de referência do sistema. This's the way! para qualquer coisa. As informações relevantes sobre o programa estarão no manual.
# Tente no seu terminal
$ whatis whatis which whereis man
Enter fullscreen mode Exit fullscreen mode

Tenha seus próprios snippets

Um snippet é uma função criada para servir a um propósito. Em Bash/shellscript nós temos os famosos "one-liners". Recomendo tê-los por dois motivos:

  1. Medo: eles obviamente assustam. Uma cadeia de comandos interligados para servir a um propósito? Eu acho incrível e aterrorizante. Sempre que me vejo rodando um penso que se quebrar na metade vai deletar meu sistema todo 😅. Com isso você vai ficando cautelo-so com o terminal, pois, até um martelo faz mal se não for utilizado da forma correta.

  2. E novidades: você sera expostos a novas soluções e também a novas formas de utilizar o que já conhece.

Vou deixar no roda-pé algumas referências, lugares em que podemos dar uma conferida nesses "one-liners". 😆

Prática!

A melhor forma de aprender e assimilar é fazendo. Então vamos coloca em prática o que vimos até agora por meio de alguns exercícios. Para isso vamos utilizar o Capture The Flag Bandit da OverTheWire.

O Capture The Flag é um estilo de competição que envolve diversas competências para a resolução de desafios relacionados à infosec, com o objetivo de capturar a bandeira (normalmente um código) e pontuar. No Bandit os níveis do CTF acontecem em uma máquina remota, no qual nos conectaremos pelo terminal através da ssh.

O Bandit nos ajudará a colocar em prática e lapidar nossas habilidades com o Terminal. Daqui em diante, é com vocês. Boa sorte!

Feedbacks 💙

  • Faltou alguma coisa, ou estava errada, ou você tem alguma sugestão? Por favor, me deixe saber suas opiniões!

One-liners

Credits, fonts and articles:

Top comments (3)

Collapse
 
lelepg profile image
Letícia Pegoraro Garcez

Muito bom o artigo. Descobri umas coisinhas bem interessantes. Você cobriu muito bem os comandos básicos, e realmente aprender a usar o terminal do Linux é uma coisa que muda totalmente a sua maneira de utilizar o sistema. Fui usuária de Windows por maior parte da minha vida, mas hoje não consigo usar o sistema sem apertar Ctrl+Alt+T.
Não faz muito tempo que eu comecei a testar meus conhecimentos no Bandit (inclusive estou começando uma série de artigos de como resolver os níveis), e está sendo bem desafiador, mas a alegria de conseguir a senha com seu próprio esforço e saber que você está aprendendo por si mesmo, é maravilhosa.

Collapse
 
t4inha profile image
Anderson Bosa

Obrigado Leticia!!

Os CTFs as vezes parecem maçantes mas no momento que conseguimos superar o nível é como tu disse, maravilhoso! rs

Me deixe saber se eu puder te ajudar em algo com o Bandit, irei adorar! Faz um tempinho mas completei todos níveis (sem nenhuma ajudinha viu rsrs)

Collapse
 
lelepg profile image
Letícia Pegoraro Garcez

Olha que eu peço ajuda mesmo kkkk. Da última vez que tentei cheguei até no nível 20 e poucos e travei, quero ver que agora que tô transformando isso em conteúdo consigo terminar. Muito obrigada :D