Eine umfassende Anleitung zur Verwendung des Befehls „which“ in Linux

Eine umfassende Anleitung zur Verwendung des Befehls „which“ in Linux

Linux bietet Nutzern beispiellose Kontrolle über ihre Computerumgebung, von umfangreichen Anpassungsmöglichkeiten bis hin zu detaillierten Systemverwaltungsfunktionen. Unter den zahlreichen verfügbaren Tools whichsticht der Befehl als wichtiges Instrument zur Optimierung Ihrer Kommandozeilenerfahrung hervor. Mit diesem Dienstprogramm können Sie den genauen Speicherort jeder ausführbaren Datei ermitteln, indem Sie die in Ihrer $PATHVariable angegebenen Verzeichnisse durchsuchen. In dieser umfassenden Anleitung gehen wir auf die Funktionsweise des whichBefehls ein, erläutern seine Syntax und Optionen und liefern praktische Beispiele, um Ihre Kommandozeilenkenntnisse zu verbessern.

Verstehen der Syntax und Funktionalität des „which“-Befehls

Dieser whichBefehl ist Ihr bevorzugtes Werkzeug zum Auffinden der ausführbaren Datei, die einem bestimmten Befehl zugeordnet ist. Er untersucht die in Ihrer Umgebungsvariable PATH angegebenen Verzeichnisse. Er zeigt an, welche Datei bei der Ausführung eines Befehls ausgeführt wird, und liefert basierend auf den Suchergebnissen die entsprechende Ausgabe:

  • 0zeigt an, dass alle angegebenen Befehle gefunden wurden und ausführbar sind.
  • 1bedeutet, dass ein oder mehrere Befehle fehlen oder nicht ausführbar sind.
  • 2zeigt an, dass eine ungültige Option verwendet wurde.

Die Standardsyntax zum Aufrufen des whichBefehls unter Linux ist unkompliziert:

which [file1] [file2]...

Ersetzen Sie einfach [file1]und [file2]durch die Namen der ausführbaren Dateien, die Sie suchen möchten.

Warum den Befehl „which“ verwenden?

Der whichBefehl erfüllt unter Linux mehrere wichtige Funktionen. Er ermöglicht es Benutzern zu überprüfen, ob ein Befehl einer tatsächlichen ausführbaren Datei, einem Alias ​​oder einem symbolischen Link entspricht. Darüber hinaus ermittelt er den genauen Speicherort einer ausführbaren Datei und hilft, fehlende oder widersprüchliche Befehle innerhalb der PATH-Variable zu identifizieren. Die Verwendung von whichgarantiert, dass die gewünschte Version eines Befehls auch dann korrekt ausgeführt wird, wenn mehrere Versionen auf Ihrem System vorhanden sind. Dieser Befehl kann Ihre Produktivität deutlich steigern, insbesondere im Umgang mit verschiedenen Tools und Skripten.

Praktische Anwendungen des which-Befehls

Sehen wir uns nun eine Reihe praktischer Beispiele an, um zu veranschaulichen, wie der whichBefehl in realen Szenarien angewendet werden kann:

Beispiel 1: Suchen des Pfads einer ausführbaren Datei

Mit dem folgenden Befehl lässt sich ganz einfach ermitteln, wo sich die ausführbare Datei eines Befehls befindet which:

which grep

Pfad der ausführbaren Datei suchen

Sie erhalten eine Ausgabe wie „ /usr/bin/grep“, die den genauen Speicherort der ausführbaren Datei eindeutig angibt.

Beispiel 2: Pfade mehrerer Befehle suchen

Es ist möglich, mehrere Befehle gleichzeitig abzufragen mit dem whichBefehl:

which awk sed cat touch

Dieser Befehl ruft die Pfade für die Befehle awk, sed, und catab:

Pfad mehrerer Befehle suchen

Beispiel 3: Alle Instanzen eines Befehls anzeigen

Standardmäßig whichwird nur das erste Vorkommen im Pfad zurückgegeben. Sie können die -aOption verwenden, um alle Instanzen eines bestimmten Befehls zu ermitteln:

which -a cat

Dadurch wird eine Liste aller Standorte bereitgestellt, an denen Folgendes catgefunden wird:

Alle Instanzen anzeigen

Um die Details dieser Dateien zu überprüfen, können Sie den lsBefehl mit der -lhOption verwenden, festzustellen, ob es sich um tatsächlich ausführbare Dateien oder Duplikate handelt:

ls -lh /usr/bin/cat && ls -lh /bin/cat

Ausführbare Dateien überprüfen

Die Ausgabe zeigt die beiden identischen Befehle in unterschiedlichen Verzeichnissen und stellt beide als ausführbare Dateien mit einer Größe von 35 KB dar.

Beispiel 4: Bestätigen der Befehlsexistenz

Überprüfen Sie mit dem folgenden Befehl, ob ein bestimmter Befehl vorhanden ist which:

which cats

Fehlende Befehle

Wenn der Befehl nicht vorhanden ist, wird keine Ausgabe angezeigt und der Beendigungsstatus wird ungleich Null, was auf einen fehlenden Befehl hinweist.

