Linux / Befehle / which, whereis, locate / Auffinden von Befehlspositionen
In Linux wird which hauptsächlich verwendet, um ausführbare Dateien in PATH zu finden, whereis findet verwandte Dateien wie ausführbare Dateien und Handbücher an vordefinierten Orten. locate durchsucht eine vorgefertigte Dateinamensdatenbank, sodass es auch reguläre Dateien schnell finden kann, aber die Ergebnisse könnten vom aktuellen Zustand abweichen.
Welcher Befehl sollte verwendet werden?
- Ausführbarer Dateipfad: Überprüfen Sie mit
which findoder der Shell-command -v find, welche Befehle in der aktuellen Umgebung gefunden werden können. - Ausführbare Dateien und Handbücher: Verwenden Sie
whereis find, um zu überprüfen, ob Programme und zugehörige Handbücher/Quellen an bekannten Speicherorten vorhanden sind. - Nach Dateiname suchen:
locatedurchsucht indexierte Pfade, und wenn Sie die aktuellsten Informationen benötigen, können Siefindverwenden, um ein angegebenes Verzeichnis direkt zu durchsuchen.
Der Suchbereich und die Ergebnisse variieren je nach Distribution, installierten Programmen, Benutzerberechtigungen und Einstellungen. Die unten angegebenen Ausgabepfade sind Beispiele zu Erklärungszwecken und können nicht auf allen Systemen gleich sein.
Überprüfen Sie ausführbare Dateien mit which und command -v
PATH ist eine Umgebungsvariable, die eine Liste von Verzeichnissen enthält, die beim Suchen nach einem auszuführenden Befehl durchsucht werden. Der folgende Befehl findet den Pfad einer ausführbaren Datei mit dem Namen find.
which find
Zum Beispiel kann /usr/bin/find ausgegeben werden. Wenn kein Pfad ausgegeben wird, überprüfen Sie, ob das Programm installiert ist und verifizieren Sie PATH. Die Implementierung von which und die Alias-Verarbeitung unterscheiden sich jedoch je nach System, daher ist es auch eine gute Idee, integrierte Shell-Befehle zu überprüfen, um zu sehen, wie die aktuelle Shell Namen interpretiert.
command -v find
type -a find
In Bash zeigt command -v den Namen oder Pfad an, der zum Aufrufen eines Befehls verwendet wird, und type -a zeigt die gefundenen Elemente an, wie Aliase, Funktionen, integrierte Befehle und ausführbare Dateien mit diesem Namen. Shell-interne Befehle oder Aliase haben möglicherweise keinen separaten ausführbaren Dateipfad. Sie können ihr Verhalten in Bash-Builtin-Beschreibung überprüfen.
Verwandte Dateien mit whereis finden
whereis sucht nach den ausführbaren Dateien des Programms, der Quelle und den Handbuchdateien in Standardverzeichnissen und den konfigurierten Suchpfaden.
whereis find
Die Ergebnisliste zeigt die gefundenen Pfade nach find: an. Wenn Sie nur die ausführbaren Dateien sehen möchten, können Sie whereis -b find verwenden; wenn Sie nur die Handbuchdateien sehen möchten, können Sie whereis -m find verwenden. Wenn die Datei nicht installiert ist oder sich außerhalb des Suchpfads befindet, wird sie nicht angezeigt, sodass ein fehlendes Ergebnis nicht unbedingt bedeutet, dass die Datei nirgendwo im System vorhanden ist.
In util-linux zeigt whereis -l die Suchorte an. Details zum Suchbereich finden Sie in der util-linux whereis-Dokumentation .
Suche nach Dateinamen mit locate
locate durchsucht Einträge in der von updatedb erstellten Datenbank, die einem Namen oder Pfad entsprechen. Zum Beispiel findet der folgende Befehl Einträge in den indizierten Pfaden, die find enthalten.
locate find
Die Ausgabe kann nicht nur ausführbare Dateien, sondern auch Handbücher oder Dateien mit anderen Namen enthalten. Die Optionen können je nach installierter Implementierung variieren, überprüfen Sie daher zuerst locate --help. Zum Beispiel können Sie in plocate die Ergebnisse wie folgt auf maximal 10 beschränken.
locate -l 10 find
Wenn die Datenbank veraltet ist, können neue Dateien fehlen und bereits gelöschte Pfade weiterhin vorhanden sein. Auch von der Suche ausgeschlossene Pfade und die Zugriffsberechtigungen des Benutzers beeinflussen die Ergebnisse. Die Distribution kann die Datenbank periodisch aktualisieren, und in einer Umgebung, in der Systemadministration erlaubt ist, können Sie sie direkt mit sudo updatedb aktualisieren. Da dies eine breite Menge an Systemverzeichnissen durchsuchen kann, überprüfen Sie vor der Ausführung die Verwaltungsvorschriften. Implementierung und zugehörige Handbücher finden Sie in offizielle plocate-Dokumentation.
Installationsstatus und neueste Dateien prüfen
locate ist möglicherweise nicht installiert. Zum Beispiel können Sie das Ubuntu 24.04 plocate-Paket verwenden, und in einer Umgebung mit Administratorrechten und Zugriff auf das Paketarchiv können Sie es wie folgt installieren.
sudo apt update
sudo apt install plocate
In anderen Distributionen oder Versionen können Paketnamen und Aktualisierungsmethoden unterschiedlich sein, daher konsultieren Sie bitte die Dokumentation der jeweiligen Distribution. Wenn die Datenbank noch nicht existiert oder nach der Installation nicht auf dem neuesten Stand ist, muss der Administrator sie möglicherweise initialisieren oder aktualisieren.
Um die aktuelle Datei direkt in Ihrem Home-Verzeichnis zu finden, ohne auf die Datenbank zu warten, gehen Sie wie folgt vor:
find "$HOME" -name 'example.txt'
Dieser Befehl durchsucht direkt den angegebenen Verzeichnisbaum, daher kann es länger dauern als locate und er kann keine Verzeichnisse durchsuchen, für die Sie keine Zugriffsberechtigungen haben. Ersetzen Sie example.txt durch den tatsächlichen Dateinamen, den Sie suchen, und behalten Sie die Anführungszeichen bei, damit das Suchmuster nicht zuvor von der Shell erweitert wird.




