quinta-feira, 21 de março de 2013

Criando alias e funções no Linux

Quem administra vários servidores Linux como eu já deve estar acostumado com a linha de comando. O que os outros chamam de "aquela horrível tela preta", nós chamamos de "poderoso console texto". Mas é bem verdade que, às vezes, os dedos cansam de tanto digitar longos comandos. Para amenizar isso é que existem os alias e as funções.

Um alias é uma pequena modificação nas opções padrão de um comando. Por exemplo, para listar arquivos eu sempre uso "ls -la", para que a listagem seja mais detalhada e os arquivos ocultos também sejam mostrados. Então eu posso criar um alias chamado "ls" para o comando "ls -la".


$ ls
CHANGELOG.txt  config.php  css images index.html  js languages  lib LICENSE.txt  panes  rdp.php  rdpweb  README.txt  screen.php
$ alias ls="ls -la"

$ ls

total 72
drwxr-xr-x 9 ricardo ricardo 4096 Mar 21 08:57 .
drwxr-xr-x 6 ricardo ricardo 4096 Mar 21 10:37 ..
-rw-r--r-- 1 ricardo ricardo 3835 Ago 10  2010 CHANGELOG.txt
-rw-r--r-- 1 ricardo ricardo 2797 Jul 26  2010 config.php
drwxr-xr-x 2 ricardo ricardo 4096 Ago 10  2010 css
drwxr-xr-x 5 ricardo ricardo 4096 Ago 10  2010 images
-rw-r--r-- 1 ricardo ricardo 5697 Jul 24  2010 index.html
drwxr-xr-x 2 ricardo ricardo 4096 Ago 10  2010 js
drwxr-xr-x 2 ricardo ricardo 4096 Ago 10  2010 languages
drwxr-xr-x 2 ricardo ricardo 4096 Ago 10  2010 lib
-rw-r--r-- 1 ricardo ricardo 1089 Jul 24  2010 LICENSE.txt
drwxr-xr-x 2 ricardo ricardo 4096 Ago 10  2010 panes
-rw-r--r-- 1 ricardo ricardo  414 Jul 24  2010 rdp.php
drwxr-xr-x 2 ricardo ricardo 4096 Ago 10  2010 rdpweb
-rw-r--r-- 1 ricardo ricardo  955 Jul 24  2010 README.txt
-rw-r--r-- 1 ricardo ricardo 4963 Jul 24  2010 screen.php
$

Eu também uso um alias para o Remote Desktop sempre abrir com resolução de 1200x800.

$ alias rdesktop='rdesktop -g1200x800'

Para ver os alias já configurados em teu perfil digite:

$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias gravar='ffmpeg -f x11grab -s 1440x900 -r 25 -i :0.0 -sameq out.mpg 2> /dev/null'
alias grep='grep --color=auto'
alias konqueror='konqueror --select ~'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls'
alias rdesktop='rdesktop -g1200x800'

Para apagar o alias "rdesktop" é só digitar:

$ unalias rdesktop

Agora, se você precisa de algo mais elaborado, então uma função será mais útil. Por exemplo, vamos criar uma função que emita um aviso caso o Google demore mais do que 4 milisegundos para responder ao ping.

$ function aviso(){
    x=`ping -c 1 8.8.8.8 | grep icmp | cut -d" " -f7 | cut -d"=" -f2 | cut -d"." -f1`
    if [ $x -gt 4 ]
    then
        echo "Está lento"
    fi
}

Agora, basta digitar, de qualquer lugar do sistema, o comando "aviso" para testar o site.

Mas esses alias e funções se perdem quando o terminal é fechado. Para que isso não ocorra, basta colocar esses comando no arquivo .bashrc localizado no home do usuário.