Linux komanda look
pretražuje datoteku i izlistava sve linije koje započinju zadatom rečju ili frazom. Važno je napomenuti da se njeno ponašanje može razlikovati između različitih Linux distribucija. Ovaj vodič će vam pokazati kako pravilno koristiti ovu komandu.
Razlike u ponašanju komande look na Ubuntu sistemima
Za tako jednostavnu komandu, look
je neočekivano zakomplikovala stvari tokom istraživanja za ovaj članak. Glavni problemi su bili kompatibilnost i dokumentacija.
Članak je testiran na Ubuntu, Fedora i Manjaro distribucijama. Komanda look
je bila prisutna u svakoj od njih, što je odlično. Međutim, ponašanje komande nije bilo identično na svim sistemima. Ubuntu verzija se značajno razlikovala. Iako bi, prema Ubuntu Man stranicama, ponašanje trebalo biti isto.
Na kraju je otkriveno da tradicionalno look
koristi binarnu pretragu, dok Ubuntu verzija primenjuje linearnu pretragu. Online Ubuntu man stranice za Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) i Disco Dingo (19.04) navode da Ubuntu koristi binarnu pretragu, što nije tačno.
Lokalna Ubuntu man stranica jasno navodi da njihova verzija komande look
koristi linearnu pretragu. Postoji opcija komandne linije da se prisili binarna pretraga. Druge distribucije nemaju ovu opciju izbora metode pretrage.
man look
Skrolujući man stranicu, nalazimo odeljak koji opisuje da ova verzija komande look
koristi linearnu pretragu umesto binarne.
Zaključak je da je uvek najbolje prvo konsultovati lokalne man stranice.
Linearna naspram binarne pretrage
Binarna pretraga je brža i efikasnija od linearne, naročito pri radu sa velikim datotekama. Nedostatak binarne pretrage je zahtev da datoteka bude sortirana. Ako ne želite sortirati originalnu datoteku, možete sortirati njenu kopiju, pa koristiti nju sa komandom look
.
Ovo će biti demonstrirano kasnije u članku. Zapamtite da na Fedori, Manjaru i većini ostalih Linux distribucija, treba kreirati sortiranu kopiju datoteke za rad sa look
komandom.
Instaliranje datoteke sa rečima
Komanda look
može pretraživati bilo koju tekstualnu datoteku, ili može koristiti lokalnu datoteku rečnika „words“.
Na Manjaru, datoteku „words“ treba instalirati koristeći sledeću komandu:
sudo pacman -Syu words
Korišćenje komande look
U ovom članku ćemo koristiti tekstualnu datoteku sa pesmom „The Jumblies“ Edvarda Lira.
Pogledajmo sadržaj datoteke ovom komandom:
less the-jumblies.txt
Ovo je prvi deo pesme. Koristimo Ubuntu, tako da datoteka ostaje nesortirana. Na Fedori i Manjaru, radili bismo sa sortiranom kopijom datoteke, što ćemo kasnije pokazati.
Ako pretražimo linije koje počinju rečju „Oni“, saznaćemo šta su Jumblies radili.
look Oni the-jumblies.txt
Komanda look
odgovara ispisivanjem sledećih redova:
Ignorisanje velikih i malih slova
Da biste komanda look
ignorisala razlike između velikih i malih slova, koristite opciju -f
(ignore case). Ponovo koristimo „oni“ kao reč za pretragu, ali sada napisanu malim slovima.
look -f oni the-jumblies.txt
Ovaj put, rezultati uključuju dodatnu liniju.
Linija koja počinje sa „ONI“ nije pronađena u prošlom nizu rezultata jer je pisana velikim slovima i ne odgovara našem terminu „oni“.
Ignorisanje velikih i malih slova omogućava komandi look
da je uključi u rezultate.
Korišćenje komande look sa sortiranom datotekom
Ako vaša Linux distribucija ima verziju komande look
koja sledi tradicionalno ponašanje koristeći binarnu pretragu, morate sortirati datoteku ili raditi sa njenom sortiranom kopijom.
Ponovimo komandu za pretragu „Oni“, ali ovaj put na Manjaru.
Kao što vidite, rezultati nisu vraćeni, iako znamo da u pesmi postoje redovi koji počinju rečju „Oni“.
Hajde da kreiramo sortiranu kopiju datoteke. Ako koristite opcije -f
(ignoriši velika i mala slova) ili -d
(samo alfanumerički karakteri i razmaci) sa look
komandom, morate ih koristiti i prilikom sortiranja datoteke.
Opcija -o
(izlaz) vam omogućava da navedete ime datoteke u koju treba dodati sortirane linije. U ovom primeru, to je „sorted.txt“.
sort -f -d the-jumblies.txt -o sorted.txt
Hajde da pogledamo sorted.txt
datoteku, a zatim koristimo opcije -f
i -d
.
Sada dobijamo rezultate koje smo očekivali.
Uzmite u obzir samo razmake i alfanumeričke znakove
Da bi look
ignorisao sve što nije alfanumerički znak ili razmak, koristite opciju -d
(alphanumeric).
Pogledajmo da li postoje reči koje počinju sa „Oh.“
look -f oh the-jumblies.txt
Komanda look
ne vraća nikakav rezultat.
Pokušajmo ponovo i kažimo komandi look
da ignoriše sve osim alfanumeričkih znakova i razmaka. To znači da će znakovi i simboli, poput interpunkcije, biti ignorisani.
look -f -d oh the-jumblies.txt
Ovaj put dobijamo rezultat. Ranije nismo pronašli ovaj red jer su navodnici i uzvičnik zbunili pretragu.
Određivanje završnog karaktera
Možete odrediti karakter koji će komanda look
koristiti kao završni karakter. Uobičajeno se razmaci i krajevi redova koriste kao završni karakter.
Opcija -t
(terminating character) nam omogućava da navedemo karakter koji želimo da koristimo. U ovom primeru ćemo koristiti apostrof. Moramo ga citirati sa kosom crtom unazad da komanda look
zna da ne otvaramo string.
Takođe citiramo termin za pretragu jer uključuje razmak. Tražimo dve reči.
look -f -t \' "they call" the-jumblies.txt
Rezultati se podudaraju sa terminom za pretragu, koji se završava apostrofom koji smo koristili kao završni karakter.
Korišćenje komande look bez datoteke
Ako ne navedete ime datoteke u komandnoj liniji, look
će koristiti datoteku reči.
Komanda:
daje ove rezultate:
Ovo su sve reči u datoteci koje počinju rečju „circle“.
Pogled unapred
To je sve što treba znati o komandi look
.
Prilično je jednostavna kada znate da postoje razlike u ponašanju između različitih Linux distribucija, i kada utvrdite da li vaša verzija koristi binarnu ili linearnu pretragu.