Hash: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
K (Textersetzung - „== Testfragen ==↵<div class="toccolours mw-collapsible mw-collapsed">↵''Testfrage 1''↵<div class="mw-collapsible-content">'''Antwort1'''</div>↵</div>↵<div class="toccolours mw-collapsible mw-collapsed">↵''Testfrage 2''↵<div class="mw-collapsible-content">'''Antwort2'''</div>↵</div>↵<div class="toccolours mw-collapsible mw-collapsed">↵''Testfrage 3''↵<div class="mw-collapsible-content">'''Antwort3'''</div>↵</div>↵<div class="toccolours mw-collapsible mw-collapsed">↵''Testfrage 4…)
 
(43 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Pfad-Cache =
{{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 6: 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.  
* Wer am Abend wissen will, womit er sich den ganzen Tag über beschäftigt hat, kann mit diesem Kommando zumindest Hinweise bekommen (oder er wirft einen Blick auf die '''.bash_history''')
== Verwerfen alle gespeicherten Pfade ==
hash -r v
= hash  =
Ein auf der Kommandozeile 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.
Diese Hashtabelle wird zuerst konsultiert (es sei denn hashall ist nicht gesetzt; vergleiche set) und nur wenn der Pfad zu einem Kommando dort nicht erfasst wird, werden die Verzeichnispfade betrachtet.
Beim nächsten Zugriff auf dasselbe Kommando wird man den Geschwindigkeitszuwachs deutlich spüren.


Zur Anzeige der Hashtabelle ist »hash« ohne Angabe von Argumenten aufzurufen:
=== Verwerfen alle Pfade ===
$ '''hash -r'''


  hash
=== Anzeige der Hashtabelle ===
  $ '''hash'''
  hits    command
  hits    command
     2    /bin/ls
     2    /bin/ls
Zeile 33: Zeile 43:
     1    /usr/bin/man
     1    /usr/bin/man


Ein Problem besteht nun mit gleichnamigen Kommandos. Liegt eines in der Hashtabelle vor, so kann auf das andere nur über die vollständige Pfadangabe zugegriffen werden.
=== 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


Soll dieses "benachteiligte" Kommando nun vermehrt eingesetzt werden, ist ein Löschen der Hashtabelle mittels »-r« sinnvoll:  
$ '''hash -r'''
$ '''hash'''
hash: hash table empty


  hash -r
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).
  hash
 
hash: hash table empty
=== Pfad zur Tabelle hinzufügen ===
  $ '''hash -p <Pfad_zum_Kommando>'''
 
== Syntax ==
  $ '''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
|}
 
=== Umgebungsvariablen ===
=== Exit-Status ===
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-Pages ===
=== Info-Pages ===
== Siehe auch ==
== Links ==
=== Projekt ===
=== Weblinks ===


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).


Des Weiteren kann mit »-p <Pfad_zum_Kommando>« ein solches mit vorgegebenem Pfad der Tabelle hinzufügen.




[[Kategorie:Bash:Builtin]]
[[Kategorie:Bash/Builtin]]
[[Kategorie:Bash:Interaktiv]]
[[Kategorie:Bash/Interaktiv]]
[[Kategorie:Linux:Befehl]]
[[Kategorie:Linux/Befehl]]
{{DEFAULTSORT:hash}}

Aktuelle Version vom 24. Februar 2024, 16:47 Uhr

hash - Verwaltung der Hash-Tabelle für Kommando-Pfade

Beschreibung[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

hash ist ein interner Befehl der Bash und muss nicht separat installiert werden

Anwendungen[Bearbeiten | Quelltext bearbeiten]

Pfad-Cache[Bearbeiten | Quelltext bearbeiten]

$ 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[Bearbeiten | Quelltext bearbeiten]

$ hash -r

Anzeige der Hashtabelle[Bearbeiten | Quelltext bearbeiten]

$ 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[Bearbeiten | Quelltext bearbeiten]

  • 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[Bearbeiten | Quelltext bearbeiten]

$ hash -p <Pfad_zum_Kommando>

Syntax[Bearbeiten | Quelltext bearbeiten]

$ hash [-lr] [-p Pfadname] [-dt] [Name ...]

Optionen[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

Option Beschreibung
NAME Jeder NAME wird in PATH gesucht und in die Liste der gespeicherten Befehle hinzugefügt

Umgebungsvariablen[Bearbeiten | Quelltext bearbeiten]

Exit-Status[Bearbeiten | Quelltext bearbeiten]

Gibt Erfolg zurück, es sei denn, NAME wird nicht gefunden oder es wird eine ungültige Option angegeben.

Konfiguration[Bearbeiten | Quelltext bearbeiten]

Dateien[Bearbeiten | Quelltext bearbeiten]

Sicherheit[Bearbeiten | Quelltext bearbeiten]

Dokumentation[Bearbeiten | Quelltext bearbeiten]

RFC[Bearbeiten | Quelltext bearbeiten]

Man-Pages[Bearbeiten | Quelltext bearbeiten]

Info-Pages[Bearbeiten | Quelltext bearbeiten]

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Links[Bearbeiten | Quelltext bearbeiten]

Projekt[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]