Terminal Para Desenvolvedores

By: Gustavo Barbosa
Posted: February 26, 2023

Olá! Antes de qualquer coisa, preciso dizer: o terminal é seu amigo! Não precisa temê-lo. Com isso, podemos falar coisas maravilhosas sobre terminais.

Para ficar mais claro, vamos separar o assunto em alguns pequenos tópicos e eles são:

Breve introdução sobre Terminal Diferença entre Terminal e Shell Comandos comuns de Terminal Interpretadores de comandos Emuladores de Terminal

Breve introdução sobre Terminal

O terminal é chamado frequentemente de linha de comando ou shell. Até pouco tempo, esta era a maneira que o usuário interagia com o computador; entretanto, os usuários de Linux viram que o uso do shell pode ser mais rápido do que um método gráfico e que ainda merece algum mérito hoje.

Não há nenhum conhecimento especial necessário para usar a linha de comando porque é um programa como qualquer outro. A maioria das coisas em Linux podem ser feitas usando a alinha de comando. Embora haja ferramentas gráficas para a maioria dos programas, às vezes eles não são suficientes. É aí que a linha de comando fica útil.

O uso original do terminal era como um navegador de arquivos, e ainda é usado como um navegador de arquivos.

Diferença entre Terminal e Shell

Na comunidade de desenvolvedores, o termo “shell” e “terminal”, são comumente usados como sinônimos e não tem nenhum problema quanto à isso. Mas a depender do contexto, temos sim diferenças entre esses dois termos e vou falar um pouco sobre eles.

Shell

Em português, casca ou concha é uma interface para acessar os serviços de um sistema operacional. Em geral, shells dos sistemas operacionais usam uma interface de linha de comando (CLI) ou uma interface gráfica de usuário (GUI), dependendo da função e operação particular de um computador. macOS e Windows são exemplos de sistemas operacionais amplamente utilizados através de interfaces gráficas.

É chamado de shell (casca) porque ele é a camada mais externa em torno do núcleo do sistema operacional.

Terminal

Em resumo, terminal é um programa que recebe os comandos do usuário a partir do teclado e repassa-os às camadas de baixo nível do sistema operacional. Logo, podemos defini-lo como um mecanismo de software que intermedeia a interação do usuário com o Linux.

Resumindo tudo:

Shell - Entrada para comunicação com o Kernel. Onde os comandos são executados.

Terminal - É o programa que roda um shell. Gnome Terminal, xTerm, iTerm2 por exemplo.

Comandos comuns de Terminal

Sem muita enrolação, vamos aos comandos mais comuns do terminal.

Visualizar Diretórios: - ls O ls (LiSt) lista arquivos em diferentes cores com todo texto formatado.

Criar Diretórios: - mkdir (nome do diretório) O comando mkdir (MaKeDIRectory) criará um diretório.

Mudar Diretórios: - cd (/diretório/localização) O comando cd (Change Directory) mudará do seu diretório atual para qualquer diretório especificado por você.

Copiar Arquivos/Diretórios: - cp (nome do arquivo ou diretório) (para diretório ou nome de arquivo) O comando cp (CoPy) copiará aquivos que você especificar. O comando cp -r copiará diretórios especificados por você.

Remove Arquivos/Diretórios: - rm (nome do arquivo ou diretorio) O comando rm (ReMove) apagará arquivos especificados por você. O comando rm -r deletará diretórios especificados por você, e todo o seu conteúdo.

Mover/Renomear Arquivos/Diretórios: - mv (nome do arquivo ou diretório) O comando mv (MoVe) irá mover/renomear arquivos ou diretórios que você especificar.

Procurar Arquivos/Diretórios: - locate (nome do arquivo ou diretório) O comando locate procura por nomes de arquivos que você especificar. Ele usa um índice dos arquivos em seu sistema para operar mais rápido. Para atualizar este índice, execute o comando sudo updatedb. Este comando é executado automaticamente a cada dia se você deixa o seu computador ligado. É preciso executá-lo com privilégios administrativos (veja “Root E Sudo”).

