Kommandozeile (Command Line Interface, CLI)
Eine Befehlszeilenschnittstelle (Kommandozeile, Command Line Interface, CLI) ist eine textbasierte Benutzerschnittstelle (UI), mit der Nutzer Programme ausführen, Computerdateien verwalten und mit dem Computer interagieren. CLIs akzeptieren lediglich Tastatureingaben als Befehle.
Heute bieten die meisten Anbieter die grafische Benutzeroberfläche (Graphic User Interface, GUI) als Standard für Betriebssysteme (OS) wie Windows, Linux und macOS an. Viele aktuelle Unix-basierte Systeme bieten sowohl eine Kommandozeile, als auch eine grafische Benutzeroberfläche.
Die Benutzerschnittstelle von MS-DOS und die Befehls-Shell auf Windws Desktops sind Beispiele für Kommandozeilen. Darüber hinaus können Programmiersprachen-Entwicklungsplattformen wie Python Befehlszeilenschnittstellen unterstützen.
Nach der Einführung von GUI-basierten PC-Betriebssystemen wie Microsoft Windows und Apples klassischem macOS in den 1980er Jahren verlor die Befehlszeile an Popularität im Verbraucherbereich. Sie bleibt jedoch ein wichtiges Werkzeug für IT-Experten, Softwareentwickler, Systemadministratoren, Netzwerkadministratoren und viele andere, die eine präzisere und reproduzierbare Schnittstelle zu ihren Systemen bevorzugen.
Was ist eine Shell?
Bei der Datenverarbeitung bietet ein Shell-Programm Zugriff auf die Komponenten eines Betriebssystems. Über Shell können Benutzer (oder andere Programme) gewissermaßen in das System gelangen, um Programme auszuführen oder Konfigurationen zu verwalten. Die Shell markiert die Grenze zwischen Innen und Außen.
CLI-basierte Shells bieten Benutzern eine präzise und effiziente Art der Interaktion mit dem Betriebssystem, ohne den Overhead einer grafischen Benutzeroberfläche zu benötigen.
GUI-basierte Shells stellen einen niederschwelligen Zugang für Anfänger dar und enthalten parallel dazu eine CLI-basierte Shell für Systemadministratoren oder Power-User, die es vorziehen, mit einer Eingabeaufforderung zu interagieren.
Bash ist die am häufigsten verwendete Befehlszeilen-Shell für Unix-basierte Betriebssysteme, einschließlich Linux
Die Software hinter der Kommandozeile wird Befehlszeileninterpreter, Befehlsprozessor oder Befehlsinterpreter bezeichnet. Zwei bekannte CLI-Shells sind PowerShell für Windows und Bash für Linux und macOS.
Shells sind die äußerste Schicht des Betriebssystems und werden oft vom zugrunde liegenden Betriebssystem-Kernel getrennt. Eine Shell ist im Grunde eine Anwendung, wie jede andere auch und Sie können Sie austauschen oder eine zusätzliche installieren. Ein Betriebssystem kann mehr als eine verfügbare Shell haben, wie in den folgenden Beispielen gezeigt:
- In Microsoft Windows gibt es die Eingabeaufforderung und zeitgleich PowerShell. Mit beiden interagieren Anwender direkt mit dem Computer. Das Windows-Subsystem für Linux enthält außerdem auch eine eigene CLI.
- Linux und andere Unix-basierte Betriebssysteme stellen normalerweise Bash Standard-Shell bereit. Anwender können stattdessen aber auch C-Shell, Z-Shell und weitere Alternativen als Standard einstellen.
Da sich die Shell nur eine Schicht über dem Betriebssystem befindet, haben Benutzer hier zusätzliche Funktionen, die es in der GUI nicht gibt – zum Beispiel das Verschieben von Dateien in Systemordnern und das Löschen gesperrter Dateien.
Um den größten Nutzen aus der Verwendung einer CLI-Shell zu ziehen, sollten Benutzer eine Skriptsprache erlernen. Die meisten Befehlszeilen-Shells können Befehlsfolgen in einer Skript- oder Batchdatei speichern, die vollständig programmierbar ist. Shell-Skripting ist die Grundlage für die Automatisierung der Systemverwaltung.
Dieses PowerShell-Tutorial beschreibt die Konzepte Eigenschaften und Methoden.
Wie funktionieren CLIs?
Sobald ein Computersystem ausgeführt wird, öffnet sich auf dem leeren Bildschirm eine Eingabeaufforderung und der Benutzer kann Befehle eingeben.
Es gibt verschiedene Arten von Befehlen, die ihnen dafür zur Verfügung stehen:
- Systembefehle, die als Teil der Betriebssystemschnittstelle codiert sind;
- ausführbare Programme, die bei erfolgreichem Aufruf textbasierte oder grafische Anwendungen starten oder steuern; und
- Batch-Programme (auch bekannt als Batch-Dateien oder Shell-Skripte), bei denen es sich um Textdateien handelt die mehrere Befehle aneinanderreihen und mit bestimmten Bedingungen untereinander verknüpfen.
Eine Kommandozeile ist mehr als ein einfaches Befehls- und Antwortsystem. Die meisten von ihnen verfügen über zusätzliche Funktionen. Zum Beispiel:
- Mit Skriptfunktionen schreiben Benutzer Programme, die über die Befehlszeile ausführbar sind.
- Mit Befehls-Pipes lenken Benutzer die Ausgabe eines Programms zu einem anderen Programm als Eingabe.
- Systemvariablen können in der Befehlszeile festgelegt und abgerufen werden.
- Oft gibt es außerdem Funktionen zur Einsicht in den Befehlsverlauf. Einige speichern den Befehlsverlauf für die Sitzung (wie PowerShell), andere, wie Bash, enthalten native Funktionen, um ältere Befehlsverläufe zu dokumentieren.
Befehle und Syntax für CLIs sind in der Regel sehr stabil, vor Allem, um die Abwärtskompatibilität für Skripte zu ermöglichen.
Aufforderungen und Befehle
Je nach Betriebssystem und CLI kann es Hunderte oder sogar Tausende unterschiedlicher ausführbarer Befehle verfügbar. Der Befehlssatz kann je nach Betriebssystem oder Anwendung stark variieren.
Microsoft definiert beispielsweise Hunderte von Cmdlets als Lightweight Commands – leichtgewichtige Befehle, für die PowerShell. Funktionen hingegen ist der Name für Listen von Cmdlets, die über die Befehlszeile ausgeführt werden können.
Einige Befehle werden von selbst in der Befehlszeile ausgeführt, zum Beispiel der Befehl dir. Sie können Befehle können auch mit Argumenten (manchmal als Parameter bezeichnet) erweitern, die näher spezifizieren, wie PowerShell den Befehl ausführt. Argumente folgen dem Befehl und liefern zusätzliche Details oder Besonderheiten.
Der Befehl cd – change directory – existiert in vielen CLIs und ändert das aktuelle Arbeitsverzeichnis in das im Argument angegebene – doch in einigen Fällen (wie in MS-DOS oder der Windows-Eingabeaufforderung) gibt der Befehl ohne zusätzliche Angaben das aktuelle Arbeitsverzeichnis zurück.
Argumente ermöglichen es Befehlszeilenbenutzern, sehr spezifische Ergebnisse zu erhalten, die manchmal nicht über eine grafische Oberfläche verfügbar sind. Moderne CLIs bieten Pipes oder Mechanismen, um die Ausgabe eines Befehls zu übernehmen und als Eingabe an einen anderen Befehl zu senden. Der vertikale Balken, also | wird oft zu diesem Zweck verwendet.
Abwärtskompatibilität ist oft ein Ziel, wenn neue CLIs eingeführt werden, um vorhandene CLIs zu ersetzen, wie wenn Microsoft MS-DOS durch die Windows-Eingabeaufforderung ersetzt hat. Obwohl einige MS-DOS-Befehle nicht mehr unterstützt werden, funktionieren die meisten in PowerShell weiterhin wie früher.
CLI versus GUI
Die grafische Benutzeroberfläche ist heute die häufigste Benutzeroberfläche. In einer GUI gibt es Fenster, Menüs und Symbole, um Befehle auszuführen. Eine Maus ist die gebräuchlichste Methode zum Bedienen einer GUI, meistens ist aber auch das Steuern mit der Maus eine Möglichkeit.
Die Programme der Office-Suite von Microsoft sind beispielsweise Programme mit einer GUI. Sie lässt sich an die Bedürfnisse und Präferenzen der Nutzer anpassen.
Ein Vorteil grafischer Oberflächen ist, dass die Schnittstelle alle verfügbaren Funktionen visuell anzeigen kann. Das geht jedoch damit einher, dass nicht alle Funktionen und Einstellungen sichtbar sind – einfach, weil der Platz nicht reicht. Beispielsweise können zahlreiche Klicks und Bewegungen durch mehrere Dialogfelder in einer GUI erforderlich sein, um dasselbe Ergebnis wie eine einzelne Befehlszeile zu erzielen.
Außerdem unterstützen GUIs nicht ohne weiteres Skripting oder Automatisierung. Für allgemeine Aufgaben muss ein Benutzer jeden Klick wiederholen oder manuell durch jeden Dialog innerhalb der GUI navigieren.
Systemadministratoren, die möglicherweise Hunderte – oder Hunderttausende – von Benutzern, Systemen und Konfigurationen verwalten müssen, werden feststellen, dass eine GUI weit weniger effizient ist als eine CLI. Ein einfacher CLI-Befehl kann leicht Konfigurationen für eine große Gruppe von Systemen gleichzeitig anpassen.
IT-Teams können Befehle und Argumente kombinieren und speichern. Danach konfigurieren sie das System so, dass es automatisch das Skript startet, wenn eine bestimmte Aktion – oder ein umfassender Satz von Aktionen – erforderlich ist. Die CLI ist das bevorzugte Tool für viele unternehmensweite Systemverwaltungsaufgaben.
CLI-Vor- und Nachteile
Kommandozeilen haben folgende Vorteile:
- granulare Kontrolle des Betriebssystems oder der Anwendung;
- effizienteres Management einer großen Anzahl von Systemen und Nutzern;
- Möglichkeit, Skripte zu speichern, um regelmäßige Aufgaben zu automatisieren; und
- Grundkenntnisse der Befehlszeilenschnittstelle können die Fehlerbehebung bei Netzwerkverbindungsproblemen oder die Lösung anderer Systemaufgaben erleichtern.
Die Nachteile einer Befehlszeilenschnittstelle sind die folgenden:
- mangelnde Benutzerfreundlichkeit;
- flachere Lernkurve, da die Arbeit sehr mühsam ist, solange der Benutzer Befehle und Syntax/Argumente noch nicht auswendig kennt; und
- starke Unterschiede zwischen den CLIs erschweren den Umstieg.