Table of Contents
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 comandollparals -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
.bashrcpermitem aos usuários criar comandos complexos que podem ser reutilizados com facilidade, simplificando processos repetitivos. - Configurações de Comportamento do Bash: Opções como
shoptesetpodem 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
.bashrccom 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
.bashrcsejam 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
.bashrcpodem comprometer a segurança do usuário.
Dicas Práticas
- Organização: Mantenha o arquivo
.bashrcbem 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.
- .bashrc
# 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
