Jaka jest podstawowa różnica między poleceniem locate
whereis
a which
komendą.
Podstawową różnicą, którą zaobserwowałem, jest to, że locate
lokalizuje wszystkie powiązane nazwy plików w całym systemie plików, whereis
a which
polecenia podają tylko lokalizację (system / lokalny adres pliku) zainstalowanej aplikacji. Jak dokładna jest moja obserwacja?
W jaki sposób te polecenia są implementowane wewnętrznie. Dlaczego locate
działa tak szybko w porównaniu do wyszukiwania myślnika, podczas gdy locate
musi wyszukiwać konkretną nazwę pliku pasującą do ciągu docelowego w całej hierarchii systemu plików?
command-line
unity-dash
search
locate
Chinmaya B
źródło
źródło
type
? : Ptype
, proszę rozwinąćtype
to kolejne polecenie, które wydaje mi się (moim zdaniem) podobne do tych, o których wspomniałeś.type
polecenia. Próbowałemman type
iinfo type
.Odpowiedzi:
which
znajduje binarny plik wykonywalny programu (jeśli jest w twojej ŚCIEŻCE).man which
wyjaśnia jaśniej:whereis
znajduje pliki binarne, źródłowe i strony man dla programu. Na przykładMożesz uzyskać dodatkowe szczegóły, przekazując dane wyjściowe tych poleceń jako argumenty do
ls -l
lubfile
locate
faktycznie znajduje wszystkie pliki, które mają wzorzec określony w dowolnym miejscu na ścieżce. Możesz nakazać mu znajdowanie tylko plików i katalogów, których nazwy (zamiast pełnych ścieżek) zawierają wzorzec z-b
opcją, która jest zwykle tym, czego chcesz, i daje mniej nieporęczną listę.locate
jest szybki, ponieważ korzysta z binarnej bazy danych, która jest okresowo aktualizowana (raz dziennie przezcron
). Możesz go zaktualizować samodzielnie, aby mieć pewność, że ostatnio dodane pliki zostaną odnalezione przez uruchomieniesudo updatedb
Jeszcze jedno
locate
- nie ma znaczenia, czy pliki nadal istnieją, czy nie, więc aby uniknąć znajdowania ostatnio usuniętych plików, użyj-e
. Często też przesyłam potokiem,less
ponieważ lista może być długa. Zazwyczaj robię:Jak działa kreska jedności wyjaśnił, jest tutaj - korzysta Zeitgeist do systemu plików indeksowych i uczyć się od sposobu użytkowania i umożliwia innych aplikacji do korzystania z tych danych, więc to robi dużo więcej pracy niż
locate
.źródło
locate
. Kreska używa zupełnie innego indeksu - wolniej, ponieważ robi więcej rzeczy (zredagowałem swoją odpowiedź)sudo updatedb
twoje polecenie jest bardzo pomocne nie wiedziałem, że chociaż regularnie używałem -e.Po prostu
które polecenie przeszukuje listę programów wymienionych w ustawieniach PATH
Komenda whereis wyszukuje również programy, które nie są obecne w ustawieniu PATH
Znajduje również pliki według nazwy pliku, ale nie przeszukuje samej struktury katalogów, a jedynie bazę danych przygotowaną przez updatedb. Z tego powodu lokalizacja jest szybsza niż wyszukiwanie, ale mniej dokładna. Przykłady:
źródło