📘 Manual de Introdução
🐧

Linux — Sistema Operativo

Terminal · Ficheiros · Permissões · Processos · Redes · Shell Scripting

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.

📚

Trilha de Aprendizagem

Segue esta ordem para uma progressão lógica — do básico ao avançado

🖥️
⬤ Início obrigatório
1. O que é o Linux

Kernel, distribuições, diferenças para Windows e macOS. Porque usar Linux e onde é utilizado no mundo real.

⌨️
⬤ Iniciante
2. Terminal e Comandos Base

Navegar no sistema de ficheiros, listar, copiar, mover e apagar ficheiros e directorias com a linha de comandos.

🔐
⬤ Iniciante
3. Permissões e Utilizadores

Compreender o sistema de permissões rwx, gerir utilizadores e grupos, usar sudo para tarefas administrativas.

⚙️
⬤ Intermédio
4. Processos e Serviços

Monitorizar e controlar processos em execução, gerir serviços com systemd e compreender o arranque do sistema.

🌐
⬤ Intermédio
5. Redes e Conectividade

Configurar interfaces de rede, verificar conectividade, transferir ficheiros, ligar via SSH a servidores remotos.

📦
⬤ Intermédio
6. Gestão de Pacotes

Instalar, actualizar e remover software com apt, dnf e pacman. Gerir repositórios e dependências.

📝
⬤ Avançado
7. Shell Scripting

Automatizar tarefas com scripts Bash — variáveis, condições, ciclos, funções e agendamento com cron.

🔍
⬤ Avançado
8. Texto e Filtros

Pesquisar e transformar texto com grep, sed, awk. Redirecionar saídas com pipes e operadores >, >>, |.

01

O que é o Linux?

Conceitos fundamentais antes de começar

🫀
Kernel
O Kernel Linux

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.

📦
Distribuição
Distribuições (Distros)

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.

🌍
Onde é usado
Linux no Mundo Real

+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.

🐧 GNU/Linux: Tecnicamente o sistema chama-se GNU/Linux — o kernel é o Linux, mas as ferramentas essenciais (compilador, shell, utilitários) são do projecto GNU, iniciado por Richard Stallman em 1983. Na prática diz-se apenas "Linux".

Distribuições mais populares

UbuntuBaseado em Debian. Ideal para começar. Suporte LTS de 5 anos.Desktop · Servidor
FedoraTecnologia de ponta, patrocinado pela Red Hat. Muito usado por developers.Developer
DebianEstável, robusto e a base de muitas outras distros. Preferido em servidores.Servidor
Arch LinuxMinimalista e altamente configurável. Para utilizadores avançados.Avançado
Linux MintBaseado em Ubuntu, interface familiar para quem vem do Windows.Iniciante
Kali LinuxEspecializado em segurança e testes de penetração. Ferramentas de hacking ético.Segurança
02

O Terminal

A ferramenta principal do Linux — poderosa e precisa

💻
O que é o Terminal?

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.

📌
Anatomia do Prompt

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.

bash — utilizador@linux:~
# O prompt completo — utilizador, hostname e directoria actual aluno@ubuntu:~$ echo "Olá, Linux!" Olá, Linux! ▸ saber quem és e onde estás $ whoami aluno $ hostname ubuntu $ pwd /home/aluno $ date Sun Mar 1 14:32:00 WET 2026 ▸ informação sobre o sistema $ uname -a Linux ubuntu 6.5.0-25-generic #25-Ubuntu SMP x86_64 GNU/Linux $ lsb_release -a Description: Ubuntu 24.04.1 LTS $ uptime 14:32 up 2 days, 3:14, 1 user, load average: 0.12, 0.08, 0.05
03

Sistema de Ficheiros

Navegar, criar, copiar, mover, pesquisar e redirecionar

Estrutura de directorias do Linux

