O mínimo de comandos linux para todo profissional de tecnologia


Se você trabalha com tecnologia, seja como desenvolvedor, analista de dados, DevOps, SRE, em algum momento você irá se depara com um terminal linux. E saber navegar e operar em um ambiente linux é uma das habilidades mais essenciais e valiosas que você pode ter.

Neste artigo, vamos explorar os comandos essenciais que todo profissional de tecnologia deveria dominar.

Criando, renomeando e deletando arquivos e diretórios

O gerenciamento de arquivos e diretórios é a base de qualquer interação com o terminal Linux. Dominar esses comandos é o primeiro passo:

Antes de criar ou deletar qualquer coisa, você precisa saber onde está e como se mover:

# Exibe o diretório atual (abreviação de print working directory)
pwd

# Lista os arquivos e diretórios do diretório atual
ls

# Lista com detalhes: permissões, tamanho, data de modificação
ls -la

# Navega para um diretório específico
cd /home/usuario/projetos

# Volta para o diretório anterior
cd ..

# Volta direto para o diretório home do usuário
cd ~

Criando arquivos e diretórios

# Cria um arquivo vazio (qualquer extensão .md, .txt, .py, etc)
touch README.md

# Com o mesmo comando também é possível criar vários arquivos de uma só vez
touch index.js styles.css app.js

# Cria um diretório
mkdir meu-projeto

# Cria um diretório e todos os subdiretórios necessários de uma vez
mkdir -p meu-projeto/src/components

# Cria um arquivo com conteúdo diretamente pelo terminal (o primeiro parâmetro é o contúso que será inserido no arquivo)
echo "# Meu Projeto" > README.md

Copiando, movendo e renomeando

Por mais estranho que possa parecer no início, o comando mv serve tanto para mover quanto para renomear arquivos:

# Renomeia um arquivo (primeiro o nome do arquivo atual, depois o novo nome)
mv arquivo-antigo.txt arquivo-novo.txt

# Move um arquivo para outro diretório
mv relatorio.pdf /home/usuario/documentos/

# Copia um arquivo (podendo renomear o arquivo cópia)
cp config.json config.backup.json

# Copia um diretório inteiro (com -r de "recursive")
cp -r meu-projeto/ meu-projeto-backup/

Deletando arquivos e diretórios

# Remove um arquivo
rm arquivo.log

# Remove múltiplos arquivos (nesse caso, todos os arquivos com a extensão .log)
rm *.log

# Remove um diretório vazio
rmdir pasta-vazia/

# Remove um diretório e todo o seu conteúdo
rm -rf pasta-com-arquivos/

Edição de Arquivos com Nano

Quando você está conectado a um servidor remoto, nem sempre tem acesso a uma interface gráfica. O nano é o editor de texto de terminal mais amigável para quem está começando, pois exibe os atalhos diretamente na tela.

Abrindo e criando arquivos

# Abre um arquivo existente para edição
nano /etc/hosts

# Cria (ou abre) um arquivo pelo nome
nano notas.txt

Assim que o arquivo abre, você já pode digitar normalmente. Os atalhos usam a tecla Ctrl (representada por ^ na tela do nano):

AtalhoAção
Ctrl + OSalva o arquivo (Write Out)
Ctrl + XSai do nano
Ctrl + WBusca por texto no arquivo
Ctrl + KRecorta a linha inteira
Ctrl + UCola a linha recortada
Ctrl + GAbre o menu de ajuda
Alt + UDesfaz a última ação

Tarefas Administrativas: sudo, apt e Gerenciamento de Pacotes

No Linux, tarefas que afetam o sistema inteiro, como instalar softwares, alterar configurações do sistema ou gerenciar usuários exigem privilégios de administrador (root).

O comando sudo

sudo significa superuser do — ele permite que um usuário comum execute um comando com permissões de administrador:

# Roda um comando como administrador
sudo apt update

# Abre um arquivo de configuração protegido para edição
sudo nano /etc/nginx/nginx.conf

# Acessa o shell como root
sudo su

Gerenciamento de pacotes com apt

Em distribuições baseadas em Debian e Ubuntu (as mais comuns em servidores), o gerenciador de pacotes é o apt:

