alias — prečice za komande
Ako komandu kucaš deset puta dnevno, nema razloga da je kucaš celu. Alias je sopstveno, kraće ime za komandu — sa svim opcijama koje inače dodaješ.
Uz to, alias objašnjava jednu stvar koja početnike zbunjuje: zašto
ls na tvom sistemu prikazuje boje, a na tuđem serveru ne.
Oblik komande
alias [ime='komanda'] unalias ime
- bez argumenata — ispisuje sve postojeće aliase
- ime — kako ćeš zvati prečicu
- komanda — šta se zapravo izvršava; obavezno u navodnicima ako sadrži razmake
Prvi alias
$ alias ll='ls -lah' $ ll
Od sada ll radi isto što i ls -lah.
Bez razmaka oko znaka jednakosti. Sa razmakom ne radi:
$ alias ll = 'ls -lah' -bash: alias: ll: not found
Šta već imaš
$ alias alias egrep='egrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto'
Distribucija ti je već postavila nekoliko. Tu je i odgovor na pitanje iz
uvoda — ls nije sam po sebi u bojama, nego je alias na
ls --color=auto. Na minimalnoj instalaciji ili u kontejneru tog
aliasa nema, pa ispis izgleda drugačije.
Šta je tačno neka komanda:
$ type ls ls is aliased to `ls --color=auto' $ type ll ll is aliased to `ls -l --color=auto' $ type grep grep is aliased to `grep --color=auto'
Ovo je prva provera kad se komanda ponaša neočekivano.
Alias ne preživi zatvaranje terminala
Ono što napraviš u terminalu važi samo u toj sesiji. Za trajno, upiši u
~/.bashrc:
$ vi ~/.bashrc
alias ll='ls -lah' alias ..='cd ..' alias ...='cd ../..'
Izmena važi od sledeće prijave, ili odmah ako učitaš fajl ponovo:
$ source ~/.bashrc
Isto radi i tačka:
$ . ~/.bashrc
Za sve korisnike na sistemu, alias ide u /etc/profile.d/ —
napravi tamo fajl sa nastavkom .sh:
# vi /etc/profile.d/aliasi.sh
Korisni aliasi
Sigurnosni
alias rm='rm -i' alias cp='cp -i' alias mv='mv -i'
Opcija -i traži potvrdu pre brisanja ili prepisivanja.
Vredi je razmotriti dok učiš — ali pročitaj i upozorenje pri kraju teksta,
jer ova tri aliasa imaju i lošu stranu.
Kretanje
alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias -- -='cd -'
Dvostruka crtica govori bash-u da ono što sledi nije opcija.
Listanje
alias ll='ls -lah' alias lt='ls -lt' alias lS='ls -lSh'
Sistem
alias df='df -h' alias free='free -h' alias ports='ss -tulnp' alias myip='curl -s ifconfig.me'
Uz servise
alias sc='sudo systemctl' alias scs='sudo systemctl status' alias jc='sudo journalctl' alias jctail='sudo journalctl -f'
Uz systemctl i journalctl ovo štedi dosta kucanja.
Docker i Kubernetes
alias dps='docker ps' alias dimg='docker images' alias k='kubectl'
Ako koristiš k kao skraćenicu, dodaj i dopunjavanje
tasterom Tab — objašnjeno u lekciji
kubectl.
Alias sa argumentima ne postoji
Ovo je najčešće razočaranje. Alias ne prima argumente na sredini:
$ alias trazi='find . -name' $ trazi "*.log"
Ovo slučajno radi, jer se argument nalepi na kraj. Ali ovo ne:
$ alias mkcd='mkdir $1 && cd $1'
Kad ti treba argument u sredini, potrebna ti je funkcija:
mkcd() {
mkdir -p "$1" && cd "$1"
}
Funkcije se pišu u isti ~/.bashrc i koriste identično kao
alias. Više o njima u
četvrtom
delu bash serije.
Praktično pravilo: alias kad menjaš samo opcije, funkcija kad ti treba logika.
Uklanjanje i zaobilaženje
$ unalias ll $ unalias -a ukloni sve
Češće ti neće trebati brisanje, nego jednokratno zaobilaženje. Tri načina:
$ \ls obrnuta kosa crta ispred imena $ command ls eksplicitno pravi program $ /usr/bin/ls puna putanja
Ovo koristiš kad je alias postavljen a smeta ti. Recimo, kad je
rm vezan na rm -i, a briseš pedeset fajlova i ne
želiš pedeset pitanja:
$ \rm *.tmp
Dve zamke
Aliasi ne rade u skriptama
Skripta se izvršava u neinteraktivnoj sesiji, koja ne učitava
~/.bashrc. Tvoji aliasi tamo ne postoje.
To nije nedostatak nego zaštita. U skriptama uvek piši pune komande — tako rade svuda, i na tuđem sistemu i pod cron-om.
Aliasi grade lošu naviku
Ovo se retko spominje, a važno je.
Ako godinu dana kucaš ll i sc restart, na
tuđem serveru ćeš zastati — tamo tvojih aliasa nema. Isto važi i za
rm -i: naviknuti se na to da sistem pita, pa se zateći na
sistemu koji ne pita, gore je nego da nikad nisi imao alias.
Zato: aliasi da, ali za štednju kucanja, ne kao zamena za znanje šta se zapravo izvršava. Prava komanda mora da ti bude poznata i bez prečice.
Vežba
- Pogledaj koje aliase ti je distribucija već postavila
- Proveri sa
typešta je zapravolsna tvom sistemu - Napravi alias
lli probaj ga - Zatvori terminal, otvori novi i vidi da alias više ne postoji
- Upiši ga u
~/.bashrci učitaj sasource - Napravi alias na
rm -i, pa ga zaobiđi sa\rm - Napravi funkciju
mkcdi uporedi je sa aliasom
Sledeći korak → Džokeri i navodnici (u pripremi)
Povezano: Rad iz komandne linije · history · echo · Linux osnove
Comments
Post a Comment