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:

Códigos Comuns

Aplicações

Os códigos de escape ANSI são usados para:

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

  1. 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.
  2. 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.
  3. 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.
  4. Funções Personalizadas: Funções definidas no .bashrc permitem aos usuários criar comandos complexos que podem ser reutilizados com facilidade, simplificando processos repetitivos.
  5. 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

Dicas Práticas

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

Explicação da Personalização do prompt

1. Checagem de Chroot:

  1. 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.
  2. 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:

  1. \[\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.
  2. ${debian_chroot:+($debian_chroot)}: Exibe o conteúdo de debian_chroot se ele não estiver vazio.
  3. \u: Mostra o nome de usuário do usuário atual.
  4. \h: Exibe o nome do host até o primeiro ponto.
  5. \w: Mostra o diretório de trabalho atual.
  6. \[\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

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\] '

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\] '

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\] '

Explicação das Cores As cores no prompt são configuradas usando códigos de escape ANSI:

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: