Командный интерпретатор, интерпретатор командной строки — компьютерная программа, часть операционной системы, обеспечивающая базовые возможности управления компьютером посредством интерактивного ввода команд через интерфейс командной строки или последовательного исполнения пакетных командных файлов.
Как правило его функции сводятся к предоставлению пользователю возможности запускать другие программы, может также содержать некоторые базовые команды ввода-вывода и свой простой скриптовый язык программирования.
В операционные системы MS-DOS и Windows 95 включён командный интерпретатор COMMAND.COM, в Windows NT — cmd.exe, в OS/2 командный интерпретатор тоже называется cmd.exe, самый распространённый командный интерпретатор в Linux и FreeBSD — bash, помимо которого есть большое семейство других.
Как правило, при низкоуровневой настройке ОС у пользователя есть возможность менять командный интерпретатор, используемый по умолчанию.
К функциям интерпретатора командной строки относятся:
Взаимодействие с пользователем (редактирование командной строки, история команд и т. д.).
Обработка (расширение) шаблонов имен («*», «?» и т. д.).
Зачастую интерпретатор командной строки предоставляет возможность использования циклов, операторов условного и безусловного перехода и переменных. Он позволяет писать как несложные сценарии для автоматизации повседневных задач, так и довольно сложные программы.
Пример калькулятора для интерпретатора командной строки Windows/MS-DOS.
@echo off
:beginClsTitle Калькулятор
Color 71
Echo Введите уравнение:
Set/Pexp=Set/Aresult=%exp%Title Вычислено
Echo Ваше уравнение: %exp%Echo Решение: %result%Pause>nul
gotobegin
Оболочка в своей работе оперирует простыми командами.
Простая команда — это последовательность слов через пробел. Нажатие клавиши Enter при вводе команды или перевод строки при обработке сценария являются для командного интерпретатора признаком завершения команды. Она обрабатывается и выполняется.
Конвейер — это последовательность одной или более команд, разделенных |(& для cmd.exe). Стандартный выходной поток каждой команды, кроме последней, соединяется при помощи программного канала со стандартным входным потоком следующей команды. Каждая команда выполняется как отдельный процесс; интерпретатор ожидает окончания последней команды. Статусом выхода конвейера является статус выхода его последней команды. Вот пример простого конвейера для интерпретатора bash :