Linux: Mini Projeto Fase 1

Este é o projeto final da Fase 1. Você vai aplicar tudo das primeiras 5 aulas — operações de arquivo, navegação de diretórios, atalhos do terminal — para construir um ambiente de desenvolvimento Linux pessoal, utilizável e bem organizado, do zero.

📋 Pré-requisitos: Você deve primeiro concluir

1. O Que Você Vai Aprender


2. A História do "Ambiente Bagunçado" do Alex

(1) O Problema: Arquivos Espalhados, Encontrar Coisas É Como Caça ao Tesouro

Alex vinha usando Linux há três meses, mas cada sessão era mais dolorosa que a anterior:

(2) A Solução de Padronização

Alex decidiu investir 10 minutos para organizar seu ambiente de desenvolvimento usando as habilidades da Fase 1: diretórios padrão + aliases práticos + instalação de runtimes. Depois disso, seus comandos de terminal foram de 10 toques para 2.

(3) O Benefício: Ordem Traz Eficiência

Um ambiente de desenvolvimento padronizado significa que Alex não precisa mais "pensar" onde os arquivos estão — estruturas de diretório fixas, aliases rápidos e ambientes de linguagens prontos para uso economizam pelo menos 30 minutos por dia.


3. Pontos-Chave

(1) Estrutura Padrão de Diretórios de Projeto

Um bom ambiente de desenvolvimento começa pela estrutura de diretórios. Veja uma sugestão de layout para desenvolvedores:

TEXT

~/projects/          # Todos os projetos
├── web/             # Projetos web
│   ├── frontend/
│   └── backend/
├── scripts/         # Scripts de Shell
├── learning/        # Experimentos de aprendizado
├── notes/           # Anotações e documentação
└── tmp/             # Arquivos temporários (podem ser limpos a qualquer momento)

(2) PS1 — Personalizando o Prompt do Shell

A variável de ambiente PS1 (Prompt String 1) controla a aparência do prompt do terminal.

BASH
# Formato padrão
# user@host:diretorio_atual$

# Personalizações comuns
export PS1='\u@\h:\w\$ '           # user@host:/caminho/para/dir$
export PS1='\[\033[01;32m\]\u\[\033[00m\]:\w\$ '     # Com cor
export PS1='\n\[\033[1;34m\]\w\[\033[0m\]\n\$ '       # Exibição em duas linhas

ℹ️ Nota: Nas sequências de escape do PS1, \u é o nome do usuário, \h é o hostname, \w é o caminho completo, e \W mostra apenas o nome do diretório atual. Um prompt de duas linhas (adicionando \n ao PS1) não comprime o espaço de entrada quando os caminhos são longos — altamente recomendado.

Sequências de escape comuns:

Escape Significado
\u Nome do usuário atual
\h Hostname (formato curto)
\w Diretório de trabalho atual (caminho completo)
\W Nome do diretório atual (apenas o último componente)
\d Data
\t Hora (formato 24 horas)
\$ # (root) ou $ (usuário comum)
\n Nova linha

(3) alias — Dê um Apelido aos Seus Comandos

BASH
# Sintaxe básica
alias shortname='long-command'

# Aliases comuns
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'
alias ..='cd ..'
alias ...='cd ../..'
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias cls='clear'
💡 Dica: O maior valor dos aliases é encurtar comandos longos frequentes para duas ou três letras — como ll em vez de ls -la, ou .. em vez de cd ... Comece com os 3 a 5 aliases mais usados, em vez de configurar dezenas de uma vez.

(4) Arquivo de Configuração .bashrc

~/.bashrc é o arquivo de configuração carregado quando o bash inicia. Toda vez que você abre uma nova janela de terminal, o bash executa todos os comandos em .bashrc.

BASH
# Editar o .bashrc
nano ~/.bashrc

# Aplicar alterações imediatamente (sem fechar e abrir o terminal)
source ~/.bashrc

(5) ▶ Exemplo: Criar Estrutura Padrão de Diretórios

BASH
# Vá para o diretório home
cd ~

# Crie e verifique os diretórios padrão
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}

# Veja o resultado
ls -la ~/projects

Saída:

TEXT
total 28
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 .
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 ..
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 learning
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 notes
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 scripts
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 tmp
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 web

(6) ▶ Exemplo: Personalizar o Prompt PS1 (Temporário)

BASH
# Teste diferentes prompts no terminal atual
export PS1='\u:\w\$ '
# Resultado: alice:/home/alice$

export PS1='\n\[\033[1;32m\]\u@\h\[\033[0m\]\n\w\$ '
# Resultado: (verde) username@hostname
#         /caminho/atual$

Saída:

TEXT
alice:/home/alice$

alice@ubuntu
/home/alice$

(7) ▶ Exemplo: Adicionar Aliases (Permanentes)

BASH
# Editar o .bashrc
echo '# Meus aliases personalizados' >> ~/.bashrc
echo "alias ll='ls -la'" >> ~/.bashrc
echo "alias ..='cd ..'" >> ~/.bashrc
echo "alias cls='clear'" >> ~/.bashrc
echo "alias myip='curl -s ifconfig.me'" >> ~/.bashrc

