Was ist der grundlegende Unterschied zwischen locate
whereis
und which
Befehl.
Der grundlegende Unterschied, den ich festgestellt habe, besteht darin, dass locate
alle zugehörigen Dateinamen im gesamten Dateisystem gefunden werden, wohingegen whereis
und which
-Befehle nur den Speicherort (System / lokale Adresse der Datei) der installierten Anwendung angeben. Wie genau ist meine Beobachtung?
Wie werden diese Befehle intern implementiert? Warum arbeitet locate
die Suche im Vergleich zur Bindestrichsuche so schnell, während locate
ein bestimmter Dateiname gesucht werden muss, der mit der Zielzeichenfolge in der gesamten Dateisystemhierarchie übereinstimmt?
command-line
unity-dash
search
locate
Chinmaya B
quelle
quelle
type
? : Ptype
, bitte erläuterntype
ist ein weiterer Befehl, der (aus meiner Sicht) etwas Ähnliches zu den von Ihnen genannten zu tun scheint.type
Befehl finden. Ich habe versuchtman type
undinfo type
.Antworten:
which
Findet die ausführbare Binärdatei des Programms (falls sie sich in Ihrem PATH befindet).man which
erklärt deutlicher:whereis
Findet die Binär-, Quell- und Manpage-Dateien für ein Programm. BeispielsweiseSie können zusätzliche Details erhalten, indem Sie die Ausgabe dieser Befehle als Argumente an
ls -l
oder übergebenfile
locate
findet in der Tat alle Dateien, die das angegebene Muster irgendwo in ihren Pfaden haben. Sie können festlegen, dass nur Dateien und Verzeichnisse gefunden werden sollen, deren Namen (anstelle vollständiger Pfade) das Muster mit der-b
Option enthalten, die normalerweise gewünscht wird, und eine weniger unhandliche Liste enthält.locate
ist schnell, weil es eine binäre Datenbank verwendet, die regelmäßig aktualisiert wird (einmal täglich voncron
). Sie können es selbst aktualisieren, um sicherzustellen, dass kürzlich hinzugefügte Dateien gefunden werdensudo updatedb
Noch etwas
locate
: Es ist egal, ob noch Dateien vorhanden sind oder nicht. Um zu vermeiden, dass kürzlich gelöschte Dateien gefunden werden, verwenden Sie-e
. Oft pfeife ich auch zu,less
da die Liste lang sein kann. Normalerweise mache ich:Die Funktionsweise von Unitys Dash wird hier erläutert. Mithilfe von Zeitgeist werden Systemdateien indiziert und anhand von Verwendungsmustern gelernt. Außerdem können andere Anwendungen diese Daten verwenden
locate
.quelle
locate
. Der Bindestrich verwendet einen völlig anderen Index - langsamer, weil er mehr Aufgaben erledigt (ich habe meine Antwort bearbeitet)sudo updatedb
dein befehl ist sehr hilfreich wusste nicht, dass ich -e zwar regelmäßig benutzte.Einfach
Dieser Befehl durchsucht die Liste der Programme, die in den PATH-Einstellungen aufgelistet sind
Der Befehl whereis sucht auch nach Programmen, die in der Einstellung PATH nicht vorhanden sind
Findet auch Dateien nach Dateinamen, durchsucht aber nicht die Verzeichnisstruktur selbst, sondern nur eine von updatedb vorbereitete Datenbank. Aus diesem Grund ist das Auffinden schneller als das Auffinden, jedoch weniger genau. Beispiele:
quelle