====== Conteúdo do .bashrc Customizado ======
==== Os códigos de escape ANSI ====
Os códigos de escape ANSI são sequências de caracteres usadas para controlar a formatação, a cor e outras opções de saída em terminais de texto. Esses códigos são amplamente utilizados em interfaces de linha de comando (CLI) para adicionar cores, movimento e outras formas de feedback visual que melhoram a usabilidade e a estética.
**Origem e Uso**
Os códigos de escape ANSI são baseados no padrão ANSI (American National Standards Institute) que foi desenvolvido para padronizar as sequências de controle usadas em terminais de vídeo e impressoras de texto. Embora denominados "ANSI", muitos dos códigos utilizados hoje são tecnicamente parte do padrão ECMA-48, adotado pela primeira vez em 1976.
**Estrutura do Código**
Um código de escape ANSI típico começa com a sequência de escape (ESC), que é um caractere ASCII de escape seguido por **[**. Isso é conhecido como o "CSI" (Control Sequence Introducer) para códigos de escape ANSI. Após o CSI, os códigos podem incluir vários parâmetros numéricos separados por ponto e vírgula, e terminam com uma letra que indica a ação a ser tomada. Por exemplo, em **\033[1;34m**:
* **\033** é o código ASCII para ESC (escape), representado também por **\e** em algumas linguagens.
* **[** indica o início do código de controle.
* **1;34** são os parâmetros que definem o estilo e a cor (neste caso, texto brilhante em azul).
* **m** finaliza o código, indicando que é uma operação de cor/texto.
**Códigos Comuns**
* **Reset**: **0** - Retorna todas as configurações ao padrão.
* **Brilhante/Bold**: **1** - Torna o texto brilhante ou negrito.
* **Dim/Faint**: **2** - Torna o texto menos brilhante.
* **Itálico**: **3** - Aplica itálico ao texto.
* **Sublinhado**: **4** - Aplica sublinhado ao texto.
* **Cores do Texto**: **30** a **37** - Define a cor do texto.
* **Cores de Fundo**: **40** a **47** - Define a cor de fundo.
**Aplicações**
Os códigos de escape ANSI são usados para:
* Melhorar a legibilidade e a organização da saída do terminal, utilizando diferentes cores para diferentes tipos de informação.
* Indicar status, como sucesso (verde), aviso (amarelo), erro (vermelho).
* Personalizar prompts de shell para incluir informações úteis, mantendo uma apresentação clara e visualmente distintiva.
* Animações simples em texto, movendo o cursor ou limpando partes da tela.
**Considerações**
Embora poderosos, o uso excessivo de cores e formatações pode tornar a interface confusa e menos legível, especialmente em ambientes com telas com poucas cores ou dispositivos que não suportam códigos de escape ANSI. Além disso, é importante garantir que scripts e programas que utilizam esses códigos verifiquem se o terminal de destino suporta ANSI, para evitar a saída de caracteres de escape como texto simples.
===== Arquivo .bashrc =====
O arquivo ''.bashrc'' é um script de configuração executado sempre que uma nova instância do shell Bash é iniciada. Este arquivo é crucial para personalizar o ambiente do shell, definindo variáveis de ambiente, aliases, funções e outras configurações que melhoram a eficiência e a personalização do terminal.
**Origem e Função**
O arquivo ''.bashrc'' está localizado no diretório home do usuário (''~/.bashrc'') e é específico para cada usuário no sistema. Esse arquivo é lido automaticamente pelo shell Bash sempre que é iniciado de forma interativa e não-login. Isso inclui a abertura de um novo terminal ou a execução de um shell script que inicia uma nova sessão Bash.
**Principais Usos do ''.bashrc''**
- **Definir Aliases**: Aliases são atalhos para comandos mais longos que são frequentemente usados. Por exemplo, você pode definir ''alias ll='ls -lah''' para expandir o comando ''ll'' para ''ls -lah'', tornando-o mais rápido e mais fácil de digitar.
- **Configurações de Prompt**: O ''.bashrc'' é frequentemente usado para personalizar a aparência do prompt de comando. Utilizando variáveis e códigos de escape ANSI, os usuários podem incluir cores, informações de git, e muito mais no seu prompt.
- **Variáveis de Ambiente**: Variáveis como **PATH**, **EDITOR**, e **LANG** podem ser definidas ou modificadas no `.bashrc` para controlar o comportamento de programas no sistema.
- **Funções Personalizadas**: Funções definidas no ''.bashrc'' permitem aos usuários criar comandos complexos que podem ser reutilizados com facilidade, simplificando processos repetitivos.
- **Configurações de Comportamento do Bash**: Opções como ''shopt'' e ''set'' podem ser usadas para alterar o comportamento do Bash, como a maneira como ele lida com coringas, histórico de comandos, e conclusão de tabulação.
**Considerações de Uso**
* **Performance**: É importante não sobrecarregar o ''.bashrc'' com operações pesadas ou que demandem muitos recursos, pois isso pode atrasar o tempo de inicialização de cada shell.
* **Compatibilidade**: Embora as configurações no ''.bashrc'' sejam muito poderosas, elas devem ser usadas com cautela para não interferir no funcionamento de scripts Bash que dependem de um ambiente específico.
* **Segurança**: Cuidado ao incluir scripts ou comandos de fontes externas. Configurações inseguras ou maliciosas no ''.bashrc'' podem comprometer a segurança do usuário.
**Dicas Práticas**
* **Organização**: Mantenha o arquivo ''.bashrc'' bem organizado e comente as seções para facilitar a manutenção e o entendimento das configurações.
* **Testar Mudanças**: Sempre teste novas configurações em uma sessão separada para evitar erros que possam impedir o login ou a utilização do terminal.
* **Backup**: Faça backups regulares do seu ''.bashrc'', especialmente antes de fazer alterações significativas.
Em resumo, o arquivo ''.bashrc'' é uma ferramenta essencial para qualquer usuário do Bash, oferecendo amplas possibilidades para a personalização e otimização do ambiente do terminal.
# vim ~/.bashrc
# Melhorar a funcionalidade básica do bash
export HISTSIZE=5000 # Aumentar o tamanho do histórico de comandos
export HISTFILESIZE=10000 # Aumentar o tamanho do arquivo de histórico
shopt -s histappend # Anexar ao histórico, não sobrescrever
export HISTCONTROL=ignoredups:erasedups # Ignorar duplicatas, apagar duplicatas antigas
export HISTTIMEFORMAT='%d-%m-%Y %H:%M- ' # Formatar data e hora no histórico de comandos
# Opções de LS e suporte a cores
export LS_OPTIONS='--color=auto'
eval "$(dircolors)"
alias ls='ls $LS_OPTIONS'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
# Comandos interativos para evitar operações indesejadas
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Aliases e configurações para edição de arquivos
alias vi='vim'
alias editor='vi'
export VISUAL='vim'
export EDITOR="$VISUAL"
# Atalhos para navegação e listagem de diretórios
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ll='ls -lahF'
alias la='ls -A'
alias l='ls -CF'
# Configurações de rede e monitoramento
alias ping='grc ping -c3'
alias ports='netstat -tulanp'
alias ipinfo='curl http://ipinfo.io/ip'
# Funções úteis para administração do sistema
srestart() {
sudo systemctl restart "$1"
sudo systemctl status "$1"
}
openfiles() {
lsof -i | grep "$1"
}
diskuse() {
df -h | grep "$1" || df -h
}
pingserver() {
ping -c 5 "$1"
}
sshc() {
ssh -i ~/.ssh/mykey.pem "$@"
}
# Comandos de atualização e limpeza do sistema
alias sysup='sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoclean && sudo apt-get autoremove'
# Monitoramento de recursos e rastreamento de logs com coloração
alias cpu='top -o %CPU'
alias mem='top -o %MEM'
alias logs='journalctl -f'
alias syslog='tail -f /var/log/syslog'
alias tail='grc tail'
alias ps='grc ps'
# Personalizações do prompt
# Checa se está em um ambiente chroot
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[01;34m\]@\[\033[01;33m\]\h\[\033[01;34m\][\[\033[00m\]\[\033[01;37m\]\w\[\033[01;34m\]]\[\033[01;31m\]\$\[\033[00m\] '
# Mudar para projetos específicos rapidamente
proj() {
cd ~/Projects/"$1"
}
**Explicações das Adições**
* **Suporte a Cores**: Melhorias para o comando `ls` e ferramentas como `grep`, `egrep`, e `fgrep` com opções de cores automáticas para facilitar a leitura e o destaque de informações.
* **Aliases de Comandos Interativos**: Aliases para `rm`, `cp`, e `mv` com o flag `-i` para promover a confirmação antes de realizar operações potencialmente destrutivas.
* **Edição de Arquivos**: Configuração do `vim` como o editor padrão para o terminal.
* **Ping e Monitoramento com grc**: Uso de `grc` (Generic Colouriser) para adicionar cor e facilitar a leitura de comandos comuns de monitoramento como `ping`, `tail`, e `ps`.
* **Histórico de Comandos**: Aumenta os limites de armazenamento do histórico de comandos e melhora o gerenciamento de entradas duplicadas.
* **Atalhos de Navegação**: Fornece aliases rápidos para navegar entre diretórios com menos digitação.
* **Aliases de Listagem**: Melhora a visibilidade e detalhes ao listar arquivos e diretórios.
* **Gerenciamento de Redes**: Inclui comandos para ver portas abertas e a própria IP pública, útil para diagnósticos rápidos de rede.
* **Funções de Administração de Sistema**: Conjunto de funções para reiniciar serviços, verificar uso de disco, e outras tarefas administrativas comuns.
* **Atualizações e Limpezas do Sistema**: Automatiza a atualização e limpeza de pacotes para manter o sistema atualizado e limpo.
* **Monitoramento de Recursos**: Aliases para monitorar o uso de CPU e memória facilmente.
* **Facilidades para Logs**: Aliases para acompanhar logs de sistema em tempo real.
* **Prompt Customizado**: Personaliza o prompt do terminal para mostrar informações relevantes em cores.
Explicação da Personalização do prompt
1. **Checagem de Chroot**:
- O prompt inclui uma checagem para **debian_chroot**, que é utilizado principalmente em sistemas Debian para indicar que o shell está operando dentro de um ambiente chroot. Esta checagem é feita para exibir essa informação no prompt, se aplicável.
- O script verifica se a variável `debian_chroot` está vazia e se o arquivo **/etc/debian_chroot** existe e é legível. Se verdadeiro, ele lê o conteúdo desse arquivo para a variável `debian_chroot`.
2. **Cores e Formato do Prompt**:
- **\[\033[01;31m\]** e similares são códigos de escape ANSI para colorir o texto. Cada sequência de **\[\033[X;Ym\]** define uma cor ou estilo diferente onde **X** e **Y** são códigos que determinam a cor e o estilo do texto.
- **${debian_chroot:+($debian_chroot)}**: Exibe o conteúdo de **debian_chroot** se ele não estiver vazio.
- **\u**: Mostra o nome de usuário do usuário atual.
- **\h**: Exibe o nome do host até o primeiro ponto.
- **\w**: Mostra o diretório de trabalho atual.
- **\[\033[00m\]**: Reseta a cor para o padrão do terminal, garantindo que a cor não afete outros elementos na tela que não fazem parte do prompt.
**Uso Universal**
* Este prompt foi modificado para verificar se a variável **debian_chroot** é usada, que é específica do Debian, mas ao fazer isso de forma condicional, ele não interferirá no funcionamento em outras distribuições onde essa variável não é definida.
* Ele mantém a funcionalidade visual rica e informativa do prompt original do Debian, tornando-o prático e esteticamente agradável em qualquer distribuição Linux.
==== Personalizando o prompt do terminal com diferentes esquemas de cores. ====
**Versão Azul e Verde**
export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;34m\]\u\[\033[01;32m\]@\[\033[01;36m\]\h\[\033[01;34m\][\[\033[00m\]\[\033[01;37m\]\w\[\033[01;34m\]]\[\033[01;32m\]\$\[\033[00m\] '
* **Usuário**: Azul claro
* **Host**: Verde claro
* **Caminho**: Branco
* **Símbolo do terminal** (`$`): Verde claro
**Versão Vermelho e Amarelo**
export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;35m\]\h\[\033[01;31m\][\[\033[00m\]\[\033[01;33m\]\w\[\033[01;31m\]]\[\033[01;35m\]\$\[\033[00m\] '
* **Usuário**: Vermelho
* **Host**: Magenta
* **Caminho**: Amarelo
* **Símbolo do terminal** (`$`): Magenta
**Versão Ciano e Branco**
export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;36m\]\u\[\033[01;37m\]@\[\033[01;34m\]\h\[\033[01;36m\][\[\033[00m\]\[\033[01;37m\]\w\[\033[01;36m\]]\[\033[01;34m\]\$\[\033[00m\] '
* **Usuário**: Ciano
* **Host**: Azul
* **Caminho**: Branco
* **Símbolo do terminal** (`$`): Azul
**Explicação das Cores**
As cores no prompt são configuradas usando códigos de escape ANSI:
* **\[\033[01;34m\]**: Azul claro
* **\[\033[01;32m\]**: Verde claro
* **\[\033[01;36m\]**: Ciano
* **\[\033[01;31m\]**: Vermelho
* **\[\033[01;33m\]**: Amarelo
* **\[\033[01;35m\]**: Magenta
* **\[\033[01;37m\]**: Branco
**Como Alterar as Cores**
Para criar suas próprias versões coloridas, basta substituir os códigos de cores nos lugares adequados. Os códigos seguem o padrão **\[\033[01;XXm\]**, onde **XX** é o código da cor desejada. Aqui estão alguns códigos comuns de cores:
* **30**: Preto
* **31**: Vermelho
* **32**: Verde
* **33**: Amarelo
* **34**: Azul
* **35**: Magenta
* **36**: Ciano
* **37**: Branco