Hash: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
K Textersetzung - „== Syntax ==“ durch „== Aufruf ==“ |
||
(56 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{DISPLAYTITLE:hash}} | |||
'''hash''' - Verwaltung der Hash-Tabelle für Kommando-Pfade | |||
== Beschreibung == | |||
; Programmpfade merken oder anzeigen | |||
* Ermittelt und speichert den vollständigen Pfadnamen jedes Kommandos NAME | |||
* Wenn keine Argumente angegeben werden, werden Informationen über gespeicherte Kommandos angezeigt | |||
; Ein angegebenes Kommando muss von der Shell gesucht werden | |||
* Die Suche, vor allem wenn sie die Angaben aus PATH einschließt, kostet Zeit. | |||
* Deswegen merkt sich die Bash die Zugriffspfade zu allen externen Kommandos in einer Hashtabelle. | |||
; Hashtabelle wird zuerst konsultiert | |||
* Nur wenn der Pfad zu einem Kommando dort nicht erfasst wird, werden die Verzeichnispfade durchsucht | |||
** Es sei denn ''hashall'' ist nicht gesetzt (siehe [[set]]) | |||
* Beim nächsten Zugriff auf das Kommando wird haman den Geschwindigkeitszuwachs spüren. | |||
== Installation == | |||
''hash'' ist ein [[:Kategorie:Bash/Builtin|interner Befehl]] der [[Bash]] und muss nicht separat installiert werden | |||
== Anwendungen == | |||
=== Pfad-Cache === | |||
$ '''hash''' | $ '''hash''' | ||
Zeile 7: | Zeile 27: | ||
* Wird ein Programm erneut gestartet, kann die zeitaufwendige Suche entlang des Pfades entfallen. | * Wird ein Programm erneut gestartet, kann die zeitaufwendige Suche entlang des Pfades entfallen. | ||
* Bei der Gelegenheit wird auch gleich angezeigt, wie oft das Programm gestartet wurde. | * Bei der Gelegenheit wird auch gleich angezeigt, wie oft das Programm gestartet wurde. | ||
== Verwerfen alle | === Verwerfen alle Pfade === | ||
hash -r | $ '''hash -r''' | ||
=== Anzeige der Hashtabelle === | |||
$ '''hash''' | |||
hits command | |||
2 /bin/ls | |||
1 /bin/mv | |||
6 /bin/sh | |||
8 /usr/bin/vi | |||
1 /bin/chmod | |||
3 /bin/date | |||
1 /usr/bin/id | |||
1 /usr/bin/man | |||
=== Gleichnamigen Kommandos === | |||
* Liegt eines in der Hashtabelle vor, so kann auf das andere nur über die vollständige Pfadangabe zugegriffen werden | |||
* Soll dieses "benachteiligte" Kommando nun vermehrt eingesetzt werden, ist ein Löschen der Hashtabelle mittels »-r« sinnvoll | |||
$ '''hash -r''' | |||
$ '''hash''' | |||
hash: hash table empty | |||
Indem »hash« mit einem oder mehreren Kommandonamen aufgerufen wird, werden diese Kommandos gesucht und in die Hashtabelle aufgenommen; sie werden jedoch nicht gestartet (sinnvoll ist dies eventuell in Startskripten). | |||
=== Pfad zur Tabelle hinzufügen === | |||
$ '''hash -p <Pfad_zum_Kommando>''' | |||
== Aufruf == | |||
$ '''hash [-lr] [-p Pfadname] [-dt] [Name ...]''' | |||
=== Optionen === | |||
{| class="wikitable sortable options" | |||
|- | |||
! Option !! Beschreibung | |||
|- | |||
| -d || Vergessen des Speicherortes für jeden NAME | |||
|- | |||
| -l || Anzeige in einem Format, das als Eingabe wiederverwendet werden kann | |||
|- | |||
| -p || Pfadname verwendet PATHNAME als den vollständigen Pfadnamen von NAME | |||
|- | |||
| -r || vergisst alle gespeicherten Pfade | |||
|- | |||
| -t || gibt den Speicherort jedes NAMENS aus, wobei jedem Speicherort der entsprechende NAME vorangestellt wird, wenn mehrere NAMEs angegeben sind | |||
|} | |||
=== Parameter === | |||
{| class="wikitable options" | |||
|- | |||
! Option !! Beschreibung | |||
|- | |||
| NAME || Jeder NAME wird in PATH gesucht und in die Liste der gespeicherten Befehle hinzugefügt | |||
|} | |||
=== Umgebung === | |||
=== Rückgabewert === | |||
Gibt Erfolg zurück, es sei denn, NAME wird nicht gefunden oder es wird eine ungültige Option angegeben. | |||
== Konfiguration == | |||
=== Dateien === | |||
== Sicherheit == | |||
== Dokumentation == | |||
=== RFC === | |||
=== Man-Page === | |||
=== Info-Pages === | |||
== Siehe auch == | |||
== Links == | |||
=== Projekt === | |||
=== Weblinks === | |||
[[ | [[Kategorie:Bash/Builtin]] | ||
[[ | [[Kategorie:Bash/Interaktiv]] | ||
[[Kategorie:Linux/Befehl]] | |||
{{DEFAULTSORT:hash}} |
Aktuelle Version vom 12. November 2024, 18:44 Uhr
hash - Verwaltung der Hash-Tabelle für Kommando-Pfade
Beschreibung
- Programmpfade merken oder anzeigen
- Ermittelt und speichert den vollständigen Pfadnamen jedes Kommandos NAME
- Wenn keine Argumente angegeben werden, werden Informationen über gespeicherte Kommandos angezeigt
- Ein angegebenes Kommando muss von der Shell gesucht werden
- Die Suche, vor allem wenn sie die Angaben aus PATH einschließt, kostet Zeit.
- Deswegen merkt sich die Bash die Zugriffspfade zu allen externen Kommandos in einer Hashtabelle.
- Hashtabelle wird zuerst konsultiert
- Nur wenn der Pfad zu einem Kommando dort nicht erfasst wird, werden die Verzeichnispfade durchsucht
- Es sei denn hashall ist nicht gesetzt (siehe set)
- Beim nächsten Zugriff auf das Kommando wird haman den Geschwindigkeitszuwachs spüren.
Installation
hash ist ein interner Befehl der Bash und muss nicht separat installiert werden
Anwendungen
Pfad-Cache
$ hash
- (ohne Parameter) zeigt die Liste der gemerkten Pfade zu den Programmen an.
- Um die Zugriffe auf Programme zu beschleunigen, verwaltet die Bash einen internen Cache der Pfade auf bereits gestartete Programme.
- Wird ein Programm erneut gestartet, kann die zeitaufwendige Suche entlang des Pfades entfallen.
- Bei der Gelegenheit wird auch gleich angezeigt, wie oft das Programm gestartet wurde.
Verwerfen alle Pfade
$ hash -r
Anzeige der Hashtabelle
$ hash hits command 2 /bin/ls 1 /bin/mv 6 /bin/sh 8 /usr/bin/vi 1 /bin/chmod 3 /bin/date 1 /usr/bin/id 1 /usr/bin/man
Gleichnamigen Kommandos
- Liegt eines in der Hashtabelle vor, so kann auf das andere nur über die vollständige Pfadangabe zugegriffen werden
- Soll dieses "benachteiligte" Kommando nun vermehrt eingesetzt werden, ist ein Löschen der Hashtabelle mittels »-r« sinnvoll
$ hash -r $ hash hash: hash table empty
Indem »hash« mit einem oder mehreren Kommandonamen aufgerufen wird, werden diese Kommandos gesucht und in die Hashtabelle aufgenommen; sie werden jedoch nicht gestartet (sinnvoll ist dies eventuell in Startskripten).
Pfad zur Tabelle hinzufügen
$ hash -p <Pfad_zum_Kommando>
Aufruf
$ hash [-lr] [-p Pfadname] [-dt] [Name ...]
Optionen
Option | Beschreibung |
---|---|
-d | Vergessen des Speicherortes für jeden NAME |
-l | Anzeige in einem Format, das als Eingabe wiederverwendet werden kann |
-p | Pfadname verwendet PATHNAME als den vollständigen Pfadnamen von NAME |
-r | vergisst alle gespeicherten Pfade |
-t | gibt den Speicherort jedes NAMENS aus, wobei jedem Speicherort der entsprechende NAME vorangestellt wird, wenn mehrere NAMEs angegeben sind |
Parameter
Option | Beschreibung |
---|---|
NAME | Jeder NAME wird in PATH gesucht und in die Liste der gespeicherten Befehle hinzugefügt |
Umgebung
Rückgabewert
Gibt Erfolg zurück, es sei denn, NAME wird nicht gefunden oder es wird eine ungültige Option angegeben.