Ein Terminalfenster, das auf einem Linux-Laptop-Computer ausgeführt wird.

Fatmawati Achmad Zaenuri/Shutterstock

Das Linux |_+_| Befehl identifiziert die ausführbare Binärdatei, die gestartet wird, wenn Sie einen Befehl an die Shell ausgeben. Wenn Sie verschiedene Versionen desselben Programms auf Ihrem Computer haben, können Sie |_+_| . verwenden um herauszufinden, welche die Shell verwenden wird.



Binärdateien und Pfade

Wenn Sie versuchen, ein Programm oder einen Befehl über das Terminalfenster auszuführen, wird die Shell (normalerweise Bash auf modernen Distributionen) muss diesen Befehl finden und starten. Einige Befehle, wie z CD , Geschichte , und pwd , sind in die Shell integriert, sodass Bash nicht allzu hart arbeiten muss, um diese zu finden.

10 grundlegende Linux-Befehle für Anfänger VERBUNDEN 10 grundlegende Linux-Befehle für Anfänger

Aber wie findet Bash andere Befehle, Programme und externe eigenständige Binärdateien? Nun, Bash verwendet den Pfad, der eigentlich eine Sammlung von Pfaden ist, von denen jeder auf ein Verzeichnis zeigt. Es durchsucht dann jedes dieser Verzeichnisse nach einer ausführbaren Datei, die dem Befehl oder Programm entspricht, das Sie ausführen möchten. Wenn es einen findet, startet Bash es und bricht die Suche ab.

Sie können |_+_| . verwenden um die |_+_| . zu überprüfen Umgebungsvariable und sehen Sie sich die Verzeichnisse in Ihrem Pfad an. Geben Sie dazu Folgendes ein und drücken Sie dann die Eingabetaste:

which

Die Ausgabeliste trennt jeden Pfad durch Doppelpunkte (:). Auf dem von uns verwendeten Computer durchsucht Bash die folgenden Verzeichnisse in dieser Reihenfolge:

  • which
  • echo
  • $PATH
  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
Anzeige

Es gibt viele Ordner namens |_+_| und |_+_| im Dateisystem, was zu Verwirrung führen kann.

So stellen Sie das E-Mail-Passwort wieder her

Beobachte diese Pfade

Nehmen wir an, wir haben eine aktualisierte Version eines Programms namens |_+_|. Es befindet sich in unserem aktuellen Verzeichnis und wir können es ausführen, indem wir den folgenden Befehl eingeben:

/user/games

Es ist kein großes Programm – es gibt nur die Versionsnummer aus und wird dann geschlossen. Die neue Version ist 1.2.138.

Um ein Programm im aktuellen Arbeitsverzeichnis auszuführen, müssen Sie ./ vor dem Programmnamen eingeben, damit Bash weiß, wo es zu finden ist.

Da wir dieses spezielle Programm von einem beliebigen Verzeichnis aus ausführen möchten, verschieben wir die ausführbare Datei in das |_+_| Verzeichnis. Bash findet dieses Programm im Pfad und führt es für uns aus.

Erstellen Sie ein symbolisches Linkfenster

Wir brauchen weder die ausführbare Datei in unserem aktuellen Verzeichnis, noch müssen wir ./ vor dem Programmnamen eingeben, wie unten gezeigt:

/usr/local/games

Versuchen wir nun, das Programm auszuführen, indem Sie Folgendes eingeben:

/snap/bin

Anzeige

Etwas läuft, aber es ist nicht unser neues, aktualisiertes Programm. Es ist vielmehr die ältere Version 1.2.105.

Welcher Befehl

Das Problem, das wir oben gezeigt haben, ist, warum die |_+_| Befehl wurde gestaltet .

In diesem Beispiel verwenden wir |_+_| und übergeben Sie den Namen des Programms, das wir untersuchen, als Befehlszeilenparameter:

/sbin

|_+_| meldet, dass eine Version von |_+_| . gefunden wurde im |_+_| Verzeichnis. Da dieser Speicherort im Pfad vor dem Verzeichnis erscheint, in das wir das aktualisierte |_+_| verschoben haben, verwendet Bash diese frühere Version des Programms.

Wenn wir jedoch |_+_| . verwenden (alle) Option wie unten gezeigt, |_+_| sucht weiter, auch wenn eine Übereinstimmung gefunden wird:

/bin

Es listet dann alle Übereinstimmungen in einem der Verzeichnisse im Pfad auf.

Anzeige

Das ist also das Problem – es gibt eine frühere Version des Programms in einem Verzeichnis, das sich auch im Patch befindet. Und dieses Verzeichnis wird vor dem Verzeichnis durchsucht, in dem wir die neue Version des Programms abgelegt haben.

