Aprende a usar o Linux do zero — desde os primeiros comandos no terminal até à gestão de sistema, utilizadores, redes e automatização com scripts.
Segue esta ordem para uma progressão lógica — do básico ao avançado
Kernel, distribuições, diferenças para Windows e macOS. Porque usar Linux e onde é utilizado no mundo real.
Navegar no sistema de ficheiros, listar, copiar, mover e apagar ficheiros e directorias com a linha de comandos.
Compreender o sistema de permissões rwx, gerir utilizadores e grupos, usar sudo para tarefas administrativas.
Monitorizar e controlar processos em execução, gerir serviços com systemd e compreender o arranque do sistema.
Configurar interfaces de rede, verificar conectividade, transferir ficheiros, ligar via SSH a servidores remotos.
Instalar, actualizar e remover software com apt, dnf e pacman. Gerir repositórios e dependências.
Automatizar tarefas com scripts Bash — variáveis, condições, ciclos, funções e agendamento com cron.
Pesquisar e transformar texto com grep, sed, awk. Redirecionar saídas com pipes e operadores >, >>, |.
Conceitos fundamentais antes de começar
O Linux é um kernel — o núcleo do sistema operativo, criado por Linus Torvalds em 1991. Gere o hardware, memória, processos e sistema de ficheiros. É open source e licenciado sob a GPL.
Uma distribuição é o kernel Linux + ferramentas GNU + gestor de pacotes + interface gráfica. Cada distro tem foco diferente — servidores, desktop, segurança, educação. Ubuntu, Debian, Fedora, Arch são exemplos.
+96% dos servidores web correm Linux. Todos os supercomputadores do TOP500. O Android é baseado em Linux. A maioria dos sistemas embebidos, IoT e nuvem (AWS, GCP, Azure) usam Linux internamente.
A ferramenta principal do Linux — poderosa e precisa
O terminal (ou emulador de terminal) é uma interface de texto onde escreves comandos que o sistema executa. A shell mais comum é o Bash (Bourne Again Shell). O prompt indica que o sistema está pronto para receber um comando.
O prompt mostra informação sobre o contexto actual. O símbolo $ indica utilizador normal; # indica root (administrador). Nunca corras comandos como root sem necessidade.
Navegar, criar, copiar, mover, pesquisar e redirecionar
| Comando | O que faz |
|---|---|
| 📂 Navegação | |
| pwd | Mostra o caminho completo da directoria actual (Print Working Directory). |
| ls | Lista o conteúdo da directoria actual. Com -la mostra detalhes e ficheiros ocultos. |
| cd /caminho | Muda para a directoria indicada. cd .. sobe um nível, cd ~ vai para a home. |
| tree | Mostra a estrutura de directorias em forma de árvore. Instala com apt install tree. |
| 📝 Criar e Editar | |
| touch ficheiro.txt | Cria um ficheiro vazio ou actualiza a data de modificação de um existente. |
| mkdir pasta | Cria uma directoria. Com -p cria toda a hierarquia de uma vez. |
| nano ficheiro.txt | Abre o editor de texto Nano — simples e indicado para iniciantes. |
| vim ficheiro.txt | Abre o editor Vim — mais poderoso, mas com curva de aprendizagem mais acentuada. |
| 📋 Copiar e Mover | |
| cp origem destino | Copia um ficheiro. Com -r copia uma directoria recursivamente. |
| mv origem destino | Move ou renomeia um ficheiro ou directoria. |
| rm ficheiro | Apaga um ficheiro. Com -r apaga directoria, com -f força sem pedir confirmação. |
| rmdir pasta | Remove uma directoria vazia. |
| 👁️ Ver Conteúdo | |
| cat ficheiro | Mostra o conteúdo completo de um ficheiro no terminal. |
| less ficheiro | Visualiza um ficheiro com scroll — tecla q para sair. |
| head -n 10 ficheiro | Mostra as primeiras 10 linhas de um ficheiro. |
| tail -f ficheiro.log | Mostra as últimas linhas e segue em tempo real — ideal para logs. |
| 🔍 Pesquisar | |
| find / -name "*.txt" | Procura ficheiros com critérios de nome, tamanho, data, tipo, etc. |
| grep "padrão" ficheiro | Pesquisa texto dentro de ficheiros. Com -r pesquisa recursivamente. |
| locate nome | Pesquisa rápida por nome usando uma base de dados indexada. |
| which programa | Mostra o caminho completo de um programa executável. |
Ler, escrever e executar — quem pode fazer o quê
| Comando | O que faz |
|---|---|
| chmod 755 ficheiro | Define permissões em octal: dono=rwx(7), grupo=r-x(5), outros=r-x(5). |
| chmod +x script.sh | Adiciona permissão de execução para todos. -x remove. |
| chmod u+w, g-w ficheiro | Modo simbólico: adiciona escrita ao dono, remove escrita ao grupo. |
| chown utilizador ficheiro | Altera o dono de um ficheiro. |
| chown utilizador:grupo ficheiro | Altera dono e grupo simultaneamente. |
| chgrp grupo ficheiro | Altera apenas o grupo de um ficheiro. |
| umask | Mostra a máscara de criação de ficheiros — define permissões padrão para novos ficheiros. |
| sudo comando | Executa um comando com privilégios de administrador (root). |
| su - utilizador | Muda para outro utilizador. su - muda para root. |
sudo apenas quando necessário. Um comando errado como root pode apagar ficheiros críticos do sistema sem aviso nem recuperação.Monitorizar, controlar e gerir o que está a correr
| Comando | O que faz |
|---|---|
| 📋 Listar Processos | |
| ps aux | Lista todos os processos em execução com utilizador, PID, CPU e memória. |
| top | Monitor interactivo de processos em tempo real. Tecla q para sair. |
| htop | Versão melhorada e colorida do top. Instala com apt install htop. |
| pgrep nginx | Devolve o PID de processos com o nome indicado. |
| ⏯️ Controlar Processos | |
| kill PID | Envia sinal SIGTERM ao processo — pede ao processo para terminar graciosamente. |
| kill -9 PID | Envia SIGKILL — força o encerramento imediato. Usar como último recurso. |
| killall nginx | Encerra todos os processos com o nome indicado. |
| Ctrl + C | Interrompe o processo em execução no terminal actual. |
| Ctrl + Z | Suspende o processo — fica em background. Retoma com fg ou bg. |
| comando & | Executa um comando em background, libertando o terminal. |
| 🔧 Serviços (systemd) | |
| systemctl status nginx | Verifica o estado de um serviço (activo, inactivo, com erros). |
| systemctl start nginx | Inicia um serviço. |
| systemctl stop nginx | Para um serviço. |
| systemctl restart nginx | Para e inicia de novo — útil após alterar configurações. |
| systemctl enable nginx | Activa o serviço para iniciar automaticamente no arranque. |
| systemctl disable nginx | Desactiva o início automático no arranque. |
| journalctl -u nginx -f | Mostra os logs de um serviço em tempo real. |
Diagnosticar, configurar e ligar a sistemas remotos
| Comando | O que faz |
|---|---|
| 🔍 Diagnóstico | |
| ip addr | Mostra todas as interfaces de rede e os seus endereços IP. Substituto moderno do ifconfig. |
| ip route | Mostra a tabela de rotas — gateway padrão e rotas de rede. |
| ping google.com | Testa conectividade com um host. Usa -c 4 para limitar a 4 pacotes. |
| nslookup dominio.pt | Resolve nomes DNS. dig devolve informação mais detalhada. |
| ss -tulnp | Lista portas abertas e serviços a escutar. Substituto do netstat. |
| traceroute google.com | Mostra o caminho de rede até ao destino — cada salto de router. |
| 📥 Transferir Ficheiros | |
| wget https://url | Descarrega um ficheiro de uma URL para a directoria actual. |
| curl -O https://url | Descarrega um ficheiro. curl é mais versátil — suporta múltiplos protocolos. |
| scp ficheiro user@host:/dest | Copia ficheiro para/de um servidor remoto via SSH. |
| rsync -av origem/ dest/ | Sincroniza directorias — só transfere o que mudou. Ideal para backups. |
| 🔒 SSH — Acesso Remoto | |
| ssh utilizador@servidor | Liga a um servidor remoto via SSH na porta 22. |
| ssh -p 2222 user@servidor | Liga na porta SSH personalizada. |
| ssh-keygen -t ed25519 | Gera um par de chaves SSH (pública + privada) para autenticação sem password. |
| ssh-copy-id user@servidor | Copia a chave pública para o servidor — permite login sem password. |
Criar, gerir e controlar acessos no sistema
| Utilizadores | Descrição |
|---|---|
| useradd -m joao | Cria utilizador joao com directoria home. |
| passwd joao | Define ou altera a password do utilizador. |
| userdel -r joao | Remove o utilizador e a sua directoria home. |
| usermod -aG sudo joao | Adiciona joao ao grupo sudo. |
| id joao | Mostra UID, GID e grupos do utilizador. |
| who | Lista utilizadores com sessão activa. |
| last | Histórico de logins no sistema. |
| Grupos | Descrição |
|---|---|
| groupadd professores | Cria um novo grupo. |
| groupdel professores | Remove um grupo. |
| gpasswd -a joao professores | Adiciona utilizador a um grupo. |
| gpasswd -d joao professores | Remove utilizador de um grupo. |
| groups joao | Lista os grupos a que pertence o utilizador. |
| cat /etc/passwd | Ficheiro com informação de todos os utilizadores. |
| cat /etc/group | Ficheiro com todos os grupos do sistema. |
Instalar, actualizar e remover software com apt, dnf e pacman
O gestor de pacotes padrão das distribuições baseadas em Debian. Instala pacotes dos repositórios configurados em /etc/apt/sources.list.
O gestor de pacotes das distribuições Red Hat. dnf é o substituto moderno do yum com melhor resolução de dependências.
O gestor de pacotes do Arch Linux — rápido e minimalista. O AUR (Arch User Repository) adiciona milhares de pacotes da comunidade.
Automatizar tarefas com scripts Bash
#!/bin/bash indica ao sistema que deve usar o Bash para interpretar o ficheiro.
| Elemento | Sintaxe e utilização |
|---|---|
| Variáveis | NOME="valor" — sem espaços à volta do =. Acede com $NOME ou ${NOME}. |
| Condição if | if [ condição ]; then ... elif ...; then ... else ... fi |
| Ciclo for | for var in lista; do ... done — itera sobre ficheiros, números ou arrays. |
| Ciclo while | while [ condição ]; do ... done — repete enquanto condição for verdadeira. |
| Funções | nome_funcao() { comandos; } — chama com nome_funcao arg1 arg2. |
| Parâmetros | $1, $2… — argumentos passados ao script. $# = número de argumentos. $@ = todos. |
| Código de saída | $? — código de retorno do último comando (0=sucesso, outro=erro). |
| Cron (agendar) | crontab -e — edita tarefas agendadas. Formato: minuto hora dia mês semana comando. |
crontab -e) a linha: 0 2 * * * /home/aluno/script.sh >> /var/log/backup.log 2>&1
Produtividade máxima na linha de comandos
O Linux tem documentação integrada para todos os comandos — aprende a usá-la
O manual completo de qualquer comando. man ls, man grep, man bash. Navega com as setas e sai com q.
A maioria dos comandos aceita --help para mostrar um resumo das opções disponíveis — mais rápido que o man.
info comando — documentação detalhada em formato hiperligado. apropos palavra — procura comandos relacionados com uma palavra-chave.