Beispiel 5: Identifizieren symbolischer Links

Wenn auf Ihrem System mehrere Versionen desselben Programms vorhanden sind, handelt es sich bei manchen Instanzen möglicherweise um symbolische Links statt um tatsächliche Binärdateien. Um symbolische Links zu identifizieren, führen Sie den whichBefehl mit der folgenden -aOption aus:

which -a crontab

Symbolische Links prüfen

Überprüfen Sie als Nächstes die Dateidetails mit dem lsfolgenden Befehl:

ls -lh /usr/bin/crontab && ls -lh /bin/crontab

Dateidetails prüfen

Wenn in der Ausgabe das Symbol angezeigt ->wird, handelt es sich bei der Datei um einen symbolischen Link, der auf einen anderen Speicherort verweist.

Beispiel 6: Ausschließen integrierter Shell-Befehle

Der Befehl lässt insbesondere whichShell-integrierte Befehle aus und zeigt nur externe ausführbare Dateien an, um die Identifizierung des Installationsorts eines Programms zu erleichtern. Beispielsweise gibt zwar lseinen Pfad zurück, readtut dies aber als integrierter Befehl nicht:

which ls read

Integrierte Shell-Befehle ausschließen

Einschränkungen des „which“-Befehls

Der whichBefehl unterliegt gewissen Einschränkungen, die seine Wirksamkeit in bestimmten Kontexten beeinträchtigen können. Er konzentriert sich primär auf externe ausführbare Dateien und erkennt keine integrierten Befehle wie cdoder read. Außerdem kann er nicht zwischen Binärdateien und symbolischen Links unterscheiden. Da er ausschließlich in den in der $PATHVariable angegebenen Verzeichnissen sucht, findet er keine Programme an anderen Speicherorten. Darüber hinaus fehlt die Möglichkeit, Details wie Dateityp, Berechtigungen oder Versionsinformationen bereitzustellen. Insbesondere wird bei fehlendem Befehl einfach keine Ausgabe zurückgegeben, sondern eine Fehlermeldung ausgegeben.

Um diese Einschränkungen zu umgehen, sollten Sie alternative Befehle wie whereis, type, oder verwenden ls.

Wo vs. Welcher Befehl

Sowohl der Befehl whereals auch whichder Befehl dienen der Dateisuche, erfüllen aber unterschiedliche Zwecke. Der whereBefehl wird typischerweise unter Windows und bestimmten Unix-ähnlichen Systemen verwendet. Er sucht sowohl Dateien als auch Verzeichnisse und listet alle Treffer im Pfad des Systems auf.

Der Befehl hingegen whichist ausschließlich auf Unix-ähnlichen Systemen verfügbar und konzentriert sich ausschließlich auf ausführbare Dateien in den in der $PATHVariable angegebenen Verzeichnissen. Standardmäßig gibt er nur den ersten gefundenen Treffer zurück; die -aOption ermöglicht jedoch die Auflistung aller Treffer.

Um den Unterschied zu verdeutlichen: where nodeUnter Windows werden alle Speicherorte angezeigt, an denen sich die ausführbare Knotendatei befindet, während unter Linux which gccdas erste Verzeichnis zurückgegeben wird, in dem sich der GCC-Compiler befindet.

Obwohl der Befehl eine Vielzahl von Funktionen bietet, whichfehlen ihm möglicherweise einige Funktionen. Benutzer können seine Einschränkungen jedoch durch die Verwendung zusätzlicher Befehle umgehen. Wichtig ist auch, dass er whichnur ausführbare Dateien in Ihrem erkennt $PATH. Wenn Ihr Skript oder Programm nicht erkannt wird, fehlen ihm möglicherweise einfach die Ausführungsberechtigungen. Daher $PATHist es wichtig, sicherzustellen, dass sich Ihr Skript in einem Verzeichnis mit den entsprechenden Ausführungsberechtigungen befindet.

Häufig gestellte Fragen

1. Was ist der Hauptzweck des „Which“-Befehls?

Der Hauptzweck des Befehls besteht darin, die mit einem bestimmten Befehl verknüpfte ausführbare Datei zu finden, indem die in Ihrer Umgebungsvariablen whichangegebenen Verzeichnisse durchsucht werden.$PATH

2. Wie finde ich mit dem Befehl „which“ mehrere ausführbare Dateien gleichzeitig?

Sie können mehrere Befehle in einer einzigen whichAnweisung angeben, indem Sie sie durch Leerzeichen trennen, etwa so: which command1 command2. Dadurch können Sie Pfade für alle angegebenen ausführbaren Dateien auf einmal abrufen.

3. Welche Einschränkungen muss ich bei der Verwendung des Befehls „which“ beachten?

Der whichBefehl weist mehrere Einschränkungen auf. Er kann beispielsweise keine integrierten Shell-Befehle finden, unterscheidet nicht zwischen Binärdateien und symbolischen Links und sucht nur in den in der $PATHVariable angegebenen Verzeichnissen. Wird eine ausführbare Datei nicht gefunden, wird keine Fehlermeldung zurückgegeben, was irreführend sein kann.

Quelle & Bilder

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert