GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Der Unterschied zwischen lokalisieren/wo ist/was?

Was ist der grundlegende Unterschied zwischen locate whereis und which Befehl.

Der grundlegende Unterschied, den ich beobachtet habe, ist dieser locate findet alle zugehörigen Dateinamen im gesamten Dateisystem, wohingegen whereis und which Befehle geben nur den Speicherort (System-/lokale Adresse der Datei) der installierten Anwendung an. Wie genau ist meine Beobachtung?

Wie werden diese Befehle intern implementiert. Warum locate arbeiten so schnell im Vergleich zur Bindestrichsuche, während locate muss einen bestimmten Dateinamen suchen, der mit der Zielzeichenfolge in der gesamten Dateisystemhierarchie übereinstimmt?

Akzeptierte Antwort:

which findet die ausführbare Binärdatei des Programms (falls sie sich in Ihrem PATH befindet). man which erklärt deutlicher:

die die Pfadnamen der Dateien (oder Links) zurückgibt, die
in der aktuellen Umgebung ausgeführt würden, wenn ihre Argumente als Befehle in einer strikt POSIX-konformen Shell übergeben worden wären. Dazu wird der PATH nach ausführbaren Dateien durchsucht, die mit den Namen der Argumente übereinstimmen. Es folgt keinen symbolischen Links.

whereis findet die Binär-, die Quell- und die Manpage-Dateien für ein Programm. Zum Beispiel

$ whereis gimp
/usr/bin/gimp /usr/lib/gimp /etc/gimp /usr/share/gimp /usr/share/man/man1/gimp.1.gz

Sie können zusätzliche Details erhalten, indem Sie die Ausgabe dieser Befehle als Argumente an ls -l übergeben oder file

$ ls -l $(which gimp)
lrwxrwxrwx 1 root root 8 Jun 30 19:59 /usr/bin/gimp -> gimp-2.8

$ file $(which gimp)
/usr/bin/gimp: symbolic link to gimp-2.8

locate findet tatsächlich alle Dateien, in deren Pfaden das Muster irgendwo angegeben ist. Sie können es anweisen, nur Dateien und Verzeichnisse zu finden, deren Namen (anstelle vollständiger Pfade) fügen Sie das Muster mit dem -b ein Option, die normalerweise das ist, was Sie wollen, und eine weniger unhandliche Liste ergibt.

locate ist schnell, weil es eine binäre Datenbank verwendet, die regelmäßig aktualisiert wird (einmal täglich, durch cron ). Sie können es selbst aktualisieren, um sicherzustellen, dass kürzlich hinzugefügte Dateien gefunden werden, indem Sie sudo updatedb ausführen

Noch etwas zu locate – es spielt keine Rolle, ob Dateien noch vorhanden sind oder nicht, also verwenden Sie -e, um zu vermeiden, kürzlich gelöschte Dateien zu finden . Oft leite ich auch zu less da die Liste lang sein kann. Normalerweise mache ich:

sudo updatedb && locate -b -e gimp | less

Wie der Dash von Unity funktioniert, wird hier erklärt – er verwendet Zeitgeist, um Systemdateien zu indizieren und aus Nutzungsmustern zu lernen, und ermöglicht es anderen Anwendungen, diese Daten zu nutzen, sodass er viel mehr Arbeit leistet als locate .


Ubuntu
  1. Was ist der Unterschied zwischen InnoDB und MyISAM?

  2. Der Unterschied zwischen [[ $a ==Z* ]] und [ $a ==Z* ]?

  3. Centos – Der Unterschied zwischen Shutdown 18:00 und Shutdown um 18:00?

  4. Der Unterschied zwischen Nss und Pam?

  5. Was ist der Unterschied zwischen Ddrescue, Gddrescue und Dd_rescue?

Der Unterschied zwischen sudo und su erklärt

Der Unterschied zwischen Backup und Replikation

Was ist der Unterschied zwischen Rsync und BTRFS unter Linux?

Was ist der Unterschied zwischen Cat und Touch Command?

Unterschied zwischen zusätzlichen Treibern (nvidia)?

Was ist der Unterschied zwischen unlink und rm?