Naredbe za koje (možda) niste znali 7: locate, whereis, whatis, apropos, which

Za ovih pet naredbi smo odlučili napisati jedan članak, jer su pojedinačno prejednostavne i imaju premalo funkcija, a opet su na jedan način povezane. Ovi programi nude nekoliko načina pretrage datoteka, naredbi ili stranica manuala za bilo koju naredbu koja vam je u tom trenutku potrebna.

Ukoliko želite pronaći datoteku ili direktorij (nije bitno sjećate se imena cijele naredbe, dovoljno je znati samo dio naziva te naredbe), možete upotrijebiti naredbu locate:

 

locate

$ locate peri
/usr/share/something/lang/pt_br/help/enrolperiod.html
/usr/share/something/lang/sv/help/enrolperiod.html
/usr/src/kernel/arch/parisc/kernel/superio.c

Naredba locate pronalazi sve datoteke i direktorije koje u svom imenu imaju niz znakova 'peri'. Naredba rabi malu bazu koja se (obično, zanemarit ćemo ovaj put triggere) generira svaki dan putem crona (konkretna skripta je /etc/cron.daily/find). Sama baza se nalazi u direktoriju /var/cache/locate/locatedb, a generira se putem naredbe 'updatedb'.

Iako će biti u većini slučajeva obnova baze jednom dnevno biti  sasvim zadovoljavajuća, mana naredbe locate je nesinhroniziranost sa stvarnim stanjem. Iz tog razloga, bazu možete ručno osvježiti, preko već spomenutih naredbi i skripti:

# /etc/cron.daily/find

ili

# cd /
# updatedb

Osvježavanje  traje neko vrijeme (naravno, ovisi o brzini poslužitelja), pa budite strpljivi. Konfiguraciju možete vidjeti u /etc/updatedb.conf, iako nije vjerojatno da ćete tamo tamo trebati išta mijenjati. Za potpune informacije pogledajte stranice manula za naredbe locate, updatedb i locatedb.

 

whereis

Ukoliko tražite specifično samo naredbu (ili njen izvorni kod) i odgovarajuću stranicu manuala (dakle, neće biti ispisane baš sve datoteke koje odgovaraju upitu), pomoć nudi naredba 'whereis':

$ whereis top
top: /usr/bin/top /usr/share/man/man1/top.1.gz

Naredba ponekad može dati i nepredvidljive rezultate (zbog hardcodiranih vrijednosti unutar programa), ali su i dalje upotrebljivi:

$  whereis apache2
apache2: /usr/sbin/apache2 /etc/apache2 /usr/lib/apache2 /usr/share/apache2
/usr/share/man/man8/apache2.8.gz

Naredba whereis, za razliku od ostalih sličnih naredbi, ne pretražuje pomoću baze, stoga su podaci koje ispisuje aktualni i usklađeni sa trenutnim stanjem paketa na sustavu. Pretragu možete dalje ograničiti putem opcija -b (traži samo binarne, odnsono izvršne datoteke), -s (traži samo datoteke izvornog koda) i -m (traži samo dateoteke stranica manuala). Primjer:

$ whereis -m apache2
apache2: /usr/share/man/man8/apache2.8.gz

 

whatis

Tradicionalno, whatis se mogla pozivati i preko oblika 'man -f'. Za razliku od naredbe sličnog imena whereis, whatis pretražuje samo u zaglavljima stranica manuala. Zaglavlje stranice manuala, kao što vam je poznato, izgleda otprilike ovako:

POSTFIX(1)

NAME
postfix - Postfix control program

SYNOPSIS
postfix [-Dv] [-c config_dir] command
...

Dakle,ukoliko na brzinu želite znati što koja naredba radi, na naredbenu liniju ukucat ćete ovo:

$ whatis postfix
postfix (1)          - Postfix control program

Naredba whatis traži samo cijelu riječ (nema skraćivanje):

$ whatis fail2
fail2: nothing appropriate.

No, uporabom opcije '-r' (od regex, regularni izraz), možemo proširiti popis rezultata:

$  whatis -r fail2
fail2ban-client (1)  - configure and control the server
fail2ban-regex (1)   - test Fail2ban "failregex" option
fail2ban-server (1)  - start the server

 

apropos

Tradicionalno, ova naredba se rabila kao "man -k".

Naredba apropos, za razliku od whatis, pretražuje cijelo zaglavlje stranice manuala, pa će prikazati sve stranice manuala na sustavu koje u zaglavlju spominju traženu riječ. Ta riječ se uopće ne mora pojavljivati u nazivu programa!

$ apropos postfix
access (5)           - format of Postfix access table
aliases (5)          - format of the Postfix alias database
body_checks (5)      - Postfix built-in header/body inspection
...

Na ovaj način možete u jednom potezu pronaći sve relevantne stranice za neki program, bez gledanja u pojedinačne stranice manuala.

Naredbe whatis i apropos, kao i locate, ispisuju rezultate pomoću indeksirane baze, ali to nisu iste baze. U Debianu se baza za whatis i apropos nalazi u datoteci /var/cache/man/index.db.

Ovo znaèi da baza mora biti osvježena kako bi vaše pretraživanje dalo relevantne rezultate. O ovome se brine cron datoteka, ali slično kao i za locate bazu, indeksiranje možete pokrenuti i ručno:

# /etc/cron.daily/man-db

 

which

Zadnja s prethodnim naredbama srodna (po nama), je naredba which, koja ne traži ništa po datotečnom sustavu (jednostavno, pretražuje trenutnu stazu, $PATH), nego ispisuje koja će se naredba izvršiti ukoliko je otkucate na naredbenoj liniji:

$ which zic
/usr/sbin/zic

Naredba je korisna ukoliko imate dvije ili više naredbi istog imena, ili želite provjeriti je li naredba uistinu ona za koju mislite da će se pokrenuti u trenutnoj stazi ($PATH-u). Ovo je korisno kad postoje dvije ili više naredbi istog imena (klasičan primjer je naredba "host").

 

Kategorije: 
Vote: 
0
No votes yet