/# raiz do sistema — tudo começa aqui ├── bin/# comandos essenciais (ls, cp, mv, cat…) ├── boot/# ficheiros de arranque do sistema ├── dev/# dispositivos de hardware (discos, teclado…) ├── etc/# ficheiros de configuração do sistema ├── home/# directorias pessoais dos utilizadores │ └── aluno/# ~ (home do utilizador aluno) ├── lib/# bibliotecas partilhadas do sistema ├── proc/# sistema de ficheiros virtual — processos em memória ├── root/# home do utilizador root (administrador) ├── tmp/# ficheiros temporários (apagados no reboot) ├── usr/# programas e utilitários instalados └── var/# logs, bases de dados, filas de email
ComandoO que faz
📂 Navegação
pwdMostra o caminho completo da directoria actual (Print Working Directory).
lsLista o conteúdo da directoria actual. Com -la mostra detalhes e ficheiros ocultos.
cd /caminhoMuda para a directoria indicada. cd .. sobe um nível, cd ~ vai para a home.
treeMostra a estrutura de directorias em forma de árvore. Instala com apt install tree.
📝 Criar e Editar
touch ficheiro.txtCria um ficheiro vazio ou actualiza a data de modificação de um existente.
mkdir pastaCria uma directoria. Com -p cria toda a hierarquia de uma vez.
nano ficheiro.txtAbre o editor de texto Nano — simples e indicado para iniciantes.
vim ficheiro.txtAbre o editor Vim — mais poderoso, mas com curva de aprendizagem mais acentuada.
📋 Copiar e Mover
cp origem destinoCopia um ficheiro. Com -r copia uma directoria recursivamente.
mv origem destinoMove ou renomeia um ficheiro ou directoria.
rm ficheiroApaga um ficheiro. Com -r apaga directoria, com -f força sem pedir confirmação.
rmdir pastaRemove uma directoria vazia.
👁️ Ver Conteúdo
cat ficheiroMostra o conteúdo completo de um ficheiro no terminal.
less ficheiroVisualiza um ficheiro com scroll — tecla q para sair.
head -n 10 ficheiroMostra as primeiras 10 linhas de um ficheiro.
tail -f ficheiro.logMostra 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" ficheiroPesquisa texto dentro de ficheiros. Com -r pesquisa recursivamente.
locate nomePesquisa rápida por nome usando uma base de dados indexada.
which programaMostra o caminho completo de um programa executável.
navegação e manipulação de ficheiros
# Criar estrutura de projecto $ mkdir -p projecto/src/css $ touch projecto/src/index.html projecto/src/css/style.css $ ls -la projecto/src/ total 8 drwxr-xr-x 3 aluno aluno 60 Mar 1 14:35 . -rw-r--r-- 1 aluno aluno 0 Mar 1 14:35 index.html drwxr-xr-x 2 aluno aluno 40 Mar 1 14:35 css ▸ pipes, redirecionamento e filtros # Redirecionar saída para ficheiro $ ls /etc > lista.txt # Adicionar ao final sem sobrescrever $ echo "Fim da lista" >> lista.txt # Contar linhas com pipe $ ls /etc | wc -l 247 # Pesquisar padrão com grep $ grep -r "root" /etc/passwd root:x:0:0:root:/root:/bin/bash
04

Permissões de Ficheiros

Ler, escrever e executar — quem pode fazer o quê

Anatomia das permissões — output de ls -la -rwxr-xr-- 1 aluno aluno 4096 Mar 1 script.sh # tipo · dono · grupo · outros · links · dono · grupo · tamanho · nome - = ficheiro regular  |  d = directoria  |  l = link simbólico r = leitura (4)  w = escrita (2)  x = execução (1)  - = sem permissão (0)
ComandoO que faz
chmod 755 ficheiroDefine permissões em octal: dono=rwx(7), grupo=r-x(5), outros=r-x(5).
chmod +x script.shAdiciona permissão de execução para todos. -x remove.
chmod u+w, g-w ficheiroModo simbólico: adiciona escrita ao dono, remove escrita ao grupo.
chown utilizador ficheiroAltera o dono de um ficheiro.
chown utilizador:grupo ficheiroAltera dono e grupo simultaneamente.
chgrp grupo ficheiroAltera apenas o grupo de um ficheiro.
umaskMostra a máscara de criação de ficheiros — define permissões padrão para novos ficheiros.
sudo comandoExecuta um comando com privilégios de administrador (root).
su - utilizadorMuda para outro utilizador. su - muda para root.
permissões na prática
# Ver permissões detalhadas $ ls -la -rw-r--r-- 1 aluno aluno 245 Mar 1 14:40 notas.txt -rwxr-xr-x 1 aluno aluno 512 Mar 1 14:38 script.sh drwxr-xr-x 2 aluno aluno 4096 Mar 1 14:35 projecto ▸ tornar script executável e correr $ chmod +x script.sh $ ./script.sh Script executado com sucesso! ▸ permissões numéricas (octal) # 7=rwx 5=r-x 4=r-- $ chmod 754 deploy.sh # dono pode tudo · grupo pode ler+executar · outros só lêem ▸ sudo para tarefas de administração $ sudo apt update [sudo] password for aluno: Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
⚠️ Cuidado com root: Nunca trabalhes habitualmente como root. Usa sudo apenas quando necessário. Um comando errado como root pode apagar ficheiros críticos do sistema sem aviso nem recuperação.
05

Processos e Serviços

Monitorizar, controlar e gerir o que está a correr

