Linux look
polecenie przeszukuje plik i wyświetla listę wszystkichwiersze rozpoczynające się od określonego słowa lub frazy. Ale uważaj! Zachowuje się inaczej w różnych dystrybucjach Linuksa. Ten samouczek pokaże, jak z niego korzystać.
Wygląd Ubuntu Polecenie zachowuje się inaczej
Dla prostego, ale przydatnego polecenia, look
z pewnością dało mi to obejście, kiedy badałem ten artykuł. Wystąpiły dwa problemy: zgodność i dokumentacja.
Ten artykuł został sprawdzony przy użyciu Ubuntu, Fedory i Manjaro. look
został dołączony do każdej z tych dystrybucji,co było świetne. Problem polegał na tym, że zachowanie nie było takie samo we wszystkich trzech przypadkach. Wersja Ubuntu była zupełnie inna. Według stron Ubuntu zachowanie powinno być takie samo.
W końcu to rozgryzłem. look
tradycyjnie używa wyszukiwania binarnego, podczas gdy Ubuntu look
używa wyszukiwania liniowego. Strony man Ubuntu online dla Bionic Beaver (18.04), Cosmic Cuttlefish (18.10) i Disco Dingo (19.04) mówią, że wersja Ubuntu używa wyszukiwania binarnego, co nie jest prawdą.
Jeśli spojrzymy na lokalny Strona podręcznika Ubuntu, widzimy, że wyraźnie określa ich look
używa wyszukiwania liniowego. Istnieje opcja wiersza polecenia, która wymusza użycie wyszukiwania binarnego. Żadna z wersji w innych dystrybucjach nie ma opcji wyboru między metodami wyszukiwania.
man look
Przewijając stronę podręcznika, widzimy sekcję opisującą tę wersję look
za pomocą wyszukiwania liniowego zamiast wyszukiwania binarnego.
Morał tej historii jest sprawdzenie najpierw lokalnych stron podręcznika użytkownika.
Wyszukiwanie liniowe a wyszukiwanie binarne
Metoda wyszukiwania binarnego jest szybsza i więcejwydajne niż wyszukiwanie liniowe. Praca z dużymi plikami czyni to bardzo oczywistym. Minusem wyszukiwania binarnego jest to, że plik musi być posortowany. Jeśli nie chcesz sortować pliku, posortuj jego kopię, a następnie użyj go z look
.
Pokażemy to gdzie indziej w tym artykule. Pamiętaj, że w Fedorze, Manjaro i spodziewamy się większości reszty świata Linuksa, musisz utworzyć posortowaną kopię pliku i pracować z tym.
Instalowanie słów
look
może pracować z dowolnym wybranym plikiem tekstowym lub z lokalnym plikiem słownika „words”.
Na Manjaro musisz zainstalować plik „słów”. Użyj tego polecenia:
sudo pacman -Syu words
Korzystanie z wyglądu
W tym artykule będziemy pracować z plikiem tekstowym wiersza Edwarda Leara „Jumblies”.
Spójrzmy na jego zawartość za pomocą tego polecenia:
less the-jumblies.txt
Oto pierwsza część wiersza. Pamiętaj, że używamy Ubuntu, więc plik pozostaje nieposortowany. W przypadku Fedory i Manjaro pracujemy z posortowaną kopią pliku, którą omówimy w dalszej części tego artykułu.
Jeśli szukamy linii rozpoczynających się od słowa „Oni”, dowiemy się, co zrobili Jumblies.
look They the-jumblies.txt
look
odpowiada, wymieniając następujące wiersze:
Ignorowanie wielkości znaków
Robić look
ignoruj różnice między wielkimi i małymi literami, użyj -f
opcja (ignoruj wielkość liter). Znów użyliśmy słowa „one”, ale tym razem jest to małe litery.
look -f they the-jumblies.txt
Tym razem wyniki zawierają dodatkową linię.
Linia, która zaczyna się od „THEY”, została pominięta w ostatnim zestawie wyników, ponieważ jest zapisana wielkimi literami i nie pasuje do naszego wyszukiwanego hasła „Oni”.
Ignorowanie wielkości liter pozwala look
aby uwzględnić to w wynikach.
Używanie wyglądu z posortowanym plikiem
Jeśli Twoja dystrybucja Linuksa ma wersję look
zgodnie z tradycyjnym sposobem korzystania z wyszukiwania binarnego, musisz albo posortować plik, albo pracować z posortowaną jego kopią.
Powtórzmy polecenie, aby wyszukać „Oni”, ale tym razem w Manjaro.
Jak widać, żadne wyniki nie zostały zwrócone. Ale wiemy, że w wierszu są wiersze zaczynające się od słowa „oni”.
Zróbmy posortowaną kopię pliku. Jeśli zamierzasz użyć -f
(zignoruj wielkość liter) lub -d
(tylko znaki alfanumeryczne i spacje) opcje z look
, musisz ich użyć podczas sortowania pliku.
The -o
Opcja (wynik) pozwala określić nazwę pliku, do którego powinny zostać dodane posortowane linie. W tym przykładzie jest to „sorted.txt”.
sort -f -d the-jumblies.txt -o sorted.txt
Użyjmy look
w pliku sorted.txt, a następnie użyj -f
i -d
opcje
Teraz otrzymujemy oczekiwane wyniki.
Uwzględnij tylko spacje i znaki alfanumeryczne
Aby wyglądać, ignoruj wszystko, co nie jest znakiem alfanumerycznym ani spacją, użyj -d
(alfanumeryczna) opcja.
Zobaczmy, czy są jakieś słowa, które zaczynają się od „Och”.
look -f oh the-jumblies.txt
Żadne wyniki nie są zwracane przez look
.
Spróbujmy jeszcze raz i powiedzmy, aby zignorować 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 tego wiersza wcześniej, ponieważ cudzysłowy i wykrzyknik mylą wyszukiwanie.
Określanie znaku kończącego
Możesz powiedzieć look
użyć określonego znaku jako znaku kończącego. Zazwyczaj spacje i koniec linii są używane jako znak kończący.
The -t
Opcja (zakończ znak) pozwala nam określić znak, którego chcemy użyć. W tym przykładzie użyjemy znaku apostrofu. Musimy to zacytować odwrotnie, aby to zrobić look
wie, że nie otwieramy łańcucha.
Cytujemy również wyszukiwane hasło, ponieważ zawiera ono spację. Szukamy dwóch słów.
look -f -t ' "they call" the-jumblies.txt
Wyniki pasują do wyszukiwanego terminu, zakończonego apostrofem, którego użyliśmy jako znak kończący.
Korzystanie z wyglądu bez pliku
Jeśli nie podasz nazwy pliku w wierszu poleceń, look używa pliku słów.
Komenda:
daje te wyniki:
Są to wszystkie słowa w pliku, które zaczynają się od słowa „koło”.
nie szukaj dalej
To wszystko look
.
To całkiem proste, gdy wiesz, że istnieją różne zachowania w różnych dystrybucjach Linuksa, i zastanawiasz się, czy Twoja wersja używa wyszukiwania binarnego czy liniowego.