Befehlszeilenvervollständigung - Command-line completion

Beispiel für die Befehlszeilenvervollständigung in Bash .
Beispiel für die Befehlszeilenvervollständigung in PowerShell mit Intellisense .

Die Befehlszeilenvervollständigung (auch Tabulatorvervollständigung ) ist eine gängige Funktion von Befehlszeileninterpretern , bei denen das Programm teilweise eingegebene Befehle automatisch ausfüllt.

Befehlszeileninterpreter sind Programme, die es einem Benutzer ermöglichen, mit dem zugrunde liegenden Betriebssystem zu interagieren, indem er Befehle an einer Eingabeaufforderung über eine Befehlszeilenschnittstelle (CLI) eingibt, im Gegensatz zum Zeigen und Klicken einer Maus in einer grafischen Benutzeroberfläche (GUI). Die Befehlszeilenvervollständigung ermöglicht es dem Benutzer, die ersten paar Zeichen eines Befehls, Programms oder Dateinamens einzugeben und eine Vervollständigungstaste (normalerweise Tab ↹) zu drücken , um den Rest des Elements auszufüllen. Der Benutzer drückt dann Returnoder ↵ Enter, um den Befehl auszuführen oder die Datei zu öffnen.

Die Befehlszeilenvervollständigung ist in mehrfacher Hinsicht nützlich, wie die Animation zu diesem Artikel veranschaulicht. Für häufig aufgerufene Befehle, insbesondere solche mit langen Namen, sind weniger Tastenanschläge erforderlich. Befehle mit langen oder schwer zu buchstabierenden Dateinamen können eingegeben werden, indem Sie die ersten paar Zeichen eingeben und eine Abschlusstaste drücken, die den Befehl oder den Dateinamen vervollständigt. Bei mehreren möglichen Vervollständigungen listen einige Kommandozeilen-Interpreter, insbesondere Unix-Shells, alle möglichen Vervollständigungen beginnend mit diesen wenigen Zeichen auf. Der Benutzer kann weitere Zeichen eingeben und Tab ↹erneut drücken , um eine neue, eingegrenzte Liste anzuzeigen, wenn die eingegebenen Zeichen immer noch mehrdeutig sind, oder den Befehl/Dateinamen mit einem abschließenden Leerzeichen vervollständigen. Eine alternative Form der Vervollständigung durchläuft alle übereinstimmenden Ergebnisse, wenn die Eingabe mehrdeutig ist.

Ergänzbare Elemente können Befehle, Argumente, Dateinamen und andere Entitäten umfassen, abhängig vom spezifischen Interpreter und seiner Konfiguration. Die Befehlszeilenvervollständigung funktioniert im Allgemeinen nur im interaktiven Modus . Das heißt, es kann nicht aufgerufen werden, um teilweise eingegebene Befehle in Skripts oder Batchdateien abzuschließen, selbst wenn die Vervollständigung eindeutig ist. Der Name Tabulatorvervollständigung kommt daher, dass die Befehlszeilenvervollständigung oft durch Drücken der Tabulatortaste aufgerufen wird .

Geschichte

Die Tab-Vervollständigung wurde früh in der Computergeschichte angezeigt; eines der ersten Beispiele erschien im Berkeley Timesharing System für den SDS 940 , wo der Interpreter nichts tun würde, wenn eine eingegebene Zeichenfolge mehrdeutig war, aber wenn die Zeichenfolge nicht mehrdeutig war, würde er sie automatisch ohne Befehl des Benutzers vervollständigen. Diese Funktion funktionierte nicht gut mit den allzu häufigen Tippfehlern und war daher ein gemischter Segen. Diese Funktion wurde von den Entwicklern von Tenex imitiert , die eine wichtige Änderung vornahmen: Tenex verwendete eine "Escape-Erkennung", bei der der Interpreter nicht versuchen würde, eine automatische Vervollständigung durchzuführen, es sei denn, die Escape-Taste (also der Name) wurde vom Benutzer gedrückt . Die Domäne wurde auch von nur Programmnamen auf dem Berkeley-System auf sowohl Programmnamen als auch Dateien auf Tenex erweitert. Der Tenex-Nachkomme TOPS-20 verlagerte die Befehlszeilenvervollständigung vom Befehlsinterpreter über den COMND JSYS-Systemaufruf an das Betriebssystem, um sie anderen Benutzeranwendungen zur Verfügung zu stellen. Von dort wurde es von Unix ausgeliehen.

Beispiel

Um die Datei Introduction-to-command-line-completion.html mit Firefox zu öffnen, würde man Folgendes eingeben:

 firefox introduction-to-command-line-completion.html

Dies ist ein langer Befehl, den Sie eingeben müssen. Stattdessen können wir die Befehlszeilenvervollständigung verwenden.

Aufforderung zum Abschluss

Das folgende Beispiel zeigt, wie die Befehlszeilenvervollständigung in Bash funktioniert . Andere Befehlszeilen-Shells können etwas anders funktionieren.

Zuerst geben wir die ersten drei Buchstaben unseres Befehls ein:

 fir

Dann drücken wir Tab ↹und da der einzige Befehl in unserem System, der mit "fir" beginnt, "firefox" ist, wird er abgeschlossen zu:

 firefox

Dann beginnen wir mit der Eingabe des Dateinamens:

 firefox i

