Der hash
-Befehl in Linux speichert die Pfadinformationen von ausführbaren Dateien in einer internen Liste, um den Zugriff auf diese Dateien zu beschleunigen. Statt jedes Mal den vollständigen Pfad zu suchen, kann das System direkt auf die Informationen im Hash zugreifen, was die Ausführungszeit verkürzt. Wenn ein Benutzer einen Befehl ausführt, überprüft hash
zuerst, ob der Befehl bereits in der hash
-Tabelle enthalten ist. Falls ja, wird der gespeicherte Pfad verwendet, um den Befehl auszuführen. Falls nein, wird der vollständige Pfad des Befehls gesucht und zur Hash-Tabelle hinzugefügt.
Syntax
hash [-lr] [-p file] [-dt] [name ...]
Einige Beispiele für häufig verwendete Optionen sind:
-l
: Listet die gespeicherten Pfade in einem Format auf, das als Eingabe wiederverwendet werden kann. Diese Option ist besonders nützlich, wenn die Liste der gehashten Pfade in einem Skript oder einer Konfigurationsdatei verwendet wird.-r
: Löscht alle gespeicherten Pfade.-p path
: Fügt den Pfad der angegebenen Datei dem Hash-Table hinzu.-d
: Löscht den Pfad der angegebenen Datei aus dem Hash-Table.-t
: Zeigt den Pfad der angegebenen Datei an.
Beispiele
Speichern des Pfads von der ausführbaren Datei für den Befehl ls
in der hash
-Tabelle
Um den Pfad einer ausführbaren Datei zu speichern, verwendet man einfach das hash
Kommando mit dem Namen der Datei:
$ hash
hash: hash table empty
$ hash ls
$ hash
hits command
0 /bin/ls
$
Wenn der Befehl ls
in der Shell ausführt wird, würde der gespeicherte Pfad verwendet werden, anstatt den Pfad jedes Mal neu zu suchen.
Auflisten aller gespeicherten Pfade mit der Option -l
$ hash
hits command
0 /bin/ls
$ hash -l
builtin hash -p /bin/ls ls
$
Wir bekommen eine Liste aller gespeicherten Pfade, zusammen mit dem Namen der ausführbaren Datei. In einem Format, das verwendet werden kann, um es auf einem anderen Rechner wieder einzufügen.
Löschen des Pfads für ls
aus der hash
-Tabelle mit der Option -d
$ hash
hits command
0 /bin/ls
$ hash -d ls
$ hash
hash: hash table empty
$
Damit wird der Pfad der ausführbaren Datei für ls
aus der Tabelle gelöscht.
Hinzufügen des Pfads /usr/local/bin/ls zur hash
-Tabelle mit der Option -p
$hash -r
$hash -p /usr/local/bin/ls ls
$hash
hits command
0 /usr/local/bin/ls
$
Mit dem Befehl fügen wir den Pfad /usr/local/bin/ls
der hash
-Tabelle hinzu. Wir können auch den Namen der Datei verwenden, um auf diese Datei zugreifen zu können, ohne den vollständigen Pfad angeben zu müssen.
Anzeigen des Pfads für ls
mit der Option -t
$ hash
hits command
0 /usr/local/bin/ls
$ hash -t ls
/usr/local/bin/ls
$
Löschen aller gespeicherten Pfade aus der hash
-Tabelle mit der Option -r
$ hash
hits command
0 /usr/local/bin/ls
$ hash -r
$ hash
hash: hash table empty
$
Damit haben wir alle gespeicherten Pfade aus der hash
-tabelle gelöscht.
Links
- https://linuxtldr.com/hash-command/: Kurze Zusammenfassung des
hash
-Befehls in Linux - https://www.ibm.com/docs/en/aix/7.2?topic=h-hash-command: IBM-Dokumentation über den
hash
-Befehl in AIX (Unix-basiertes Betriebssystem) - https://www.geeksforgeeks.org/hash-command-in-linux-with-examples/: Erklärungen und Beispiele zum
hash
-Befehl in Linux auf GeeksforGeeks - https://man7.org/linux/man-pages/man1/hash.1.html: Offizielle Manpage (Handbuchseite) des
hash
-Befehls in Linux mit umfassenden Informationen zur Verwendung und Optionen