Aliases e funções no .bashrc
1. Introdução aos Aliases e Funções
O arquivo .bashrc é o coração da personalização do shell Bash. Nele, dois recursos se destacam para aumentar a produtividade: aliases e funções. Um alias é um atalho simples que substitui um comando longo por uma palavra curta. Por exemplo, em vez de digitar ls --color=auto -laF, você pode criar alias ll='ls --color=auto -laF'. Aliases são ideais para comandos que não exigem lógica condicional ou parâmetros complexos.
Já uma função é um bloco de código reutilizável que pode conter estruturas de controle, parâmetros e variáveis locais. Funções são mais poderosas que aliases porque aceitam argumentos de forma nativa e podem executar múltiplos comandos em sequência. A regra prática é: use alias para atalhos simples e função quando precisar de lógica, parâmetros ou múltiplas operações.
2. Criando e Gerenciando Aliases no .bashrc
A sintaxe básica de um alias é:
alias nome_do_alias='comando com argumentos'
Exemplos práticos para adicionar ao .bashrc:
alias ll='ls -laF --color=auto'
alias gs='git status'
alias ..='cd ..'
alias grep='grep --color=auto --exclude-dir=.git'
Para criar um alias temporário, basta digitá-lo diretamente no terminal:
alias temp='echo "Este alias só existe nesta sessão"'
Esse alias desaparece ao fechar o terminal. Para torná-lo permanente, edite o arquivo ~/.bashrc com seu editor favorito e adicione a linha. Após salvar, recarregue com source ~/.bashrc.
Para remover um alias, use o comando unalias:
unalias ll
Cuidado ao criar aliases com nomes de comandos do sistema (como ls ou grep). Isso pode causar confusão em scripts que dependem do comportamento padrão. Sempre verifique se o nome já existe com type nome_do_comando.
3. Funções no .bashrc: Estrutura e Parâmetros
A sintaxe de uma função no Bash pode ser escrita de duas formas:
# Forma 1 (mais comum)
nome_da_funcao() {
comandos
}
# Forma 2 (com palavra-chave function)
function nome_da_funcao {
comandos
}
Funções aceitam parâmetros posicionais automaticamente:
$1,$2,$3... — primeiro, segundo, terceiro argumento$@— todos os argumentos como lista$#— número de argumentos$0— nome da função (ou do script)
Exemplo básico:
saudacao() {
echo "Olá, $1! Hoje é $(date +%A)."
}
Para usar: saudacao Maria → "Olá, Maria! Hoje é quarta-feira."
O retorno de uma função pode ser feito de duas maneiras:
echo— para retornar texto (que pode ser capturado com$(...))return— para retornar um código numérico (0 = sucesso, 1-255 = erro)
4. Exemplos Práticos de Funções Úteis
Função mkcd — criar diretório e entrar
mkcd() {
if [ -z "$1" ]; then
echo "Erro: informe o nome do diretório"
return 1
fi
mkdir -p "$1" && cd "$1"
}
Função bak — backup rápido de arquivos
bak() {
if [ -z "$1" ]; then
echo "Uso: bak arquivo"
return 1
fi
cp "$1" "${1}.bak" && echo "Backup criado: ${1}.bak"
}
Função extract — extrair qualquer arquivo compactado
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xf "$1" ;;
*.tbz2) tar xjf "$1" ;;
*.tgz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "'$1' não pôde ser extraído" ;;
esac
else
echo "'$1' não é um arquivo válido"
fi
}
5. Boas Práticas ao Editar o .bashrc
Organize seu .bashrc em seções claras:
# ============================================
# VARIÁVEIS DE AMBIENTE
# ============================================
export EDITOR=vim
export PATH="$HOME/bin:$PATH"
# ============================================
# ALIASES
# ============================================
alias ll='ls -laF --color=auto'
alias ..='cd ..'
# ============================================
# FUNÇÕES
# ============================================
mkcd() {
mkdir -p "$1" && cd "$1"
}
Sempre comente cada alias e função explicando sua finalidade. Isso ajuda na manutenção futura.
Para recarregar o .bashrc sem reiniciar o terminal:
source ~/.bashrc
# ou
. ~/.bashrc
6. Aliases e Funções com Subshells e Ambiente
Um alias é executado no shell atual, substituindo o texto antes da execução. Já uma função pode ser executada em um subshell usando parênteses ( ), isolando alterações de diretório ou variáveis:
# Função que não altera o diretório atual
segura_cd() {
(cd "$1" && pwd && ls)
# O cd ocorre apenas dentro do subshell
}
Para exportar uma função para subshells (útil em scripts ou comandos encadeados):
export -f nome_da_funcao
Isso permite que a função seja usada em comandos como find -exec ou dentro de bash -c.
7. Tratamento de Erros em Funções
Funções robustas devem verificar parâmetros obrigatórios:
exige_parametro() {
if [ -z "$1" ]; then
echo "Erro: parâmetro obrigatório ausente" >&2
return 1
fi
echo "Parâmetro recebido: $1"
}
Para aumentar a rigidez dentro de funções:
funcao_segura() {
set -e # Sai se qualquer comando falhar
set -u # Trata variáveis não definidas como erro
local arquivo="$1"
cp "$arquivo" /destino/
echo "Cópia concluída"
}
Mensagens de erro devem ser enviadas para stderr com >&2 e o código de saída apropriado (return 1 ou exit 1).
8. Dicas Avançadas e Manutenção
Aliases não aceitam argumentos de forma nativa. Se você tentar:
alias find_text='grep -r "$1" .' # Isso não funciona como esperado
A solução é usar uma função:
find_text() {
grep -r "$1" .
}
Para carregamento condicional baseado no sistema operacional:
case "$(uname -s)" in
Linux)
alias open='xdg-open'
;;
Darwin)
alias ls='ls -G'
;;
esac
Versionamento do .bashrc com Git é uma excelente prática:
cd ~
git init
git add .bashrc
git commit -m "Versão inicial do .bashrc"
Assim você pode sincronizar configurações entre máquinas e manter histórico de alterações.
Referências
- GNU Bash Manual: Aliases — Documentação oficial sobre aliases, incluindo regras de expansão e escopo.
- GNU Bash Manual: Shell Functions — Documentação oficial sobre funções, parâmetros e retorno.
- Bash Hackers Wiki: Functions — Guia detalhado sobre criação e uso de funções no Bash.
- Linuxize: Bash Alias Tutorial — Tutorial prático com exemplos de aliases úteis e dicas de organização.
- HowtoForge: Useful Bash Functions — Coleção de funções prontas para uso no .bashrc, incluindo tratamento de erros.
- DigitalOcean: How to Create Bash Aliases — Guia completo com exemplos de aliases temporários e permanentes.
- Stack Overflow: Difference between alias and function — Discussão técnica sobre quando usar alias vs. função.