# Aplicar as alterações
source ~/.bashrc

# Testar
ll
myip

Saída:

TEXT
total 48
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 .
drwxr-xr-x  1 alice alice 4096 Jul  8 10:23 ..
-rw-r--r--  1 alice alice 3771 Jul  8 10:23 .bashrc
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 projects
203.0.113.42

(8) ▶ Exemplo: Instalar Python e Node.js

BASH
# Instalar Python3 e pip
sudo apt update
sudo apt install -y python3 python3-pip

# Verificar
python3 --version
# Saída: Python 3.10.12

# Instalar Node.js (do repositório oficial NodeSource)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# Verificar
node --version
# Saída: v20.12.0
npm --version

Saída:

TEXT
Python 3.10.12
v20.12.0
10.5.0

(9) ▶ Exemplo: Verificar Se o Ambiente Está Pronto

BASH

echo "=== Sistema Operacional ===" && lsb_release -d
echo "=== Estrutura do Diretório Home ===" && ls -la ~/projects/
echo "=== Shell ===" && echo $SHELL
echo "=== Python ===" && python3 --version
echo "=== Node.js ===" && node --version
echo "=== Aliases ===" && alias | head -5
echo "=== PS1 ===" && echo $PS1

Saída:

TEXT
=== Sistema Operacional ===
Description:    Ubuntu 22.04.3 LTS
=== Estrutura do Diretório Home ===
total 28
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 learning
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 notes
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 scripts
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 tmp
drwxr-xr-x  2 alice alice 4096 Jul  8 10:23 web
=== Shell ===
/bin/bash
=== Python ===
Python 3.10.12
=== Node.js ===
v20.12.0
=== Aliases ===
alias cls='clear'
alias la='ls -A'
alias ll='ls -la'
=== PS1 ===
\[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$

(10) ▶ Exemplo Abrangente: Script Completo de Configuração do Ambiente de Desenvolvimento

Salve este script como ~/setup-dev.sh e execute-o uma vez para completar toda a configuração:

BASH
#!/bin/bash

set -e  # Sair imediatamente em caso de erro

echo "Configurando o ambiente de desenvolvimento Linux..."

# 1. Criar estrutura de diretórios
mkdir -p ~/projects/{web,scripts,learning,notes,tmp}
echo "✅ Estrutura de diretórios criada"

# 2. Configurar aliases e PS1 no .bashrc
cat >> ~/.bashrc << 'EOF'

# ---- Início da configuração personalizada ----

# Aliases
alias ll='ls -la'
alias la='ls -A'
alias ..='cd ..'
alias cls='clear'
alias myip='curl -s ifconfig.me'

# Prompt PS1
export PS1='\[\033[1;32m\]\u\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ '

# ---- Fim da configuração personalizada ----
EOF
echo "✅ .bashrc configurado"

# 3. Instalar ferramentas de desenvolvimento
sudo apt update
sudo apt install -y build-essential curl wget git vim htop
echo "✅ Ferramentas de desenvolvimento instaladas"

# 4. Verificar
source ~/.bashrc
echo "=== Verificação do Ambiente ==="
echo "Python: $(python3 --version 2>/dev/null || echo 'não instalado')"
echo "Node.js: $(node --version 2>/dev/null || echo 'não instalado')"
echo "Git: $(git --version 2>/dev/null || echo 'não instalado')"

echo "✅ Tudo pronto! Execute source ~/.bashrc ou reabra seu terminal"
BASH
# Executar o script
chmod +x ~/setup-dev.sh
./setup-dev.sh

❓ Perguntas Frequentes

P: Qual é a diferença entre .bashrc e .bash_profile? R: \1

P: Aliases sobrevivem a uma reinicialização? R: Apenas na sessão atual do terminal (temporário). Para torná-los permanentes, é preciso escrever os comandos alias em ~/.bashrc.

P: Como fazer aliases funcionarem para todos os usuários? R: Escreva-os na configuração global /etc/bash.bashrc ou em /etc/profile.d/custom.sh (requer privilégios de root).

P: O prompt PS1 pode mostrar a branch do Git? R: Sim. Use a função __git_ps1 (requer bash-completion) ou adicione $(git branch 2>/dev/null | grep '*' | sed 's/* //') ao seu PS1.

P: Como me recupero se eu quebrar meu ambiente? R: Se o .bashrc estiver mal configurado, inicie um bash limpo com bash --noprofile --norc e depois edite e corrija. Ou faça um backup preventivo com cp ~/.bashrc ~/.bashrc.backup.


📖 Resumo


📝 Exercícios

  1. Básico (Dificuldade ⭐): Crie sua estrutura pessoal de diretórios de desenvolvimento (pelo menos projects/scripts/learning) e configure 3 aliases úteis (por exemplo, ll, .., cls) no .bashrc
  2. Intermediário (Dificuldade ⭐⭐): Personalize o PS1 para mostrar nome do usuário, diretório atual e branch do Git, e instale um runtime de linguagem (Python ou Node.js)
  3. Avançado (Dificuldade ⭐⭐⭐): Escreva um script ~/projects/scripts/info.sh que exiba versão do sistema, kernel, disco e memória, com tratamento de erros set -e e saída formatada
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%