DEV Community

Isaias Velasquez
Isaias Velasquez

Posted on

How to criar aliases e funcoes no bash que viram costume

Aliases e funcoes no bash transformam comandos longos em atalhos de uma palavra. Depois que voce comeca a usar, nao volta mais.

Para criar um alias simples, adicione no ~/.bashrc ou ~/.bash_aliases:

alias ll='ls -la --color=auto'
alias gs='git status'
alias gc='git commit -m'
alias gp='git push'
alias dc='docker compose'
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"'
Enter fullscreen mode Exit fullscreen mode

Recarregue com:

source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Aliases aceitam parametros no final. Para parametros no meio, use funcoes:

gmkdir() {
    mkdir -p "$1" && cd "$1"
}
Enter fullscreen mode Exit fullscreen mode

Uso: gmkdir novo-projeto cria a pasta e ja entra nela.

Funcoes de busca frequente:

findtext() {
    grep -rn "$1" --include="*.py" --include="*.java" "$2" .
}

findfile() {
    find . -name "*$1*" 2>/dev/null
}
Enter fullscreen mode Exit fullscreen mode

Uso: findtext "TODO" src/ ou findfile "Dockerfile".

Funcao para navegar rapido no Git:

gcob() {
    git checkout -b "$1" 2>/dev/null || git checkout "$1"
}
Enter fullscreen mode Exit fullscreen mode

Uso: gcob main faz checkout para main. gcob feature/x cria e vai para o branch novo.

Para navegar entre projetos:

proj() {
    cd ~/projects/"$1" 2>/dev/null || echo "projeto nao encontrado"
}

compro() {
    compgen -W "$(ls ~/projects)" -- "$1"
}
complete -F compro proj
Enter fullscreen mode Exit fullscreen mode

Agora proj meu-app ja leva para ~/projects/meu-app. O autocomplete via complete -F mostra a lista de projetos ao apertar Tab.

Funcao para backup rapido:

backup() {
    cp "$1"{,.bak}
}
Enter fullscreen mode Exit fullscreen mode

Uso: backup config.yaml cria config.yaml.bak.

Mini calculadora no terminal:

calc() {
    echo "$*" | bc -l
}
Enter fullscreen mode Exit fullscreen mode

Uso: calc "42 * 3.14 + 10".

Para extrair qualquer tipo de arquivo sem lembrar o comando:

extract() {
    case "$1" in
        *.tar.gz)  tar xzf "$1" ;;
        *.tar.bz2) tar xjf "$1" ;;
        *.zip)     unzip "$1" ;;
        *.rar)     unrar x "$1" ;;
        *.7z)      7z x "$1" ;;
        *)         echo "formato nao reconhecido" ;;
    esac
}
Enter fullscreen mode Exit fullscreen mode

Coloque tudo em um arquivo separado como ~/.bash_aliases e mande source no ~/.bashrc:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
Enter fullscreen mode Exit fullscreen mode

Assim voce mantem os aliases organizados sem poluir o ~/.bashrc.

That's all for now.
Thanks for reading!

Top comments (0)