sexta-feira, 13 de novembro de 2009

Definindo apelidos e funções para comandos no bashrc

O arquivo bashrc determina o comportamento do shell, neste caso o interpretador de comandos bash. Basicamente o arquivo bashrc permite criar atalhos, podendo ser apelidos (alias) ou programas interativos (funções), que são carregados na inicialização do bash. O arquivo bashrc permite criar atalhos para praticamente todos os comandos.

Por exemplo, é muito mais fácil digitar o atalho "l" do que um comando como "ls -laF --color=auto". E uma função é como um roteiro (script) para o shell colocado em um arquivo bashrc. É ideal para casos em que o atalho não será para apenas um simples comando ou necessita de uma lógica em alguma estrutura de programação.

Existem dois arquivos bashrc que o interpretador de comandos bash carrega em cada nova inicialização do shell, o /etc/bashrc é carregado para todos os usuários e o ~/.bashrc é carregado para o usuário que iniciou o shell, ou seja, cada usuário tem o seu arquivo ~/.bashrc.

Tanto para apelidos ou para funções é recomendável testar primeiro os comandos em uma execução direta no prompt antes de incluí-los no arquivo bashrc. Diferentemente de um script para o shell, a interpretação de uma função não gera um novo processo no sistema.

Alguns exemplos de apelidos definidos no arquivo bashrc:

alias l="ls -laF --color=auto"
alias cds="cd /etc/rc.d/init.d && ls"
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias qag="rpm -qa | grep -i"
alias av="avast -a -c -t=A"
alias fd='mount /dev/fd0 /mnt/floppy; cd /mnt/floppy && ls'


Uma função pode ser definida com a estrutura apresentada abaixo:

function nome_da_função()
{
comando 1;
comando 2;
comando 3;
...
}


A palavra "function" é opcional na declaração de uma função mas pode ser considerada uma boa prática. Veja um exemplo bastante interessante:

function extrair()
{
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xvjf $1 ;;
*.tar.gz) tar xvzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xvf $1 ;;
*.tbz2) tar xvjf $1 ;;
*.tgz) tar xvzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "'$1' não pode ser extraído via >extrair<" ;;
esac
else
echo "'$1' não é um arquivo válido"
fi
}


Para ativar uma definição imediatamente após a sua inclusão no arquivo bashrc, sem a necessidade de sair do interpretador de comandos e entrar novamente, basta digitar:

$ source ~/.bashrc


Para saber quais apelidos estão ativos no interpretador bash basta executar o comando alias no prompt. O shell irá imprimir a lista dos apelidos na saída padrão, normalmente na tela do monitor. As funções ativas podem ser vistas com a execução do comando set, sem opções, onde o nome e o valor de cada variável e função do shell serão mostrados na tela.

Nenhum comentário:

Postar um comentário