ComandoO que faz
📋 Listar Processos
ps auxLista todos os processos em execução com utilizador, PID, CPU e memória.
topMonitor interactivo de processos em tempo real. Tecla q para sair.
htopVersão melhorada e colorida do top. Instala com apt install htop.
pgrep nginxDevolve o PID de processos com o nome indicado.
⏯️ Controlar Processos
kill PIDEnvia sinal SIGTERM ao processo — pede ao processo para terminar graciosamente.
kill -9 PIDEnvia SIGKILL — força o encerramento imediato. Usar como último recurso.
killall nginxEncerra todos os processos com o nome indicado.
Ctrl + CInterrompe o processo em execução no terminal actual.
Ctrl + ZSuspende o processo — fica em background. Retoma com fg ou bg.
comando &Executa um comando em background, libertando o terminal.
🔧 Serviços (systemd)
systemctl status nginxVerifica o estado de um serviço (activo, inactivo, com erros).
systemctl start nginxInicia um serviço.
systemctl stop nginxPara um serviço.
systemctl restart nginxPara e inicia de novo — útil após alterar configurações.
systemctl enable nginxActiva o serviço para iniciar automaticamente no arranque.
systemctl disable nginxDesactiva o início automático no arranque.
journalctl -u nginx -fMostra os logs de um serviço em tempo real.
gestão de processos
# Ver processos ordenados por uso de CPU $ ps aux | sort -k3rn | head -5 USER PID %CPU %MEM COMMAND aluno 1234 12.3 2.1 node server.js www-data 5678 4.1 0.8 nginx: worker process ▸ encontrar e matar processo por nome $ pgrep -l node 1234 node $ kill 1234 ▸ gerir o serviço nginx com systemd $ sudo systemctl status nginx ● nginx.service - A high performance web server Active: active (running) since Sun 2026-03-01 12:00:00 $ sudo systemctl enable nginx Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service
06

Redes e Conectividade

Diagnosticar, configurar e ligar a sistemas remotos

ComandoO que faz
🔍 Diagnóstico
ip addrMostra todas as interfaces de rede e os seus endereços IP. Substituto moderno do ifconfig.
ip routeMostra a tabela de rotas — gateway padrão e rotas de rede.
ping google.comTesta conectividade com um host. Usa -c 4 para limitar a 4 pacotes.
nslookup dominio.ptResolve nomes DNS. dig devolve informação mais detalhada.
ss -tulnpLista portas abertas e serviços a escutar. Substituto do netstat.
traceroute google.comMostra o caminho de rede até ao destino — cada salto de router.
📥 Transferir Ficheiros
wget https://urlDescarrega um ficheiro de uma URL para a directoria actual.
curl -O https://urlDescarrega um ficheiro. curl é mais versátil — suporta múltiplos protocolos.
scp ficheiro user@host:/destCopia 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@servidorLiga a um servidor remoto via SSH na porta 22.
ssh -p 2222 user@servidorLiga na porta SSH personalizada.
ssh-keygen -t ed25519Gera um par de chaves SSH (pública + privada) para autenticação sem password.
ssh-copy-id user@servidorCopia a chave pública para o servidor — permite login sem password.
diagnóstico de rede e SSH
# Ver IP da máquina $ ip addr show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> inet 192.168.1.42/24 brd 192.168.1.255 scope global eth0 ▸ testar conectividade $ ping -c 3 8.8.8.8 3 packets transmitted, 3 received, 0% packet loss ▸ ligar a servidor remoto por SSH $ ssh aluno@192.168.1.100 The authenticity of host '192.168.1.100' can't be established. Are you sure you want to continue connecting? (yes/no): yes Welcome to Ubuntu 24.04.1 LTS aluno@servidor:~$ ▸ configurar acesso SSH sem password $ ssh-keygen -t ed25519 -C "aluno@escola" $ ssh-copy-id aluno@192.168.1.100 Number of key(s) added: 1
07

Utilizadores e Grupos

Criar, gerir e controlar acessos no sistema

UtilizadoresDescrição
useradd -m joaoCria utilizador joao com directoria home.
passwd joaoDefine ou altera a password do utilizador.
userdel -r joaoRemove o utilizador e a sua directoria home.
usermod -aG sudo joaoAdiciona joao ao grupo sudo.
id joaoMostra UID, GID e grupos do utilizador.
whoLista utilizadores com sessão activa.
lastHistórico de logins no sistema.
GruposDescrição
groupadd professoresCria um novo grupo.
groupdel professoresRemove um grupo.
gpasswd -a joao professoresAdiciona utilizador a um grupo.
gpasswd -d joao professoresRemove utilizador de um grupo.
groups joaoLista os grupos a que pertence o utilizador.
cat /etc/passwdFicheiro com informação de todos os utilizadores.
cat /etc/groupFicheiro com todos os grupos do sistema.
08

Gestão de Pacotes

Instalar, actualizar e remover software com apt, dnf e pacman

🟠
Debian · Ubuntu · Mint
APT

O gestor de pacotes padrão das distribuições baseadas em Debian. Instala pacotes dos repositórios configurados em /etc/apt/sources.list.

🔵
Fedora · RHEL · CentOS
DNF / YUM

O gestor de pacotes das distribuições Red Hat. dnf é o substituto moderno do yum com melhor resolução de dependências.

Arch · Manjaro · EndeavourOS
Pacman

O gestor de pacotes do Arch Linux — rápido e minimalista. O AUR (Arch User Repository) adiciona milhares de pacotes da comunidade.

gestão de pacotes com apt (Ubuntu/Debian)
# Actualizar lista de pacotes disponíveis $ sudo apt update Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease Reading package lists... Done ▸ instalar e remover software $ sudo apt install -y htop tree curl git Setting up htop (3.3.0-4) ... $ sudo apt remove tree $ sudo apt autoremove # Remove dependências que já não são necessárias ▸ actualizar todo o sistema $ sudo apt update && sudo apt upgrade -y ▸ pesquisar pacotes disponíveis $ apt search nginx $ apt show nginx Package: nginx Version: 1.24.0-2ubuntu7 Description: small, powerful, scalable web/proxy server
09

Shell Scripting

Automatizar tarefas com scripts Bash

O que é um script Bash? Um ficheiro de texto com uma sequência de comandos que o shell executa automaticamente. A primeira linha #!/bin/bash indica ao sistema que deve usar o Bash para interpretar o ficheiro.
script.sh — exemplo completo comentado
#!/bin/bash # Script de exemplo — backup automático # ── Variáveis ──────────────────────────────────── ORIGEM="/home/aluno/projecto" DESTINO="/backup" DATA=$(date +%Y-%m-%d) FICHEIRO="backup_${DATA}.tar.gz" # ── Funções ────────────────────────────────────── criar_backup() { echo "A criar backup de ${ORIGEM}..." tar -czf "${DESTINO}/${FICHEIRO}" "${ORIGEM}" } # ── Condições ──────────────────────────────────── if [ ! -d "${DESTINO}" ]; then mkdir -p "${DESTINO}" echo "Directoria de backup criada." fi # ── Ciclo for ──────────────────────────────────── for f in "${ORIGEM}"/*.txt; do echo "Ficheiro encontrado: ${f}" done # ── Executar e verificar ───────────────────────── criar_backup if [ $? -eq 0 ]; then echo ✓ Backup ${FICHEIRO} criado com sucesso!" else echo "✗ Erro ao criar backup!" exit 1 fi
ElementoSintaxe e utilização
VariáveisNOME="valor" — sem espaços à volta do =. Acede com $NOME ou ${NOME}.
Condição ifif [ condição ]; then ... elif ...; then ... else ... fi
Ciclo forfor var in lista; do ... done — itera sobre ficheiros, números ou arrays.
Ciclo whilewhile [ condição ]; do ... done — repete enquanto condição for verdadeira.
Funçõesnome_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.
💡 Agendar o backup com cron: Para executar o script de backup todos os dias às 02:00, adiciona ao crontab (crontab -e) a linha: 0 2 * * * /home/aluno/script.sh >> /var/log/backup.log 2>&1
10

Atalhos de Terminal

Produtividade máxima na linha de comandos

Completar comando/ficheiro
Tab
Histórico — comando anterior
Pesquisar no histórico
CtrlR
Interromper processo actual
CtrlC
Suspender processo
CtrlZ
Limpar ecrã do terminal
CtrlL
Ir para o início da linha
CtrlA
Ir para o fim da linha
CtrlE
Apagar até ao início da linha
CtrlU
Apagar palavra anterior
CtrlW
Sair do terminal / logout
CtrlD
Fechar sessão SSH
~.
Navegar palavra a palavra
Alt→ / ←
Ver histórico de comandos
history
Repetir último comando
!!
Repetir como sudo
sudo !!
📖

Pedir Ajuda

O Linux tem documentação integrada para todos os comandos — aprende a usá-la

📄
man — Manual Pages

O manual completo de qualquer comando. man ls, man grep, man bash. Navega com as setas e sai com q.

--help e -h

A maioria dos comandos aceita --help para mostrar um resumo das opções disponíveis — mais rápido que o man.

🔎
info e apropos

info comando — documentação detalhada em formato hiperligado. apropos palavra — procura comandos relacionados com uma palavra-chave.