# Atualiza a lista de pacotes disponíveis nos repositórios
sudo apt update

# Atualiza todos os pacotes instalados para a versão mais recente
sudo apt upgrade

# Instala um pacote
sudo apt install wget

# Instala múltiplos pacotes de uma vez
sudo apt install curl wget unzip

# Remove um pacote
sudo apt remove wget

# Remove o pacote e seus arquivos de configuração
sudo apt purge wget

# Limpa pacotes baixados que não são mais necessários
sudo apt autoremove

Verificando serviços com systemctl

Em servidores, é muito comum precisar gerenciar serviços como nginx, PostgreSQL ou Node.js:

# Verifica o status de um serviço
sudo systemctl status nginx

# Inicia um serviço
sudo systemctl start postgresql

# Para um serviço
sudo systemctl stop nginx

# Reinicia um serviço (útil após mudanças de configuração)
sudo systemctl restart nginx

# Habilita um serviço para iniciar automaticamente com o servidor
sudo systemctl enable nginx

Comandos úteis do dia a dia

# Verifica quais portas estão abertas e em uso
sudo ss -tlnp

# Exibe o uso de disco dos diretórios
du -sh /var/log/*

# Exibe o espaço livre em disco
df -h

# Exibe os processos em execução em tempo real
top

# Versão mais moderna e visual do top
htop

Acesso Remoto a Servidores Linux com SSH

SSH (Secure Shell) é o protocolo padrão para acessar servidores Linux remotamente de forma segura. Se você trabalha com cloud (AWS, GCP, DigitalOcean), com VPS ou com qualquer servidor remoto, o SSH é indispensável.

Conectando a um servidor

# Formato básico
ssh usuario@ip-ou-dominio-do-servidor

# Exemplo prático
ssh deploy@192.168.1.100

# Conectando em uma porta diferente da padrão (22)
ssh -p 2222 usuario@servidor.com

Autenticação com chave SSH (recomendado)

Usar senha para autenticação SSH é funcional, mas usar um par de chaves criptográficas é mais seguro e mais prático:

# 1. Gera um par de chaves (pública e privada) na sua máquina local
ssh-keygen -t ed25519 -C "seu@email.com"

# 2. Copia a chave pública para o servidor remoto
ssh-copy-id usuario@ip-ou-dominio-do-servidor

# A partir de agora, você conecta sem precisar digitar senha
ssh usuario@ip-ou-dominio-do-servidor

Especificando uma chave manualmente

Muito comum trabalharmos com vários servidores, e usamos chaves diferentes para cada um deles, aumentando a segurança, nesses casos, especificamos a chave manualmente quando tentamos a comunicação:

# Usa uma chave específica para conectar
ssh -i ~/.ssh/chave-do-servidor usuario@servidor.com

Transferindo arquivos com SCP e rsync

O SSH também permite transferência segura de arquivos:

# Copia um arquivo local para o servidor remoto (scp)
scp relatorio.pdf usuario@servidor.com:/home/usuario/documentos/

# Copia um arquivo do servidor para a máquina local
scp usuario@servidor.com:/var/log/app.log ./logs/

# Sincroniza um diretório inteiro com o servidor (rsync)
# Mais eficiente que scp para múltiplos arquivos
rsync -avz ./meu-projeto/ usuario@servidor.com:/var/www/app/

Conclusão

Esses comandos representam o vocabulário básico do terminal Linux. Assim como aprender qualquer linguagem de programação, a fluência vem com a prática e a melhor forma de praticar é usando o terminal no dia a dia, mesmo para tarefas simples.

Se você usa windows, uma boa estratégia é utilizar o WSL e ir executando os códigos de exemplo desse artigo. Não pense que utilizar o Windows como o SO te isenta da responsabilidade de aprender linux, se você é um programador júnior, ou está iniciando seus estudos na área de programação, pode ter a certeza que uma hora ou outra na sua carreira você irá precisar utilizar algum ambiente linux.

O Linux tem uma documentação embutida excelente. Sempre que tiver dúvida sobre um comando, pode consulta-la pelo próprio terminal:

man nome-do-comando

# Exemplo:
man ssh
man rsync