Aber dieses Mal ist Introduction-to-command-line-completion.html nicht die einzige Datei im aktuellen Verzeichnis, die mit "i" beginnt. Das Verzeichnis enthält auch die Dateien Introduction-to-bash.html und Introduction-to-firefox.html . Das System kann nicht entscheiden, welchen dieser Dateinamen wir eingeben möchten, aber es weiß, dass die Datei mit "introduction-to-" beginnen muss, daher wird der Befehl wie folgt abgeschlossen:

 firefox introduction-to-

Jetzt geben wir "c" ein:

 firefox introduction-to-c

Nach dem Drücken Tab ↹wird es zum ganzen Dateinamen vervollständigt:

 firefox introduction-to-command-line-completion.html

Kurz gesagt haben wir getippt:

 firTab ↹iTab ↹cTab ↹

Dies sind nur acht Tastenanschläge, was erheblich weniger als 52 Tastenanschläge sind, die wir ohne Befehlszeilenvervollständigung hätten eingeben müssen.

Rotierende Fertigstellung

Das folgende Beispiel zeigt, wie die Befehlszeilenvervollständigung mit rotierender Vervollständigung funktioniert, wie sie von CMD von Windows verwendet wird.

Wir befolgen das gleiche Verfahren wie bei der Aufforderung zum Abschluss, bis wir Folgendes haben:

 firefox i

Wir drücken Tab ↹einmal, mit dem Ergebnis:

 firefox introduction-to-bash.html

Wir drücken Tab ↹erneut und erhalten:

 firefox introduction-to-command-line-completion.html

Kurz gesagt haben wir getippt:

 firTab ↹iTab ↹Tab ↹

Dies sind nur sieben Tastenanschläge, vergleichbar mit der Vervollständigung im Aufforderungsstil. Dies funktioniert am besten, wenn wir wissen, durch welche Möglichkeiten der Dolmetscher rotieren wird.

Vervollständigung in verschiedenen Befehlszeilenschnittstellen

  • Unix-Shells , einschließlich Bash (die Standard-Shell in den meisten Linux-Distributionen ) und ksh unter vielen anderen, haben eine lange Tradition fortschrittlicher und anpassbarer Vervollständigungsmöglichkeiten.
    • Bash- programmierbare Vervollständigung completeund compgenBefehle sind seit der Beta-Version von 2.04 im Jahr 2000 verfügbar und bieten mindestens die Vervollständigung von Pfadnamen und Dateinamen.
    • Für KornShell-Benutzer hängt die Dateinamenvervollständigung vom Wert der EDITOR-Variablen ab. Wenn EDITOR auf vi gesetzt ist, geben Sie einen Teil des Namens ein und dann Escape, \. Wenn EDITOR auf Emacs eingestellt ist , geben Sie einen Teil des Namens ein und dann Escape, Escape.
    • Die Z-Shell (zsh) leistete Pionierarbeit bei der Unterstützung einer vollständig programmierbaren Vervollständigung, die es Benutzern ermöglicht, die Parameter verschiedener Befehle, die sich nicht auf die Shell selbst beziehen, automatisch von der Shell vervollständigen zu lassen Parametertypen. Dies erlaubt dem Benutzer, zB tar xzf Tab ↹ }} einzugeben und die Shell nur tarierte gzip-Archive aus dem aktuellen Dateisystem vervollständigen zu lassen, wobei Dateien übersprungen werden, die mit den Eingabeparametern nicht kompatibel sind. Eine moderne zsh-Installation enthält Vervollständigungsdefinitionen für über fünfhundert Befehle.
    • Tcsh bietet standardmäßige Datei-, Befehls- und Variablennamenvervollständigung, die mit aktiviert wird Tab ↹. Der eingebaute Befehl 'complete' bietet eine vollständig programmierbare Vervollständigung. Der Quellcode wird mit einer 'complete.tcsh'-Datei geliefert, die viele Beispiele seiner Vervollständigungssyntax enthält.
  • Windows PowerShell , die erweiterbare Befehlsshell von Microsoft, die auf objektorientierter Programmierung und dem Microsoft .NET Framework basiert , bietet leistungsstarke und anpassbare Vervollständigungsfunktionen ähnlich denen herkömmlicher Unix-Shells.
  • Der Befehlsprozessor cmd.exe von Windows NT- basierten Systemen unterstützt die grundlegende Vervollständigung. Es ist möglich, nur für übereinstimmende Verzeichnisnamen eine separate Tastenbelegung zu verwenden.
  • cmd.exe /F:ON aktiviert Zeichen zur Vervollständigung von Datei- und Verzeichnisnamen (standardmäßig ^F und ^D). Verwenden Sie cmd.exe /? für mehr Informationen.
  • TweakUI kann verwendet werden, um die Schlüssel zu konfigurieren, die für die Vervollständigung von Dateinamen und Verzeichnisnamen verwendet werden.
  • Der MS-DOS- Befehlsprozessor COMMAND.COM verfügte nicht über eine Befehlszeilenvervollständigung: Durch Drücken der Tabulatortaste wurde der Cursor nur weiter bewegt . Allerdings bieten verschiedene erweiterte Shells für MS-DOS, wie 4DOS , die FreeDOS- Version von COMMAND.COM oder das Enhanced DOSKEY.COM, eine Tab-Vervollständigung im Unix-Stil.
  • Far Manager bietet neben seinen Dateiverwaltungsfunktionen Befehlsverlauf und Zeilenvervollständigung für Windows.

Siehe auch

Verweise

Externe Links

Unix-Shells

Windows-Befehlsinterpreter

(Sehen Sie sich in jedem Artikel den Abschnitt "Gilt für" an.)