# Befehl (Computer)

Ein Befehl oder Kommando ist ein definierter Einzelschritt, der von einem Computer ausgeführt werden kann. Befehle können mehr oder weniger mächtig sein.

## Algorithmus

Ein Algorithmus ist eine vollständige und eindeutige Beschreibung eines Arbeitsvorgangs, der in einer endlichen Anzahl von Einzelschritten die Lösung einer definierten Aufgabe zeigt. Ein maschinell ausgeführter Algorithmus muss in Einzelschritte, die von einem Computer verstanden werden, zerlegt werden. Jeder dieser Einzelschritte ist dabei ein Befehl oder Kommando, wobei mächtigere Befehle/Kommandos einfachere Befehle zur Ausführung nutzen.

## Arten von Befehlen

Befehle bzw. Kommandos folgen einem definierten Syntax, es gibt jedoch auch alleinstehende Befehle ohne Parameter bzw. Kommandozeilenparameter. Bei der Mensch-Computer-Interaktion wird ein Befehl meist durch Betätigung der Eingabetaste zur Ausführung gebracht.
* Maschinenbefehl – ein Befehl, den ein Computer direkt ausführen kann. Je nach Design des jeweiligen Prozessors stützen sich Maschinenbefehle ihrerseits auf Mikrobefehle.
* Anweisung oder Instruktion – ein Programmierbefehl; Befehle in Programmiersprachen werden jedoch normalerweise nicht sofort ausgeführt.
* Kommandozeileninterpreter und Betriebssystem-Shells – eine Benutzerschnittstelle, auf der definierte Kommandos vom Benutzer eingegeben und zur Ausführung gebracht werden können. Dazu zählen sowohl von der Shell direkt verarbeitete Befehle („interne Kommandos“) als auch zum Betriebssystem gehörende Kommandozeilenprogramme bzw. Systemprogramme („externe Kommandos“). Zur Automatisierung werden Stapelverarbeitungsdateien und Shellskripte verwendet.
* Anwendungssoftware und Computerprogramme – Befehle finden sich oft eingebettet (z. B. in Form von Formeln und Funktionen einer Tabellenkalkulation), obwohl es manchmal auch die Unterscheidung zwischen einem Kommando und einer Anweisung gibt: ein Kommando ist ein Befehl, der z. B. auf einer Kommandozeile sofort ausgeführt wird. Zur Automatisierung werden u. a. Makros verwendet.

## Computerprogramm

Auf Betriebssystemen werden Computerprogramme auf einem Computerterminal oder einer Shell (wie einem Kommandozeileninterpreter) über Kommandos gestartet, die dem Namen des Computerprogramms, genauer gesagt der Programmdatei, entsprechen.

### Kommandosprache

Einige Betriebssysteme bieten eine eigene Kommandosprache, die meist auf einem primären Kommandointerpreter, auch „Shell“ genannt, für den Benutzer zur Verfügung steht. Auf einem Kommandozeileninterpreter (englisch Command-Line Interpreter, kurz CLI) können Kommandos direkt zur Ausführung gebracht werden, wobei auch eine mehr oder minder mächtige Interpretersprache integriert ist. Beispiele dafür sind die Unix-Shell, wie sie unter Unix und Unix-artigen Betriebssystemen zu finden ist, oder die Eingabeaufforderung der Windows-Betriebssysteme von Microsoft. Historisch waren Kommandosprachen die einzige Möglichkeit der Mensch-Maschine-Interaktion, und damit die primäre bzw. meist einzige Shell des Betriebssystems. Auf modernen grafischen Benutzeroberflächen (englisch Graphical User Interface oder kurz GUI) werden Kommandointerpreter und deren Kommandosprache in einer Terminalemulation ausgeführt, sind optional und – je nach System – auch nicht mehr die primäre Shell.
Obwohl jedes System seine eigene Kommandosprache hervorgebracht hat, gibt es einige Gemeinsamkeiten.
Oft werden die Kommandos auch als Verb bezeichnet und erhalten einen oder mehrere Parameter. Dieser kann z. B. der Name einer oder mehrerer Dateien sein, aber auch ein weiterer Kommandozeilenparameter, der meist durch ein vorangestelltes Sonderzeichen gekennzeichnet wird. Beispielsweise gibt üblicherweise unter DOS der Parameter /h oder /? einen Hilfetext aus, während unter Unix --help oder -h üblich ist.
Zudem bieten die meisten Kommandointerpreter Umgebungsvariablen und einen Stapelbetrieb, bei dem die normalerweise interaktiv einzugebenden Kommandos stattdessen aus einer Datei gelesen und hintereinander ausgeführt werden. Diese Dateien werden u. a. unter DOS als Stapelverarbeitungsdateien, unter Unix hingegen üblicherweise als Shellskripte bezeichnet.
Die Art der Ausführung von Kommandos kann in interne und externe Kommandos unterschieden werden. Während interne Kommandos von der jeweiligen Shell als Interpreter direkt ausgeführt werden, sind externe Kommandos separate Kommandozeilenprogramme, die nur bei Bedarf geladen werden. Ob ein Kommando als separate Konsolenanwendung sinnvoll ist oder nicht, hängt u. a. auch davon ab, ob das Kommando die Umgebung des Kommandointerpreters selbst beeinflusst oder nicht. So ist es für den Kommandointerpreter wesentlich zu wissen, in welchem Arbeitsverzeichnis er sich gerade befindet, sodass auch der Befehl zum Wechsel desselben, cd für englisch change directory, als internes Kommando ausgeführt sein muss. Bei anderen Kommandos wie der Ausgabe einer Dateiliste ist z. B. unter Unix ls traditionell als externes Kommando (bei BusyBox in Form eines Applets: obwohl weiterhin ein externes Kommando, ist es technisch wie ein internes Kommando ausgeführt), unter DOS hingegen dir als internes Kommando enthalten. Ein weiteres Beispiel ist das DOS-Kommando zum Kopieren von Dateien: während copy ein internes Kommando von COMMAND.COM ist, ist das mächtigere xcopy (ab PC DOS 3.2 bzw. MS-DOS 3.3) als externes Kommando beigelegt – da unter DOS der konventionellen Speicher begrenzt ist, wird das größere XCOPY als externes Kommando nur bei Bedarf in den Arbeitsspeicher geladen.