Semana 7: Apelidos e funções úteis

Importante! Este material foi elaborado para ser lido em terminais e acompanhado (e praticado) em dispositivos de desktop!

Perguntas-chave

Por que escrever apelidos e funções para o Bash?

Agilizar a execução de comandos longos de uso frequente.

Exemplo 1: Informações básicas da atualização do Debian

# Atualização do cachê de pacotes...
alias up='sudo apt update && apt list --upgradable | less'

Exemplo 2: Informações mais detalhadas da atualização do Debian

# Informações da atualização completa do sistema...
upinfo() {
    local u n r h
    echo 'Carregando atualizações...'
    sudo apt update &> /dev/null
    read u n r h <<< $(apt full-upgrade --dry-run 2> /dev/null | grep ^[0-9] | tr -cd '0-9 ')
    echo "Atualizações     : $u"
    echo "Pacotes novos    : $n"
    echo "Pacotes removidos: $r"
    echo "Pacotes mantidos : $h"
}

Documentar a sintaxe de comandos menos utilizados ou mais complexos.

Exemplo 3: Criação de arquivos tar.gz

# Arquivamento e compressão de arquivos...
# https://explainshell.com/explain?cmd=tar+-zcvf 
targz () {
    [[ $1 ]] || { echo 'Uso: targz DIRETÓRIO' >&2; exit 1; }
    tar -zcvf $1.tar.gz $1
}

O utilitário tar empacota vários arquivos em um só, mas, com a opção -z, o pacote é filtrado com o gzip para ser comprimido.

Exemplo 4: Extração de arquivos tar.gz

# Extração de tarballs...
# https://explainshell.com/explain?cmd=tar+-xvsf
alias untar='tar -xvsf'

As customizações atrapalham o aprendizado?

Onde criar apelidos e funções?

Teste para carregamento de arquivos externos ao ‘.bashrc’

[[ -f $HOME/.bash_aliases ]]   && . $HOME/.bash_aliases
[[ -f $HOME/.bash_functions ]] && . $HOME/.bash_functions
[[ -f $HOME/.bash_envirom ]]   && . $HOME/.bash_envirom
[[ -f $HOME/.bash_prompt ]]    && . $HOME/.bash_prompt

Apelido, função ou script?

A decisão é muito pessoal, mas podemos observar alguns critérios…

Apelidos

Funções

Scripts

Importante! Apelidos e funções (além das variáveis) são carregados no ambiente de dados da sessão do shell e, portanto, ocupam memória.