Jak korzystać z polecenia look w systemie Linux

Photo of author

By maciekx

Polecenie Linux look przegląda plik i wyświetla wszystkie wiersze, które zaczynają się od określonego słowa lub frazy. Należy jednak pamiętać, że jego działanie może różnić się w zależności od dystrybucji Linuksa. W tym samouczku dowiesz się, jak skutecznie korzystać z tego polecenia.

Wygląd polecenia w Ubuntu

Chociaż look jest prostym i przydatnym poleceniem, zauważyłem różnice w jego działaniu w różnych dystrybucjach. W moich testach z użyciem Ubuntu, Fedory i Manjaro okazało się, że look jest dołączony do każdej z tych dystrybucji, co jest pozytywną informacją. Niestety, zachowanie polecenia różni się w tych systemach. Wersja Ubuntu posiada zupełnie inne działanie. Zgodnie z dokumentacją Ubuntu, zachowanie powinno być identyczne.

Ostatecznie odkryłem, że tradycyjnie look korzysta z wyszukiwania binarnego, podczas gdy wersja Ubuntu wykorzystuje wyszukiwanie liniowe. Dokumentacja online dla Ubuntu Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) i Disco Dingo (19.04) twierdzi, że wersja Ubuntu używa wyszukiwania binarnego, co nie jest zgodne z prawdą.

Sprawdzając lokalną stronę podręcznika Ubuntu, można zauważyć, że ich wersja look korzysta z wyszukiwania liniowego. Istnieje jednak opcja wiersza poleceń, która pozwala wymusić użycie wyszukiwania binarnego, co nie jest dostępne w innych dystrybucjach.

man look

Przewijając stronę podręcznika, można znaleźć sekcję opisującą działanie tej wersji look przy użyciu wyszukiwania liniowego zamiast binarnego.

Morał z tej historii to, aby zawsze sprawdzać lokalne strony podręcznika systemowego.

Wyszukiwanie liniowe a wyszukiwanie binarne

Metoda wyszukiwania binarnego jest znacznie szybsza i bardziej efektywna w przypadku dużych plików. Wadą wyszukiwania binarnego jest to, że plik musi być posortowany. Jeśli nie chcesz sortować oryginalnego pliku, możesz utworzyć jego posortowaną kopię i użyć jej z poleceniem look.

W dalszej części artykułu przedstawimy, jak to zrobić. Warto jednak wiedzieć, że w Fedorze, Manjaro i prawdopodobnie w większości innych dystrybucji Linuksa, konieczne będzie utworzenie posortowanej kopii pliku, z którym chcesz pracować.

Instalowanie pliku „words”

Polecenie look może pracować z dowolnym wybranym plikiem tekstowym lub z lokalnym plikiem słownika „words”.

W systemie Manjaro konieczne jest zainstalowanie pliku „words”. Możesz to zrobić za pomocą następującego polecenia:

sudo pacman -Syu words

Używanie polecenia look

W tym artykule będziemy pracować z plikiem tekstowym Edward Lear i jego wierszem „Jumblies”.

Możesz sprawdzić zawartość pliku za pomocą polecenia:

less the-jumblies.txt

Poniżej znajduje się pierwsza część wiersza. Zauważ, że w tym przypadku korzystamy z Ubuntu, więc plik pozostaje nieposortowany. W przypadku Fedory i Manjaro pracowalibyśmy z posortowaną kopią pliku, co omówimy w dalszej części artykułu.

Aby znaleźć wiersze zaczynające się od słowa „Oni”, użyjemy polecenia:

look They the-jumblies.txt

Polecenie look odpowiada, wyświetlając odpowiednie linie:

Ignorowanie wielkości liter

Aby polecenie look ignorowało różnice między dużymi i małymi literami, użyj opcji -f (ignoruj wielkość liter). Tym razem użyjemy „oni” jako słowa wyszukiwania, ale zapiszemy je małymi literami:

look -f they the-jumblies.txt

Tym razem wyniki będą zawierały dodatkową linię.

W ostatnim zestawie wyników pominięto wiersz zaczynający się od „ONI”, ponieważ jest on zapisany wielkimi literami i nie pasuje do wyszukiwanego hasła „Oni”. Ignorowanie wielkości liter pozwala na uwzględnienie jej w wynikach.

Używanie look z posortowanym plikiem

Jeśli Twoja dystrybucja Linuksa ma wersję look działającą zgodnie z tradycyjnym zachowaniem wyszukiwania binarnego, musisz albo posortować plik, albo pracować z jego posortowaną kopią.

Ponownie użyjemy polecenia, aby wyszukać „Oni”, tym razem w systemie Manjaro:

Jak widać, żadne wyniki nie zostały zwrócone, ale wiemy, że w wierszu znajdują się wersety zaczynające się od słowa „Oni”.

Utwórzmy posortowaną kopię pliku. Jeśli planujesz używać opcji -f (ignoruj wielkość liter) lub -d (tylko znaki alfanumeryczne i spacje) z look, musisz je zastosować podczas sortowania pliku.

Opcja -o (wyjście) pozwala określić nazwę pliku, do którego mają zostać dodane posortowane wiersze. W tym przykładzie będzie to „sort.txt”.

sort -f -d the-jumblies.txt -o sorted.txt

Sprawdźmy zawartość pliku sort.txt, a następnie użyjmy opcji -f i -d.

Teraz otrzymujemy oczekiwane wyniki.

Rozważ tylko spacje i znaki alfanumeryczne

Aby look ignorował wszystko, co nie jest znakiem alfanumerycznym lub spacją, użyj opcji -d (alfanumeryczne).

Sprawdźmy, czy wiersze zaczynające się od „Och” są obecne:

look -f oh the-jumblies.txt

Wyniki nie są zwracane przez polecenie look.

Sprawdźmy ponownie i polećmy, aby ignorował wszystko inne niż znaki alfanumeryczne i spacje. Oznacza to, że znaki i symbole, takie jak interpunkcja, będą ignorowane:

look -f -d oh the-jumblies.txt

Tym razem otrzymujemy wynik. Nie znaleźliśmy wcześniej tego wiersza, ponieważ cudzysłowy i wykrzyknik myliły wyszukiwanie.

Określanie znaku kończącego

Możesz polecić look, aby używał określonego znaku jako znaku kończącego. Zwykle jako znak zakończenia używa się spacji oraz końca linii.

Opcja -t (znak zakończenia) pozwala określić znak, którego chcesz użyć. W tym przykładzie użyjemy apostrofu. Musimy zacytować go z ukośnikiem w tył, aby wyglądało na to, że nie otwieramy ciągu.

Musimy również zacytować wyszukiwane hasło, ponieważ zawiera spację. Szukamy dwóch słów:

look -f -t ' "they call" the-jumblies.txt

Wyniki odpowiadają wyszukiwanemu terminowi zakończonemu apostrofem, którego użyliśmy jako znaku kończącego.

Korzystanie z look bez pliku

Jeśli nie podasz nazwy pliku w wierszu poleceń, look użyje pliku słów.

Wykonaj polecenie:

Otrzymasz następujące wyniki:

To są wszystkie słowa w pliku, które zaczynają się od słowa „kółko”.

Podsumowanie

To wszystko, co można zobaczyć na temat polecenia look.

Jest to całkiem proste, gdy jesteś świadomy różnych zachowań w zależności od dystrybucji Linuksa i wiesz, czy Twoja wersja korzysta z wyszukiwania binarnego czy liniowego.


newsblog.pl