O poder por trás do terminal Linux

t4inha

Anderson Bosa

Posted on March 15, 2021

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:
💖 💪 🙅 🚩
t4inha
Anderson Bosa

Posted on March 15, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related