====== 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