Se você está iniciando sua jornada no Linux ou já administra servidores e quer revisar sua base, este guia é para você. Dominar comandos básicos não só acelera sua rotina, como também dá mais confiança para resolver problemas, automatizar tarefas e entender melhor o que acontece por baixo dos panos.
Neste artigo vamos explorar os comandos essenciais do Linux de forma prática e didática sem jogar um monte de instruções soltas. Cada comando terá contexto, exemplos reais, cenários de uso, e mini tutoriais práticos para você experimentar direto no terminal.
📂 Explorando Arquivos e Pastas com ls
O ls
é o comando mais usado para listar arquivos e diretórios. Parece simples, mas com alguns parâmetros ele se torna poderoso.
# Listar arquivos e pastas
ls
# Listar em formato detalhado (permissões, dono, tamanho, data)
ls -l
# Incluir arquivos ocultos (aqueles que começam com .)
ls -la
# Ordenar por data de modificação (mais recentes no fim)
ls -lt
💡 Dica extra: combine ls -lh
para ver tamanhos legíveis (KB, MB, GB).
Mini tutorial:
cd ~ # Vá para sua pasta pessoal
mkdir teste # Crie uma pasta chamada teste
cd teste # Acesse a pasta criada
ls -la # Liste os arquivos e confirme que está vazia
Comparativo rápido: ls
com diferentes parâmetros
Abra os itens para ver descrição e saída típica.
Básico
ls
— listagem simples
Lista arquivos e diretórios no diretório atual.
$ ls
arquivo1.txt notas.md pasta1/ script.sh
Detalhes
ls -l
— modo longo
Mostra permissões, links, proprietário, grupo, tamanho e data.
$ ls -l
-rw-r--r-- 1 user user 1240 Jan 21 10:15 script.sh
drwxr-xr-x 3 user user 4096 Jan 20 09:02 pasta1
-rw-r--r-- 1 user user 2789 Jan 18 18:40 notas.md
Ocultos
ls -a
— inclui “dotfiles”
Inclui arquivos e pastas que começam com .
(ocultos).
$ ls -a
. .. .gitignore .env arquivo1.txt pasta1 script.sh
Tamanhos
ls -lh
— tamanhos legíveis
Combina com -l
para mostrar KB/MB/GB.
$ ls -lh
-rw-r--r-- 1 user user 12K Jan 21 10:15 script.sh
-rw-r--r-- 1 user user 2.7K Jan 18 18:40 notas.md
Árvore
ls -R
— recursivo
Lista subdiretórios recursivamente.
$ ls -R
.:
arquivo1.txt pasta1
./pasta1:
subpasta dados.csv
./pasta1/subpasta:
notas.md
Ordem
-t
, -S
, -r
— ordenação
-t
: ordena por data (recentes primeiro).-S
: ordena por tamanho (maiores primeiro).-r
: inverte a ordem (ex.: mais antigos primeiro).
$ ls -lt
-rw-r--r-- 1 user user 2.7K Jan 22 09:10 changelog.md
-rw-r--r-- 1 user user 12K Jan 21 10:15 script.sh
Combos
ls -lah
e outros atalhos
Combinações frequentes:
ls -lah
— longo + ocultos + legível.ls -ltr
— longo + por data ascendente (antigos por último).ls -lS
— longo + por tamanho.
$ ls -lah
drwxr-xr-x 6 user user 4.0K Jan 22 09:10 .
drwxr-xr-x 18 user user 4.0K Jan 20 08:00 ..
-rw-r--r-- 1 user user 2.7K Jan 18 18:40 .env
-rw-r--r-- 1 user user 12K Jan 21 10:15 script.sh
Atenção Dicas, aliases e pegadinhas
- Muitas distros já têm alias:
alias ls='ls --color=auto'
. ls
não soma tamanho de diretórios (usedu -sh
ouls -ld
para o próprio diretório).- Para nomes com espaços, use aspas:
ls "Minha Pasta"
. - Globs:
ls *.log
,ls **/*.md
(seglobstar
estiver ativo).
🔒 Permissões com chmod
No Linux, cada arquivo e diretório tem permissões de leitura, escrita e execução para usuário, grupo e outros.
# Dar permissão de execução a um script
chmod +x script.sh
# Definir permissões numéricas (r=4, w=2, x=1)
chmod 755 script.sh
-
755
→ dono pode tudo; grupo e outros só podem ler e executar. -
644
→ dono pode ler e escrever; grupo e outros apenas ler.
Mini tutorial:
touch meu_script.sh # Crie um arquivo vazio
ls -l meu_script.sh # Veja as permissões atuais
chmod +x meu_script.sh # Adicione permissão de execução
ls -l meu_script.sh # Confira a mudança
Entendendo cada número e permissão do ls -l
Abra os itens para ver descrições, exemplos e dicas.
Visão
Formato básico de uma linha do ls -l
$ ls -l
-rw-r--r-- 1 alice dev 2789 Jan 18 18:40 notas.md
^ ^^^^^^^^^ ^ ^^^^^ ^^^^ ^^^ ^^ ^^ ^^^^^^^
| | | | | | | | └─── Nome (+ "→ alvo" se link)
| | | | | | └────── Data/Hora
| | | | | └────────── Tamanho (bytes; use -h p/ KB/MB)
| | | | └─────────────── Grupo
| | | └────────────────────── Dono (usuário)
| | └──────────────────────── Nº de links (hard links / dirs)
| └────────────────────────────────── Permissões (rwx para U/G/O)
└──────────────────────────────────── Tipo de arquivo (-, d, l, c, b, p, s)
Tipo Coluna 1 — tipo de arquivo
-
arquivo regulard
diretóriol
link simbólicoc
dispositivo de caractere •b
dispositivo de blocop
pipe nomeado (FIFO) •s
socket
Perms
Colunas 2–10 — rwxrwxrwx
Três trincas: dono • grupo • outros. Cada letra:
- r (read): ler arquivo / listar conteúdo do diretório
- w (write): escrever arquivo / criar, renomear e excluir dentro do diretório
- x (execute): executar arquivo / entrar no diretório
-rw-r--r-- → dono: rw-, grupo: r--, outros: r--
Espec. setuid, setgid e sticky bit
- setuid (s/S na posição de
x
do dono): executa com UID do dono.-rwsr-xr-x
(minúsculo = temx
+ setuid) •-rwSr-xr-x
(maiúsculo = semx
). - setgid (s/S na posição de
x
do grupo): herda grupo em novos arquivos; em diretórios, novos itens recebem o mesmo grupo. - sticky (t/T na posição de
x
de “outros” em diretórios): só o dono pode remover dentro do diretório (ex.:/tmp
→drwxrwxrwt
).
chmod u+s arquivo # setuid
chmod g+s pasta # setgid
chmod +t pasta # sticky
Links Número de links (hard links / diretórios)
Arquivos: quantidade de hard links apontando para o mesmo inode. Diretórios: pelo menos 2 (.
e ..
) + 1 por subdiretório.
$ ln arquivo a2 && ls -l arquivo a2
-rw-r--r-- 2 alice dev 0 Jan 21 10:00 a2
-rw-r--r-- 2 alice dev 0 Jan 21 10:00 arquivo # “2” = dois nomes p/ o mesmo inode
UG Dono (usuário) e Grupo
Controlam quem recebe a primeira e a segunda trinca de permissões.
$ chown alice:dev arquivo # muda dono e grupo
$ chgrp dev arquivo # muda só o grupo
Size Tamanho (bytes) e variações
- Use
-h
para tamanhos legíveis (12K
,5.3M
). - Em links simbólicos, o tamanho é o comprimento do caminho alvo.
- Para dispositivos (
c
/b
), a coluna mostra major:minor em vez de bytes.
$ ls -lh /dev/null
crw-rw-rw- 1 root root 1, 3 Jan 1 12:00 /dev/null # major,minor
Data Data/Hora exibidas
- Por padrão, mostra mtime (modificação do conteúdo).
- Arquivos mais antigos podem exibir o ano em vez da hora.
- Use
--time=atime|ctime|birth
(se suportado) para alternar o campo.
Nome Nome do item e links simbólicos
Se for link simbólico, aparece nome → destino
.
$ ln -s /etc/hosts hosts-link && ls -l hosts-link
lrwxrwxrwx 1 alice dev 10 Jan 21 10:20 hosts-link → /etc/hosts
chmod Como ler os números (ex.: 755, 644)
Cada trinca é um número: r=4
, w=2
, x=1
. Some os valores:
7 = rwx (4+2+1)
6 = rw- (4+2)
5 = r-x (4+1)
4 = r-- (4)
0 = ---
# Exemplos
chmod 644 arquivo # -rw-r--r--
chmod 755 script.sh # -rwxr-xr-x
chmod 770 pasta # rwx para dono e grupo; outros sem acesso
Atenção
ACLs (+
) e atributos estendidos
- Um
+
após as permissões indica ACL extra:-rw-r--r--+
. Veja comgetfacl arquivo
. - Em algumas distros/sistemas,
@
indica atributos estendidos (ex.: macOS). - Para atributos em ext*, use
lsattr
/chattr
(ex.: imutáveli
).
⚙️ Gerenciando Processos com ps
e kill
Todo processo em execução no Linux tem um PID (Process ID). Para encontrar e encerrar processos, usamos ps
e kill
.
# Listar processos do usuário atual
ps
# Listar todos os processos
ps aux
# Procurar por um processo específico (exemplo: nginx)
ps aux | grep nginx
# Encerrar processo pelo PID
kill 1234
# Encerrar processo à força
kill -9 1234
💡 Boa prática: antes de usar kill -9
, tente encerrar normalmente. O sinal -9
força a finalização e pode causar problemas se o processo estiver manipulando arquivos.
Mini tutorial:
sleep 1000 & # Crie um processo de teste em background
ps aux | grep sleep # Encontre o PID
kill # Encerre o processo
Etapas: encontrar e encerrar processos
Use com cuidado ⚠️ encerrar processos críticos pode travar o sistema.
-
1Listar processos em execução
$ ps aux # visão geral $ top # monitor interativo $ htop # versão avançada (se instalado)
-
2Localizar pelo nome
$ pidof firefox # retorna PID $ pgrep -l nginx # lista PIDs + nomes $ ps aux | grep python # filtra manualmente
-
3Encerrar pelo PID
$ kill 1234 # encerra com SIGTERM (educado) $ kill -9 1234 # encerra forçado (SIGKILL)
-
4Encerrar pelo nome
$ killall firefox # encerra todos os processos firefox $ pkill -f script.py # encerra por padrão ou comando
-
5Confirmar se o processo parou
$ pgrep firefox # nada retornado → sucesso $ ps aux | grep nome
🔄 Controlando Serviços com systemctl
O systemctl
é usado para gerenciar serviços em distribuições Linux modernas que utilizam o systemd
como sistema de inicialização (como Ubuntu, Debian e CentOS). Ele é a ferramenta padrão para controlar e monitorar serviços do sistema.
# Iniciar um serviço
sudo systemctl start nginx
# Parar um serviço
sudo systemctl stop nginx
# Reiniciar um serviço
sudo systemctl restart nginx
# Verificar status
sudo systemctl status nginx
# Habilitar para iniciar automaticamente no boot
sudo systemctl enable nginx
Mini tutorial:
sudo systemctl status ssh # Veja se o SSH está rodando
sudo systemctl stop ssh # Pare o serviço
sudo systemctl start ssh # Inicie novamente
Clique aqui para ler mais sobre Como Gerenciar um Servidor Ubuntu com systemctl e Outros Comandos Essenciais.
🌐 Configuração de Rede com ifconfig
e ip
Historicamente, usávamos ifconfig
. Hoje o recomendado é o comando ip
.
# Ver interfaces de rede
ifconfig
# Alternativa moderna
ip addr show
# Exibir rotas
ip route
# Subir ou derrubar interface de rede
sudo ip link set eth0 up
sudo ip link set eth0 down
Mini tutorial:
ip addr show # Veja suas interfaces
ping 8.8.8.8 # Teste conectividade com Google DNS
💡 Dica extra: ip
é mais completo e suportado em sistemas modernos. Use-o sempre que possível.
🌐 ifconfig × ip
O comando ifconfig
está obsoleto na maioria das distros. O ip
é a alternativa moderna e mais poderosa.
🕹️ ifconfig (antigo)
ifconfig
→ listar interfacesifconfig eth0 up
→ ativar interfaceifconfig eth0 192.168.1.10
→ atribuir IP
⚡ ip (moderno)
ip addr
→ listar interfacesip link set eth0 up
→ ativar interfaceip addr add 192.168.1.10/24 dev eth0
→ atribuir IP
💡 Dica: use sempre ip
para maior compatibilidade e funcionalidades extras (ip route
, ip neigh
, etc.).
📡 Monitorando Conexões com netstat
e ss
O netstat
é clássico, mas assim como ifconfig
, vem sendo substituído por ss
.
# Mostrar conexões ativas
netstat -tulnp
# Usando ss (mais rápido e moderno)
ss -tulnp
# Ver portas abertas
ss -ltn
-t
→ conexões TCP-u
→ conexões UDP-l
→ serviços em escuta-n
→ mostrar IPs/portas numéricas-p
→ mostrar processo associado
Mini tutorial:
ss -ltn # Veja portas abertas
ss -tulnp # Veja processos associados
🔗 netstat × ss
O netstat
está obsoleto em várias distribuições. Use ss
como alternativa mais rápida e moderna.
📜 Ação | 🕹️ netstat | ⚡ ss |
---|---|---|
Listar todas conexões | netstat -a |
ss -a |
Listar conexões TCP | netstat -at |
ss -t -a |
Listar conexões UDP | netstat -au |
ss -u -a |
Mostrar estatísticas | netstat -s |
ss -s |
Listar processos e PIDs | netstat -p |
ss -p |
Listar portas em escuta | netstat -lntp |
ss -lntp |
💡 ss
é mais eficiente em sistemas modernos e pode substituir praticamente todos os usos de netstat
.
✍️ Criando e Editando Arquivos
Além de gerenciar processos e redes, você vai precisar manipular arquivos no dia a dia. Aqui entram alguns comandos fundamentais:
# Criar um arquivo vazio
touch exemplo.txt
# Adicionar conteúdo com echo
echo "Olá Linux!" > exemplo.txt
# Visualizar conteúdo com cat
cat exemplo.txt
# Editar com nano
nano exemplo.txt
# Editar com vim
vim exemplo.txt
# Renomear arquivo
mv exemplo.txt novo_nome.txt
# Apagar arquivo
rm novo_nome.txt
Mini tutorial:
cd ~
mkdir projeto
cd projeto
touch notas.txt
nano notas.txt # Escreva algo e salve (CTRL+O, ENTER, CTRL+X)
cat notas.txt # Veja o conteúdo
mv notas.txt ideia.txt
rm ideia.txt
Atalhos prontos para copiar e colar
Use man <comando>
para ajuda • combine pipes |
para filtros poderosos • crie aliases para agilizar.
📂 Básicos do ls
# Listagem detalhada + ocultos + tamanhos legíveis
alias ll='ls -lah'
# Listagem leve com colunas
alias l='ls -CF'
# Apenas ocultos inclusos (sem . e ..)
alias la='ls -A'
# Ordenar por tempo (mais recentes no fim) e tamanhos legíveis
alias lt='ls -lht'
🧭 Navegação rápida
# Subir diretórios rápido
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
# Voltar ao diretório anterior
alias -- -='cd -'
# Criar pasta e entrar
mkcd(){ mkdir -p "$1" && cd "$1"; }
🌱 Git essenciais
# Status curto + branch/graph
alias gs='git status -sb'
# Add tudo e commit rápido
alias ga='git add -A'
alias gc='git commit -m'
# Push/pull diretos
alias gp='git push'
alias gpl='git pull --rebase'
# Log compacto
alias gl='git log --oneline --graph --decorate --all'
🌐 Rede & IP
# Meu IP público
alias myip='curl -s https://ifconfig.me'
# Interfaces e endereços
alias ipa='ip -brief addr'
# Portas em escuta (TCP)
alias listen='ss -lnt'
# Rotas rápidas
alias routes='ip route show'
🧵 Processos
# Buscar processo por nome (case-insensitive)
psg(){ ps aux | grep -i --color=auto "$1"; }
# Encerrar com SIGKILL rapidamente
alias k9='kill -9'
# Top simplificado (se instalado)
alias htop5='htop -d 10'
💾 Disco & utilidades
# Uso de disco por FS (legível + tipo)
alias dfh='df -hT'
# Espaço por pasta (ordem crescente)
alias duh='du -sh -- * | sort -h'
# Repetir último comando com sudo
please(){ sudo $(fc -ln -1); }
⚙️ Mini tutorial
echo "alias ll='ls -la'" >> ~/.bashrc
# Dica: cole também outros aliases acima no mesmo arquivo
source ~/.bashrc
ll # Agora você pode usar ll no lugar de ls -la
🚀 Conclusão
Dominar comandos essenciais no Linux é como aprender a dirigir: no começo parece muita coisa, mas logo se torna natural. Cada comando apresentado aqui do simples ls
até o poderoso systemctl,
é uma ferramenta que vai tornar você mais produtivo e seguro no uso do sistema.
👉 Agora é sua vez: abra um terminal e siga os mini tutoriais deste artigo. Teste criar arquivos, editar com nano
, matar processos, e verificar portas abertas. Quanto mais você praticar, mais natural será seu domínio do Linux.
E se quiser aprofundar seus conhecimentos em Linux, automação e DevOps, continue acompanhando o blog da Forcoder. 😉