Beispiel für die Vervollständigung der Befehlszeile in Bash .
Beispiel für die Befehlszeilenvervollständigung in PowerShell mit IntelliSense .

Die Befehlszeilenvervollständigung (auch Tabulatorvervollständigung genannt ) ist ein gängiges Merkmal von Befehlszeileninterpretern , bei dem das Programm automatisch teilweise eingegebene Befehle vervollständigt.

Kommandozeileninterpreter sind Programme, die es dem Benutzer ermöglichen, über eine Kommandozeilenschnittstelle (CLI) mit dem Betriebssystem zu interagieren, indem er Befehle an der Eingabeaufforderung eingibt. Dies steht im Gegensatz zur Bedienung einer grafischen Benutzeroberfläche (GUI) mit Mausklicks. Die Befehlszeilenvervollständigung erlaubt es dem Benutzer, die ersten Zeichen eines Befehls, Programms oder Dateinamens einzugeben und anschließend die entsprechende Taste (normalerweise Strg+Alt+F Tab ↹) zu drücken, um den Rest zu vervollständigen. Mit Strg+F oder Strg+O kann der Benutzer den Befehl ausführen bzw. die Datei öffnen. Return↵ Enter

Die Befehlszeilenvervollständigung ist in vielerlei Hinsicht nützlich, wie die Animation zu diesem Artikel veranschaulicht. Häufig verwendete Befehle, insbesondere solche mit langen Namen, lassen sich so mit weniger Tastenanschlägen aufrufen. Befehle mit langen oder schwer zu buchstabierenden Dateinamen können eingegeben werden, indem man die ersten Zeichen tippt und eine Vervollständigungstaste drückt. Dadurch wird der Befehl oder Dateiname vervollständigt. Bei mehreren möglichen Vervollständigungen listen einige Befehlszeileninterpreter, insbesondere Unix-Shells, alle möglichen Vervollständigungen auf, die mit diesen Zeichen beginnen. Der Benutzer kann weitere Zeichen eingeben und erneut die Taste drücken, um eine neue, eingeschränkte Liste zu erhalten, falls die eingegebenen Zeichen immer noch nicht eindeutig sind. Alternativ kann der Befehl/Dateiname mit einem Leerzeichen am Ende vervollständigt werden. Eine alternative Form der Vervollständigung durchläuft alle passenden Ergebnisse, wenn die Eingabe nicht eindeutig ist. Tab ↹

Vervollständigbare Elemente können Befehle, Argumente, Dateinamen und andere Entitäten umfassen, abhängig vom jeweiligen Interpreter und dessen Konfiguration. Die Befehlszeilenvervollständigung funktioniert in der Regel nur im interaktiven Modus . Das heißt, sie kann nicht zur Vervollständigung von teilweise eingegebenen Befehlen in Skripten oder Batchdateien verwendet werden , selbst wenn die Vervollständigung eindeutig ist. Die Bezeichnung „ Tabulatorvervollständigung“ rührt daher, dass die Befehlszeilenvervollständigung häufig durch Drücken der Tabulatortaste aufgerufen wird .

Geschichte

Die Tab-Vervollständigung tauchte früh in der Computergeschichte auf. Eines der ersten Beispiele fand sich im Berkeley Timesharing System für den SDS 940 : War eine eingegebene Zeichenkette eindeutig, vervollständigte der Interpreter sie automatisch ohne Benutzerbefehl. War die Zeichenkette jedoch mehrdeutig, geschah nichts. Diese Funktion war ein zweischneidiges Schwert, da sie häufige Tippfehler nicht gut verarbeitete .

Später übernahmen die Entwickler des Betriebssystems TENEX diese Idee, nahmen aber eine entscheidende Änderung vor. Sie führten die „Escape-Erkennung“ ein, bei der die Autovervollständigung nur dann erfolgte, wenn der Benutzer die Escape-Taste drückte (daher der Name). TENEX erweiterte die Autovervollständigung außerdem von Programmnamen (wie im Berkeley-System) auf Programm- und Dateinamen. [ 1 ]