Você pode também usar coringas para combinar com um ou mais arquivos, tal como "*" (para todos arquivos) ou "?" (para combinar um caractere).

Interpretadores de comandos

Antes de listarmos alguns interpretadores de comando, passaremos por duas definições que fazem parte do contexto dos interpretadores de comandos.

Os comandos podem ser enviados de duas maneiras para o interpretador: interativa  e não-interativa:

Interativa

Os comandos são digitados no aviso de comando e passados ao interpretador de comandos um a um. Neste modo, o computador depende do usuário para executar uma tarefa, ou próximo comando.

Não-interativa

São usados arquivos de comandos criados pelo usuário (scripts) para o computador executar os comandos na ordem encontrada no arquivo. Neste modo, o computador executa os comandos do arquivo um por um e dependendo do término do comando, o script pode checar qual será o próximo comando que será executado e dar continuidade ao processamento.

Este sistema é útil quando temos que digitar por várias vezes seguidas um mesmo comando ou para compilar algum programa complexo.

Com essa definições, vamos listar alguns interpretadores de comandos.

Bash

Bash é um acrônimo para "Bourne Again Shell" e foi desenvolvido em 1989 para suceder o Bourne Shell. É um programa shell executado em uma interface de linha de comando e tem como principal função controlar sistemas operacionais, sendo comumente utilizado no Linux e no macOS.

Zsh ou Z-Shell

Oh My Zsh é uma estrutura encantadora, de código aberto e voltada para a comunidade para gerenciar sua configuração Zsh. Ele vem com milhares de funções úteis, auxiliares, plugins, temas e algumas coisas que fazem você gritar…

Fish Shell

Fish é uma linha de comando inteligente e amigável shell para Linux, macOS e o resto da família.

Emuladores de Terminal

Um emulador de terminal, ou aplicativo de terminal, é um programa de computador que emula um terminal de vídeo em alguma outra arquitetura de exibição. Embora normalmente seja sinônimo de shell ou terminal de texto, o termo terminal abrange todos os terminais remotos, incluindo interfaces gráficas.

Vamos a lista de alguns emuladores de terminal.

XTerm

An image from Notion

O primeiro de seu nome. Vários emuladores usados atualmente vieram desse cara. Foi originalmente desenvolvido em meados da década de 1980 para fornecer terminais compatíveis com DEC VT102 e Tektronix 4014 para programas que não podem usar o sistema de janelas diretamente.

Gnome-Terminal

An image from Notion

É um emulador de terminal para o ambiente de área de trabalho GNOME escrito por Havoc Pennington e outros. É muito completo e fácil de usar!

Terminator

An image from Notion

Vários terminais GNOME em uma janela!

Terminator foi originalmente desenvolvido por Chris Jones em 2007 como um script python simples de 300 linhas. Desde então, tornou-se The Robot Future of Terminals. Originalmente inspirado por projetos como quadkonsole e gnome-multi-term e mais recentemente por projetos como Iterm2 e Tilix, permite combinar e recombinar terminais para se adequar ao estilo que você gosta. Se você vive na linha de comando ou está conectado em 10 máquinas remotas diferentes ao mesmo tempo, você deve definitivamente experimentar o Terminator.

Tabby

An image from Notion

Tabby é um aplicativo de terminal multiplataforma infinitamente personalizável para shells locais, conexões seriais, SSH e Telnet.

Hyper

An image from Notion

Construído com Electron. Então, isso implica que também na sua construção, temos HTML/CSS. Bem extensível, permite que se instale temas e plugins pela linha de comando.

Bônus

eDEX-UI

An image from Notion

O eDEX-UI é um emulador de terminal multiplataforma e monitor de sistema em tela cheia que se parece com uma interface de computador de ficção científica.