View the Project on GitHub ricardotecpro/modulo_08_ambiente_desenvolvimento
Olá! Se você está iniciando sua jornada no mundo da computação ou deseja desmistificar o uso do terminal, este curso é o seu ponto de partida ideal. Aqui, você vai:
Este curso foi desenhado para ser prático e direto ao ponto, transformando o terminal de uma ferramenta intimidadora em seu poderoso aliado!
Em um mundo dominado por interfaces gráficas (GUI - Graphical User Interface), por que se dar ao trabalho de aprender comandos de texto? A resposta é simples: poder, eficiência e controle.
Dominar a CLI não é apenas aprender comandos, é adquirir uma nova forma de interagir com a tecnologia, abrindo portas para um vasto campo de possibilidades.
Antes de mergulharmos nos terminais, vamos alinhar alguns conceitos básicos:
O que é um Sistema Operacional? O SO (como Windows, Linux, macOS) é o software fundamental que gerencia todo o hardware e software do seu computador. Ele é a ponte entre você e a máquina, permitindo que seus programas rodem e que você interaja com o dispositivo.
O Windows é um dos sistemas operacionais mais utilizados no mundo. Vamos explorar brevemente sua interface gráfica antes de pular para seus terminais.
Você provavelmente já está familiarizado com:
O Windows oferece principalmente duas interfaces de linha de comando:
O CMD é o interpretador de comandos legado do Windows. Embora mais simples que o PowerShell, ainda é útil para muitas tarefas básicas.
cd <nome_da_pasta>
: Entra em uma pasta. Ex: cd Documentos
cd ..
: Volta para a pasta anterior (nível acima).cd \
: Vai para a raiz do drive atual (ex: C:\
).C:
: Muda para o drive C (substitua C
pela letra do drive desejado).dir
: Lista arquivos e pastas no diretório atual.dir /w
: Lista em formato amplo.dir /ad
: Lista apenas diretórios.dir *.txt
: Lista todos os arquivos com extensão .txt
.mkdir <nome_da_pasta>
ou md <nome_da_pasta>
: Cria uma nova pasta. Ex: mkdir MeusProjetos
type <nome_do_arquivo.txt>
: Mostra o conteúdo de um arquivo de texto. Ex: type notas.txt
copy <arquivo_origem> <arquivo_destino_ou_pasta>
: Copia um arquivo. Ex: copy relatorio.docx Backup\
move <arquivo_origem> <pasta_destino>
: Move um arquivo. Ex: move rascunho.txt Documentos\
ren <nome_antigo> <nome_novo>
: Renomeia um arquivo ou pasta. Ex: ren antigo.txt novo.txt
del <nome_do_arquivo>
: Deleta um arquivo. Ex: del temporario.tmp
rd <nome_da_pasta>
ou rmdir <nome_da_pasta>
: Remove uma pasta vazia.rd /s /q <nome_da_pasta>
: Remove uma pasta e todo o seu conteúdo (incluindo subpastas) sem pedir confirmação (use com extremo cuidado!).cls
: Limpa a tela do prompt.<comando> /?
: Mostra a ajuda para um comando específico. Ex: dir /?
O PowerShell é um shell mais avançado e um framework de script construído sobre o .NET. Ele usa “cmdlets” (pronuncia-se “command-lets”) que seguem um padrão Verbo-Substantivo (ex: Get-ChildItem
).
Set-Location <caminho>
(alias: sl
, cd
): Muda de diretório. Ex: Set-Location C:\Windows
Get-ChildItem <caminho>
(alias: gci
, ls
, dir
): Lista arquivos e pastas. Ex: Get-ChildItem -Path .\Documentos -Filter *.pdf
(lista PDFs na pasta Documentos)New-Item -Path . -Name "NovaPasta" -ItemType Directory
: Cria uma nova pasta. Ex: New-Item MeuScript.ps1 -ItemType File
(cria arquivo vazio).Get-Content <arquivo>
(alias: gc
, cat
, type
): Mostra o conteúdo de um arquivo. Ex: Get-Content .\config.log -Tail 5
(mostra as últimas 5 linhas).Write-Host "Sua mensagem aqui"
: Exibe uma mensagem. Ex: Write-Host "Processo Concluído!" -ForegroundColor Green
Copy-Item <origem> <destino>
(alias: cpi
, cp
, copy
): Copia arquivos ou pastas. Ex: Copy-Item "C:\Temp\log.txt" -Destination "D:\Backup\"
Move-Item <origem> <destino>
(alias: mi
, mv
, move
): Move arquivos ou pastas.Rename-Item <caminho_atual> <novo_nome>
(alias: rni
, ren
): Renomeia um item. Ex: Rename-Item -Path "relatorio_v1.docx" -NewName "relatorio_final.docx"
Remove-Item <caminho>
(alias: ri
, rm
, del
, erase
, rd
): Remove um arquivo ou pasta.Remove-Item <caminho_da_pasta> -Recurse -Force
: Remove uma pasta e seu conteúdo de forma recursiva e forçada (cuidado!).Clear-Host
(alias: cls
, clear
): Limpa a tela.Get-Help <cmdlet>
: Mostra ajuda detalhada. Ex: Get-Help Get-ChildItem -Full
ou Get-Help Get-ChildItem -Online
(abre no navegador).|
. Ex: Get-ChildItem | Where-Object {$_.Length -gt 1MB} | Sort-Object Length -Descending
(lista arquivos maiores que 1MB, ordenados por tamanho).Se você usa Windows mas quer ou precisa das ferramentas e do ambiente Linux, o WSL2 é a solução perfeita!
O que é o WSL2 (Windows Subsystem for Linux)? É uma camada de compatibilidade fantástica no Windows 10 e 11 que permite executar um ambiente Linux real (incluindo a maioria das ferramentas de linha de comando, utilitários e aplicativos Linux) diretamente no Windows, sem a sobrecarga de uma máquina virtual tradicional ou a complicação de um dual-boot. O WSL2 usa um kernel Linux genuíno.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
/mnt/c
(para o drive C:), /mnt/d
(para o drive D:), etc.Com o WSL2 configurado (ou se você estiver usando uma máquina Linux nativa), é hora de explorar este poderoso sistema.
/
):
/bin
: Comandos binários essenciais (para todos os usuários)./sbin
: Comandos binários de sistema (geralmente para o administrador)./etc
: Arquivos de configuração do sistema./home
: Diretórios pessoais dos usuários (ex: /home/seu_usuario
)./root
: Diretório pessoal do superusuário (root)./lib
: Bibliotecas essenciais para os binários em /bin
e /sbin
./usr
: Utilitários e aplicativos de usuários secundários (ex: /usr/bin
, /usr/lib
)./var
: Arquivos variáveis, como logs (/var/log
), spools, etc./tmp
: Arquivos temporários./dev
: Arquivos de dispositivos (discos, terminais, etc.)./mnt
ou /media
: Pontos de montagem para sistemas de arquivos temporários (pen drives, CD-ROMs, partições do Windows no WSL).r
), escrita (w
) e execução (x
) para o dono, o grupo e outros.ls -l
mostra essas permissões (ex: -rwxr-xr--
).root
tem permissão para fazer qualquer coisa no sistema.sudo <comando>
: Executa um comando como superusuário (pede sua senha de usuário). Use com responsabilidade!O Bash é o shell padrão na maioria das distribuições Linux e no macOS. É robusto, amplamente documentado e muito poderoso para scripting.
pwd
: Mostra o diretório de trabalho atual (Print Working Directory).cd <caminho>
: Muda de diretório.
cd ~
ou cd
: Vai para o diretório home do usuário atual.cd -
: Volta para o diretório anterior.cd ..
: Vai para o diretório pai.ls
: Lista arquivos e pastas.ls -l
: Lista em formato longo (com permissões, dono, tamanho, data).ls -a
: Lista todos os arquivos, incluindo os ocultos (que começam com .
).ls -lh
: Formato longo com tamanhos legíveis (KB, MB, GB).mkdir <nome_da_pasta>
: Cria uma nova pasta.touch <nome_do_arquivo>
: Cria um arquivo vazio ou atualiza a data de modificação de um arquivo existente.cat <arquivo>
: Concatena e exibe o conteúdo de arquivos.less <arquivo>
ou more <arquivo>
: Visualiza arquivos página por página (use q
para sair). less
é mais moderno.head <arquivo>
: Mostra as primeiras 10 linhas (use -n <numero>
para especificar, ex: head -n 5 arquivo.txt
).tail <arquivo>
: Mostra as últimas 10 linhas (use -n <numero>
ou -f
para acompanhar em tempo real, útil para logs: tail -f /var/log/syslog
).cp <origem> <destino>
: Copia arquivos ou pastas (use -r
para copiar pastas recursivamente: cp -r pasta_origem pasta_destino
).mv <origem> <destino>
: Move ou renomeia arquivos/pastas.rm <arquivo>
: Remove um arquivo.rmdir <pasta_vazia>
: Remove uma pasta vazia.rm -r <pasta>
: Remove uma pasta e seu conteúdo recursivamente (muito cuidado!).rm -rf <pasta>
: Remove recursivamente e força, sem pedir confirmação (extremamente perigoso se usado incorretamente!).grep "padrão_de_texto" <arquivo>
: Procura por um padrão de texto dentro de um arquivo. Ex: grep "erro" log.txt
.grep -r "padrão_de_texto" <diretorio>
: Procura recursivamente em um diretório.echo "<mensagem>"
: Exibe uma mensagem ou o valor de uma variável.man <comando>
: Mostra o manual de um comando. Ex: man ls
.clear
: Limpa a tela do terminal.history
: Mostra o histórico de comandos.comando > arquivo.txt
: Redireciona a saída do comando para um arquivo (sobrescreve o arquivo).comando >> arquivo.txt
: Redireciona e anexa a saída ao final do arquivo.comando1 | comando2
: “Encanamento” (pipe) - a saída do comando1
se torna a entrada do comando2
. Ex: ls -l | grep "janeiro"
(lista arquivos e filtra apenas os que contêm “janeiro”).O Zsh é um shell alternativo que oferece muitos recursos avançados sobre o Bash, como autocompletar aprimorado, correção ortográfica de comandos, temas e uma vasta gama de plugins através de frameworks como “Oh My Zsh”.
sudo apt update
sudo apt install zsh
chsh -s $(which zsh)
(Você precisará sair e entrar novamente na sessão do terminal).
curl
ou wget
- verifique o site oficial do Oh My Zsh para o comando mais atual):
sh -c "$(curl -fsSL [https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh](https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh))"
Tab
para completar comandos, caminhos, opções e até mesmo argumentos de forma inteligente.Aqui está uma tabela para ajudar a traduzir comandos entre os diferentes shells:
Tarefa | CMD (Windows) | PowerShell (Windows) | Bash/Zsh (Linux/WSL/macOS) |
---|---|---|---|
Listar arquivos/pastas | dir |
Get-ChildItem (alias: ls , dir ) |
ls |
Listar com detalhes | dir (já detalhado) |
Get-ChildItem -Force (para ocultos) |
ls -la |
Mudar diretório | cd <pasta> |
Set-Location <pasta> (alias: cd ) |
cd <pasta> |
Ir para diretório home | cd %USERPROFILE% |
Set-Location ~ (alias: cd ~ ) |
cd ~ ou cd |
Ir para diretório raiz (do drive/sistema) | cd \ |
Set-Location C:\ (ou Set-Location / ) |
cd / |
Mostrar diretório atual | cd (sem args) ou echo %CD% |
Get-Location (alias: pwd ) |
pwd |
Criar pasta | mkdir <pasta> ou md <pasta> |
New-Item -Type Directory -Name <pasta> |
mkdir <pasta> |
Criar arquivo vazio | echo. > <arq> ou type NUL > <arq> |
New-Item -Type File <arquivo> |
touch <arquivo> |
Exibir conteúdo de arquivo | type <arquivo> |
Get-Content <arquivo> (alias: cat ) |
cat <arquivo> , less <arquivo> |
Copiar arquivo | copy <origem> <destino> |
Copy-Item <origem> <destino> |
cp <origem> <destino> |
Copiar pasta (recursivamente) | xcopy <origem> <destino> /E /I |
Copy-Item <origem> <destino> -Recurse |
cp -r <origem> <destino> |
Mover/Renomear arquivo/pasta | move <origem> <destino> / ren <antigo> <novo> |
Move-Item <origem> <destino> / Rename-Item <antigo> <novo_nome> |
mv <origem> <destino> |
Deletar arquivo | del <arquivo> |
Remove-Item <arquivo> |
rm <arquivo> |
Deletar pasta (vazia) | rd <pasta> |
Remove-Item <pasta> |
rmdir <pasta> |
Deletar pasta (com conteúdo) | rd /s /q <pasta> |
Remove-Item -Recurse -Force <pasta> |
rm -rf <pasta> (CUIDADO!) |
Limpar tela | cls |
Clear-Host (alias: cls ) |
clear |
Procurar texto em arquivo | findstr "texto" <arquivo> |
Select-String -Pattern "texto" -Path <arquivo> |
grep "texto" <arquivo> |
Obter ajuda para um comando | <comando> /? |
Get-Help <cmdlet> -Full |
man <comando> |
Nota: Aliases no PowerShell (ls
, cd
, cat
, etc.) são para conveniência e podem não ter todas as opções dos comandos originais do Linux ou do CMD.
Este curso adota uma abordagem prática e mão na massa.
A melhor forma de aprender é fazendo! Não tenha receio de “sujar as mãos” no terminal.
Parabéns por chegar até aqui! Este curso é o seu portal de entrada para um mundo de possibilidades que a linha de comando oferece. Mas lembre-se, o aprendizado é uma jornada contínua.
man <comando>
no Linux, <comando> /?
no CMD, ou Get-Help <cmdlet> -Full
no PowerShell. São suas melhores fontes de informação.A curiosidade é sua maior aliada. Quanto mais você praticar e explorar, mais o terminal se tornará uma ferramenta natural e indispensável no seu dia a dia. Veja-o não como uma barreira, mas como uma chave mestra que abre novas portas para o controle, a eficiência e a compreensão profunda da computação.
Estamos animados para embarcar nesta jornada com você! Prepare-se para transformar o terminal em seu aliado mais poderoso. Vamos juntos desbravar o mundo da linha de comando e descobrir tudo o que ele pode fazer por você!