# Kommandozeile

Die Kommandozeile oder Befehlszeile ist ein Teil eines Computerprogramms, das eine Textzeile als Eingabe vom Benutzer entgegennimmt und im Kontext als Kommando bzw. Befehl interpretiert. Im Englischen wird sie als command-line oder command prompt (Eingabeaufforderung) bezeichnet, denn sehr oft wird ein Prompt zur Kennzeichnung verwendet.
Die englische Bezeichnung command-line interface, kurz CLI, bezeichnet die Verwendung von Kommandozeilen für die Interaktion mit einem Benutzer. CLI wird als das Gegenteil und der historische Vorläufer des graphical user interface, kurz GUI, angesehen, obwohl es auch unter grafischen Benutzeroberflächen Kommandozeilen gibt.
Ein command line interface (CLI) ist die einfachste Methode zur Interaktion eines Menschen mit einem Computer, und somit eine Möglichkeit der Mensch-Computer-Interaktion. Dabei werden dem Computer Textzeilen entweder direkt über die Tastatur oder in Form eines Scripts übergeben, die dieser anschließend ausführt.

## Technik

Die Eingabe folgt einer Syntax, die meist aus einem Kommando und dazugehörigen Parametern besteht. Die Kommandos oder Befehle werden als Zeichenketten über die Tastatur eingegeben. Üblicherweise sind diese dem Englischen entnommen, teilweise als Abkürzung wie etwa bei CP/M und PC-kompatiblem DOS der Befehl dir für directory oder bei Unix-Systemen der Befehl ls für list (directory). Selten wurden die Befehle auch ins Deutsche übersetzt, etwa bei QBasic (das u. a. mit MS-DOS 5.0 bis 6.22 ausgeliefert wurde).
Die Kommandos werden dabei von einem Interpreter ausgeführt, wobei jedes Kommando unterschiedliche Parameter entgegennehmen kann, die die Ausführung beeinflussen. Es gibt auch mehrzeilige Kommandos und Kommandoblöcke (die sich über mehrere Zeilen erstrecken), etwa bei Schleifen.
Zur Kennzeichnung, dass bzw. wo ein Kommando eingegeben werden kann, signalisiert ein command prompt, dass das Programm auf eine Eingabe wartet oder dafür bereit ist. Der Prompt signalisiert damit dem Benutzer, dass der Computer oder das Programm bereit ist und auf eine Eingabe wartet, ansonsten jedoch untätig ist (englisch idle). Umgekehrt ist bei vielen Kommandozeilen der Prompt während der Ausführung eines Kommandos nicht verfügbar und signalisiert somit das Gegenteil, also dass zu diesem Zeitpunkt kein Kommando ausgeführt werden kann.
Technisch gesehen ist die Kommandozeile eine durch ein Programm angebotene Eingabezeile, die mit einem gewissen Umfang an Editorfähigkeiten ausgestattet ist. Die Eingabe wird mit dem Betätigen einer spezifischen Taste beendet. Bei PCs ist dies die Eingabetaste, die das Senden des Carriage-Return- und/oder Linefeed-Zeichens an das Programm bewirkt, das die Eingabezeile geöffnet hat. Als Reaktion wird der vom Benutzer eingegebene Kommandozeilentext interpretiert; beispielsweise führt ein Kommandozeileninterpreter bei fehlerfreier Erkennung der Eingabe die entsprechenden Kommandos aus, die ihre eventuellen Ausgaben direkt anschließend auf den Bildschirm bringen. Danach erscheint eine erneute Prompt-Sequenz, die signalisiert, dass die Eingabe einer weiteren Kommandozeile möglich ist.

## Anwendungsbeispiele
### Betriebssysteme

Kommandozeilen waren historisch die ersten Methoden zur Interaktion mit Betriebssystemen. Sie finden sich daher auch auf Terminals oder Terminalemulationen. Bei vielen Betriebssystemen wird die Kommandozeile von einer Shell oder einem Kommandozeileninterpreter (auch Befehlsinterpreter) ausgewertet und die entsprechende Funktion ausgeführt. Kommandozeilen benötigen lediglich den Textmodus, sind bei modernen Betriebssystemen jedoch auch im Grafikmodus verfügbar, etwa als Terminalemulation.
Die Ausführung der Befehle wird meist direkt aus der Zeile durch zusätzlich angegebene Parameter gesteuert (Kommandozeilenparameter). Programme, die den Benutzer interaktiv befragen, sind auf dieser Ebene eher unüblich, aber möglich (im Textmodus beispielsweise über eine zeichenorientierte Benutzerschnittstelle). Ein Kommandozeilenprogramm läuft somit typischerweise mit den gegebenen Parametern einmal ab, bevor eine erneute Befehlseingabe möglich ist. Ein automatisiertes Abarbeiten mehrerer Kommandos wird auf Unix-artigen Betriebssystemen als Shell-Script bezeichnet. Unter CP/M und unter DOS ist die Bezeichnung dafür Stapelverarbeitung (batch). Die Dateien, die die Kommandos enthalten, heißen entsprechend Stapelverarbeitungsdateien.

### Interpretersprachen

Bei vielen Skriptsprachen (Skripte verarbeitende Programmiersprachen) gibt es neben dem Skriptmodus (vgl. Shellskript) auch einen interaktiven Modus. Wird der Interpreter ohne einen Skript als Eingabe gestartet, so stellt dieser eine Kommandozeile (meist mit Prompt), in der Eingaben unmittelbar Zeile für Zeile verarbeitet werden.
Interpreter mit interaktivem Modus sind z. B. BASIC, Perl, PHP, Python.

### Anwendungsprogramme

Einige Anwendungsprogramme bieten Kommandozeilen, teilweise alternativ zu einer grafischen Benutzeroberfläche. Bei der mathematischen Software Matlab ist sie beispielsweise ein wichtiger Teil der ansonsten grafischen Oberfläche. Auch bei CAD-Programmen wie AutoCAD ist dies der Fall. Einige Dateimanager (die de facto zeichenorientierten Benutzerschnittstellen darstellen), beispielsweise der Norton Commander und dessen zahlreiche Clones wie der Midnight Commander, bieten Zugriff auf die Shell, in der sie laufen. Auch Debugger bieten häufig eine Kombination von Kommandozeile und anderen Elementen zu ihrer Steuerung an. Spezielle Varianten der Kommandozeile sind in FTP-Client-Programmen für den Textmodus zu finden. Manche Telnet-Clients bieten neben der eigentlichen Funktionalität zusätzliche eine Kommandozeile zur Steuerung an, die dabei typisch über eine sogenannte Escape-Tastenkombination aufrufbar ist.

### Computerspiele

Computerspiele aus dem PC-Bereich, genauergesagt deren zugrundeliegenden Spiel-Engines, bieten oft Kommandozeilen an. Üblicherweise ausgeblendet und für das eigentliche Spielen nicht notwendig, ermöglichen sie eine alternative Konfiguration oder auch tiefgreifendere Beeinflussung des Spiels. Sie vereinfacht in der Entwicklung das Testen von Programmcode und lässt gezielt einzelne Zustände zur Fehlersuche erreichen, wie auch die Eingabe von Cheat-Befehlen durch Spieler. Ein Beispiel für eine solche Konsole ist die Quake-Engine.
Bei Textadventures ist die Kommandozeile die alleinige Schnittstelle zwischen Spieler und Spiel. Um sich im Spiel zu bewegen und Aktionen auszulösen, müssen entsprechende Befehle eingegeben werden, wie z. B. öffne tür, norden, nimm fackel.