Alias bash shellis
Sissejuhatus
Linuxi käsureal on võimalik anda lugematu arv käske ja käskude kombinatsioone. Tihtipeale selgub aga, et mõningaid käske käivitatakse alati samade võtmetega või kasutatakse pikki käsukombinatsioone, mida võiks lühendada. Selle jaoks on enamikes shellides olemas käsk alias. Selle abil on võimalik käsule ette anda vaikimisi võtmeid, luua endale sobivaid lühikäske, parandada tihtiesinevaid sisestusvigu ja hoida ära kurbi tagajärgi, mis mõne käsu sisestamisel võib juhtuda. Käsu süntaks ja kasutatavad näited on toodud Ubuntu ja Bash shelli baasil.
Andes käsu
alias
on võimalik näha käivitatud shellis hetkel seadistatud aliaseid. Bashis on juba vaikimisi ka mõned aliased määratud:
root@ubuntu:~# alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
Kasutusel on nii vaikimisi võtmete etteandmine kui uue nimega käskude loomine.
Seadistamine
Aliase lisamiseks tuleb anda käsk:
alias nimi='käsk'
kus nimi on loodav alias ja käsk on aliase poolt asendatav käsk või käskude kombinatsioon. Kasutada võib nii üksikuid käske, suunamisi (|, >), mitut käsku (&&), võtmeid (-i, --preserve-root, jne), käske teiste käskude sees (`` abil), kui ka argumente ($1). [1]
Kui tekib vajadus käivitada käsku ilma aliase poolt tehtud lisanditeta, tuleb käsule kirjutada ette kaldkriips (\ls), panna ümber jutumärgid ("ls") või käivitada täisteekonnaga (/bin/ls). Viimase saab kätte käsuga which [2]
Näiteks värvib bash vaikimisi käsu ls väljundit (kuna on seadistatud vastav alias), kui anda aga käsk \ls on väljund mustvalge.
Eemaldamine
Käsurealt loodavad aliased on kasutatavad samas shellis, kus nad loodi kuni väljalogimiseni. Kui käivitada uus shell või olemasolev sulgeda, siis kaovad ka seadistatud aliased. Teine võimalus alias-te eemaldamiseks on käsk
unalias [-a] nimi
mis võimaldab hetkel käivitatud shellist eemaldada nii ajutised kui püsivad aliased. Võti -a eemaldab kõik aliased, unalias nimi eemaldab konkreetse aliase. Avades uue shelli tekivad püsivad aliased tagasi. Nende muutmisest lähemalt järgmises punktis.
Püsiva aliase tekitamine
Selleks, et soovitud käsu alias oleks kasutatav kohe peale interaktiivset sisselogimist, tuleb ta kirjeldada kasutaja ~/.bash_aliases failis. Süsteemi poolt kaasatulevad aliased on kirjas veel ka ~/.bashrc failis ja lisaks on seal kirjas ka read:
# Alias definitions. # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
... mis ütleb, et kui vastav fail on olemas siis see käivitatakse sessiooniskriptina (punkt ja tühik, mis eelnevad faili suhtelisele otsiteekonnale). Mõistlik on süsteemisätetest kasutajapoolsed täiendused lahus hoida - lihtsam varundada ja ei riku kogemata süsteemisätteid ära. Kui see fail kopeerida ka /etc/skel/ kausta siis kõik esmakordselt sisselogivad kasutajad saavad samad sätted aliaste osas.
Tavakasutajal asub see tema /home/kasutaja/ kaustas, root kasutajal /root/ kaustas. Faili muutmiseks avada see endale käepärasest tekstiredaktoris ja lisada sinna alias käsud sama süntaksiga, mis eelnevalt sai kirjeldatud.
Selleks et .bashrc failis tehtud muudatused ilma välja ja uuesti sisse logimata kasutusele võtta tuleb anda käsk
source ~/.bash_aliases
või
. ~/.bash_aliases
Kui on vaja teha alias kõigile süsteemi kasutajatele, siis peab selle kirjeldama failis /etc/bashrc. Selle rakendumiseks tuleb süsteem taaskäivitada.
Näited
Uute lühikäskude loomine
alias c='clear'
c - tühjendab ekraani
alias h='history'
h - näitab käsuajalugu
alias j='jobs -l'
j - näitab taustal töötavaid töid koos PID-ga
Võtmete lisamine
alias df='df -h'
df näitab kettakasutust inimsõbralikumal kujul.
alias rm='rm -i --preserve-root'
rm küsib üle iga faili kustutamise ja ei lase ära kustutada / kausta. Selle aliasega tuleb olla ettevaatlik! Võõras süsteemis ei pruugi sellist aliast kirjeldatud olla ja vales kohas antud rm * võib süsteemi jaoks fataalselt lõppeda.
Suunamised
alias mnt='mount | column -t'
mnt jaotab käsu mount väljundi tulpadesse.
alias most='du -hsx * 2>/dev/null | sort -rh | head -10'
most väljastab 10 kõige mahukamat kataloogi suuruse järjestuses.
alias ps2='ps -ef | grep -v $$ | grep -i'
ps2 tekst otsib protsessitabelist teksti.
alias mitu='echo Süsteemis on `who | wc -l` kasutajat'
mitu väljastab süsteemi sisseloginud kasutajate arvu eestikeelse lausena.
Näpuvigade parandus
alias pdw='pwd'
alias sl='ls'
alias cd..='cd ..'
Näited tarkvara haldamise lihtsustamiseks
Näide Pingviini Vikist [3]
alias u='apt-get update && apt-get dist-upgrade'
alias k='ldconfig && dpkg --configure -a && apt-get clean'
alias i='apt-get install'
alias o='apt-cache search'
alias n='apt-cache show'
alias e='apt-get remove'
alias ae='apt-get -y autoremove'
alias p='apt-cache policy'
alias f='apt-get install -f'
Seletused APT-i aliastele:
u - uuenda k - korrasta i - install ehk siis tarkvarapakettide paigaldamine o - otsi n - näita e - eemalda ae - automaatne eemaldus pakkidele, mida enam ei vajata p - tarkvarapakkide poliitika f - fikseeri ehk paranda sõltuvused
Kokkuvõte
Nagu eelnevast võib näha, saab alias käsuga muuta oma töö käsureal palju lihtsamaks ja kiiremaks ning vähendada ka eksimisvõimalusi. Samas ei tohi ära unustada, et tehtud seadistused on siiski kasutusel vaid selles konkreetses arvutis. Võõras süsteemis (näiteks kliendi või tuttava juures) hooletult antud rm * käsu tulemus on sootuks erinev sellest, mis oma süsteemis alias käsu abil oli seadistatud (alias rm='rm -i'). Iga faili kustutamise kohta kinnituse küsimise asemel on hetkega tagajärjeks tühi kaust.
Koostas
Tanel Liik AK21 8.12.2012
Kasutatud materjal:
- Bashi kasutamine - Kuutõrvaja: http://kuutorvaja.eenet.ee/wiki/Bashi_kasutamine#alias
- Create and use aliases - Linux Shell Scripting Tutorial - A Beginner's handbook: http://bash.cyberciti.biz/guide/Create_and_use_aliases
- Alias - Pingviini Viki: http://viki.pingviin.org/Alias
- How to use the alias command: http://www.linfo.org/alias.html
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X: http://www.cyberciti.biz/tips/bash-aliases-mac-centos-linux-unix.html