excel blatt in pdf umwandeln

Zur Überprüfung können wir Folgendes eingeben und jede Version des Programms explizit ausführen:

htg ./htg

Dies erklärt das Problem und die Lösung ist einfach.

Eigentlich haben wir Optionen. Wir können entweder die alte Version im |_+_| . löschen Verzeichnis oder verschieben Sie es aus |_+_| zu |_+_|.

Sehen Sie sich diese Ergebnisse an

Zwei Ergebnisse bedeuten nicht unbedingt zwei Binärdateien.

Schauen wir uns ein Beispiel an, in dem wir |_+_| . verwenden Befehl mit dem |_+_| (alle) Option und suchen Sie nach Versionen von |_+_| Programm:

/usr/bin

|_+_| meldet zwei Standorte, die eine Version des |_+_| . beherbergen Programm, aber stimmt das? Es wäre seltsam, zwei verschiedene Versionen (oder dieselbe Version an mehreren Orten) von |_+_| . zu haben auf einem Linux-Computer installiert. Daher werden wir die Ausgabe von |_+_| nicht akzeptieren. Lassen Sie uns stattdessen etwas tiefer graben.

Wir können die |_+_|, |_+_| . verwenden (lange Auflistung) und |_+_| (für Menschen lesbare) Optionen, um zu sehen, was vor sich geht:

which

fps in steam spiele anzeigen
Anzeige

Die Dateigröße wird mit neun Byte angegeben! Das ist definitiv keine vollständige Kopie von |_+_|.

Das erste Zeichen der Auflistung ist ein l. Eine normale Datei hätte als erstes Zeichen einen Bindestrich (-). Das l ist ein Symbol, das bedeutet symbolischer Link . Wenn Sie dieses Detail verpasst haben, das |_+_| Symbol zeigt auch an, dass dies ein ist symbolischer Link , die Sie sich als eine Art Abkürzung vorstellen können. Dieser zeigt auf die Kopie von |_+_| in |_+_|.

Versuchen wir es noch einmal mit der Version von |_+_| in |_+_|:

which

Dieser Eintrag ist offensichtlich eine echte ausführbare Binärdatei. Das erste Zeichen der Auflistung ist ein Bindestrich (-), was bedeutet, dass es sich um eine normale Datei handelt, und die Dateigröße beträgt 167 KB. Also nur eine Kopie von |_+_| installiert ist, aber es gibt einen symbolischen Link zu ihm aus einem anderen Verzeichnis, den die Bash auch findet, wenn sie den Pfad durchsucht.

VERBUNDEN: So verwenden Sie den ls-Befehl zum Auflisten von Dateien und Verzeichnissen unter Linux

Mehrere Befehle gleichzeitig prüfen

Sie können mehrere Programme und Befehle an |_+_| übergeben, und es überprüft sie der Reihe nach.

Wenn Sie beispielsweise Folgendes eingeben:

which

|_+_| arbeitet die Liste der Programme und Befehle ab, die Sie ihm zur Verfügung gestellt haben, und listet das Ergebnis für jedes einzelne auf.

Welches ist welches?

Wenn Sie dazu neigen, können Sie auch |_+_| . verwenden auf sich selbst, indem Sie Folgendes eingeben:

htgAnzeige

Abgesehen davon, dass Sie aus Neugier im Linux-Dateisystem herumstöbern, |_+_| ist am nützlichsten, wenn Sie ein Verhalten von einem Befehl oder Programm erwarten, aber ein anderes erhalten.

Sie können |_+_| . verwenden In diesen Fällen können Sie überprüfen, ob der Befehl, den Bash startet, der ist, den Sie verwenden möchten.

Linux-Befehle
Dateien Teer · pv · Katze · tac · chmod · Griff · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · Journalctl · Schwanz · Zustand · ls · fstab · rauswerfen · weniger · chgrp · chown · rev · suchen · Saiten · Typ · umbenennen · Postleitzahl · entpacken · montieren · ummount · Installieren · fdisk · mkfs · rm · rmdir · rsync · df · gpg · wir · Nano · mkdir · von · ln · Patch · Konvertieren · rclon · Fetzen · SRM
Prozesse alias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · beim · Charge · kostenlos · die · dmesg · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · ja · töten · Schlaf · sudo · seine · Zeit · groupadd · Benutzermod · Gruppen · lshw · stilllegen · neu starten · halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzung netstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · Locken · wget · Wer · Wer bin ich · In · iptables · ssh-keygen · ufw

VERBUNDEN: Beste Linux-Laptops für Entwickler und Enthusiasten

WEITER LESEN