Der TENEX-Nachfolger TOPS-20 verlagerte die Befehlszeilenvervollständigung vom Befehlsinterpreter auf das Betriebssystem mittels des Systemaufrufs COMND JSYS und stellte sie so anderen Benutzeranwendungen zur Verfügung. [ 2 ] Von dort wurde sie von Unix übernommen .

Unabhängig davon verfügte der Computer CAB 500 (1960) über eine Programmiersprache mit französischer Schlüsselwort-Autovervollständigung namens PAF.

Beispiel

Um die Datei introduction-to-command-line-completion.html mit Firefox zu öffnen , gibt man Folgendes ein:

Firefox Einführung zur Befehlszeilenvervollständigung.html 

Dieser Befehl ist zu lang zum Eintippen. Stattdessen können wir die Befehlszeilenvervollständigung verwenden.

zügige Fertigstellung

Das folgende Beispiel zeigt, wie die Befehlszeilenvervollständigung in Bash funktioniert . Andere Befehlszeilen-Shells verhalten sich möglicherweise etwas anders.

Zuerst geben wir die ersten drei Buchstaben unseres Befehls ein:

Tanne 

Dann drücken wir die Eingabetaste, und da der einzige Befehl in unserem System, der mit „fir“ beginnt, „firefox“ ist, wird er vervollständigt zu: Tab ↹

Firefox 

Dann beginnen wir mit der Eingabe des Dateinamens:

Firefox i 

Doch diesmal 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 wollten, weiß aber, dass die Datei mit „introduction-to-“ beginnen muss, daher wird der Befehl wie folgt vervollständigt:

Firefox-Einführung 

Jetzt tippen wir "c":

Firefox-Einführung in c 

Nach dem Drücken wird der vollständige Dateiname angezeigt: Tab ↹

Firefox Einführung zur Befehlszeilenvervollständigung.html 

Kurz gesagt, wir haben Folgendes eingegeben:

Färberdistel​​Tab ↹Tab ↹Tab ↹

Das sind nur acht Tastenanschläge, deutlich weniger als die 52 Tastenanschläge, die wir ohne die Vervollständigung der Befehlszeile hätten eingeben müssen.

Rotierende Fertigstellung

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

Wir gehen genauso vor wie bei der Aufforderung zur Fertigstellung, bis wir Folgendes erreicht haben:

Firefox i 

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

Firefox introduction-to-bash.html 

Wir drängen erneut und erhalten: Tab ↹

Firefox Einführung zur Befehlszeilenvervollständigung.html 

Kurz gesagt, wir haben Folgendes eingegeben:

Tanne​Tab ↹Tab ↹Tab ↹

Das sind nur sieben Tastendrücke, vergleichbar mit der Eingabeaufforderung für die Vervollständigung. Das funktioniert am besten, wenn wir wissen, welche Möglichkeiten der Interpreter durchläuft.

Vervollständigung in verschiedenen Befehlszeilenschnittstellen

  • Unix-Shells , darunter Bash (die Standard-Shell in den meisten Linux-Distributionen ) und ksh sowie viele andere, verfügen über eine lange Tradition fortschrittlicher und anpassbarer Vervollständigungsfunktionen. [ 3 ]
    • Die programmierbare Vervollständigung von Bash -Befehlen complete[ 4 ] ist seit der Beta-Version 2.04 [ 3 ] aus dem Jahr 2000 [ 5 ] verfügbar und bietet mindestens die Vervollständigung von Pfadnamen und Dateinamen.compgen
    • Für KornShell-Benutzer hängt die Dateinamenvervollständigung vom Wert der Variable EDITOR ab. Ist EDITOR auf „vi“ gesetzt, geben Sie einen Teil des Namens ein und anschließend ein Komma . Ist EDITOR auf „Emacs“ gesetzt , geben Sie ebenfalls einen Teil des Namens ein und anschließend ein Komma .Escape\EscapeEscape
    • Die Z-Shell (zsh) leistete Pionierarbeit bei der Unterstützung vollständig programmierbarer Befehlsvervollständigung. Dadurch können Benutzer die Parameter verschiedener, nicht zur Shell selbst gehörender Befehle automatisch vervollständigen lassen. Dies geschieht, indem die Shell mit Definitionen aller bekannten Schalter sowie der entsprechenden Parametertypen initialisiert wird. So kann der Benutzer beispielsweise `zsh --get` eingeben, woraufhin die Shell nur archivierte gzip-Archive aus dem Dateisystem vervollständigt und Dateien überspringt, die mit den Eingabeparametern inkompatibel sind. Eine moderne zsh-Installation enthält Vervollständigungsdefinitionen für über 500 Befehle.tar xzf Tab ↹
    • Tcsh bietet standardmäßig eine Vervollständigung für Datei-, Befehls- und Variablennamen, die über die entsprechende Option aktiviert wird . Der integrierte Befehl „complete“ ermöglicht eine vollständig programmierbare Vervollständigung. Der Quellcode enthält die Datei „complete.tcsh“ mit zahlreichen Beispielen für die Syntax der Vervollständigung.Tab ↹
  • Windows PowerShell , die erweiterbare Befehlsshell von Microsoft, die auf objektorientierter Programmierung und dem Microsoft .NET Framework basiert, bietet leistungsstarke und anpassbare Vervollständigungsfunktionen, die denen traditioneller Unix-Shells ähneln. [ 6 ] [ 7 ]
  • Der Befehlsprozessor cmd.exe von Windows NT -basierten Systemen unterstützt die grundlegende Vervollständigung. Es ist möglich, eine separate Tastenkombination nur für die Suche nach Verzeichnisnamen zu verwenden.
  • cmd.exe /F:ONAktiviert die Vervollständigung von Datei- und Verzeichnisnamen (standardmäßig Strg+F und Strg+D). Weitere Informationen finden Sie hier.cmd.exe /?
  • Mit TweakUI können die Tasten konfiguriert werden, die für die Vervollständigung von Dateinamen und Verzeichnisnamen verwendet werden. [ 8 ]
  • Der MS-DOS -Befehlsprozessor COMMAND.COM bot keine Befehlszeilenvervollständigung: Durch Drücken der Tabulatortaste wurde lediglich der Cursor bewegt. Verschiedene erweiterte Shells für MS-DOS, wie beispielsweise 4DOS , die FreeDOS- Version von COMMAND.COM oder Enhanced DOSKEY.COM , verfügen jedoch über eine Unix-ähnliche Tabulatorvervollständigung.
  • Far Manager bietet neben seinen Dateiverwaltungsfunktionen auch eine Befehlshistorie und eine Zeilenvervollständigung für Windows.

Siehe auch

Referenzen

  1. ^ „Ursprünge und Entwicklung von TOPS-20“ . www.opost.com . Archiviert vom Original am 1. August 2020. Abgerufen am 10. September 2006 .
  2. ^ DECSYSTEM-20 Assembler-Sprachhandbuch
  3. ^ a b „Produktiver arbeiten mit Bash 2.x/3.x“ . www.caliban.org .
  4. ^ "Bash-Referenzhandbuch" . tiswww.case.edu .
  5. ^ "Index von /gnu/bash" . ftp.swin.edu.au .
  6. ^ „Der PowerShell-Typ“ . thepowershellguy.com .
  7. ^ „Der PowerShell-Typ“ . thepowershellguy.com .
  8. ^ „Simon Peyton Jones bei Microsoft Research“ . Microsoft .

Unix-Shells

Windows-Befehlsinterpreter

(Bitte beachten Sie den Abschnitt „Gilt für“ in jedem Artikel.)