コマンドライン
インタプリタ(command-line interpreter)は、
コンピュータのコマンドライン、つまりユーザーがキーボードから入力する
文字列コマンドを解釈し、
オペレーティングシステム(OS)や
プログラミング言語処理系に伝えるプログラムです。OSの標準ユーティリティであるコマンドライン
シェルや、
プログラミング言語処理系が持つREPL(Read-Eval-Print Loop)がその例です。コマンドライン
インタプリタが動作する画面はコマンドラインインターフェース(CLI)と呼ばれ、キャラクターユーザーインターフェース(CUI)を構成する要素の一つです。
UNIXおよび
UNIX系OSでは、以下のような
シェルが利用可能です。
Unixシェル:UNIXおよびUNIX系OSで広く利用されるシェル。
Bash:広く使われている
UNIXシェルの一つ。
Bourne Shell:初期のUNIXシェル。
C Shell:
C言語風の構文を持つ
シェル。
他にも多くの種類があり、詳細はUnix
シェルの項目で解説されています。また、
テキストエディタの
Emacsもコマンドライン
インタプリタ機能を備えています。Windows環境でも
Cygwinをインストールすることで、これらの
UNIX系
シェルを利用可能です。
macOS
macOSはBSD
UNIXをベースにしており、ターミナルというエミュレータを通じて
UNIXシェルを起動できます。標準
シェルは、tcshからbash、そしてzshへと変遷してきました。初期のMac OSにはコマンドライン
インタプリタは存在せず、GUI操作が主流でした。しかし、
A/UX|A_UXという
UNIX OSをインストールすることでCommandShellを利用できました。
マイクロソフトが開発に関わったものには以下があります。
cmd.exe:OS/2やWindows NT系で利用されるコマンドプロンプト。
Command.com:
MS-DOSや
Windows 9x系で利用されたコマンド
インタプリタ。
4DOS/4OS2/4NT:DOS、OS/2、Windows NT向けの代替シェル。
Windows PowerShell:Windows XP/Windows Server 2003以降で利用可能。
.NET Frameworkが必要。
PowerShell:Windows PowerShellを.NETで再実装したクロスプラットフォーム版。
Windows 回復コンソール:Windows 2000、Windows XP、Windows Server 2003で利用可能な回復ツール。
IBMのマシンやそれに倣ったマシンでは、以下のようなものがあります。
Control Language (CL):OS/400(IBM i)で使用される制御言語。
iSeries QSHELL:
IBM OS/400で使用される
シェル。
Job Control Language (JCL): OS/360|OS_360、z/OSで使用されるジョブ制御言語。
TSO:MVS(System/370系メインフレームOS)で使用されるタイムシェアリングシステム。
その他
他にも様々なコマンドライン
インタプリタが存在します。
rc Shell:Plan 9で使用されるシェル。
clig:
Tcl/Cで記述されたコマンドライン
インタプリタ。
Command Line Interpreter (CLI) / Amiga Shell:AmigaOSで使用されるシェル。
CCP:
CP/M|CP_Mで使用されたコマンドプロセッサ。
CMS:VM/CMSで使用されるコマンド処理システム。
FreeCOM:
FreeDOSで使用される
コマンドプロンプト。
*
crosh:ChromiumOS/
ChromeOSで使用される
シェル。
コマンドラインインタフェースの役割
コマンドライン
インタプリタによって実現されるコマンドラインインターフェース(CLI)は、効率的で簡潔なコマンド操作を可能にします。しかし、コマンドや構文を覚える必要があり、初心者には敷居が高い場合があります。
初期の
コンピュータは文字端末による操作が主流でしたが、GUIの発展後も、CLIはGUIでは複雑になる作業を効率的に行うために利用されています。
Unix系環境の
シェルやWindowsのcmd.exeなどがその例です。また、ネットワーク機器や3D CADソフトウェアでも、GUIと並んでCLIが利用されています。
多くのコマンドライン
インタプリタは、単一のコマンドだけでなく、条件分岐や繰り返しなどの制御構造を持つ
スクリプト言語としての機能も備えています。これにより、反復作業の効率化が可能です。
シェルスクリプトのように、外部ファイルに記述したコマンドを実行できるものもあります。
一方、多くの
スクリプト言語処理系は、ファイル実行だけでなく、内蔵または外付けのコマンドライン
インタプリタを持っています。例えば、Pythonの
CPythonは内蔵の簡易
インタプリタを提供し、IPythonはより高度な環境を提供します。Rubyの
CRubyは標準添付のirbがコマンドライン
インタプリタとして機能し、Pryが高度な環境を提供します。
BASICのように、言語自体がコマンドライン
インタプリタからのコマンドで操作されるように設計されている場合もあります。
また、LISPなどの言語では、入力
文字列を解析してプログラム構造を読み込むread、評価するeval、結果を出力するprintを組み合わせることで、簡単に簡易コマンドライン
インタプリタを構築できます。これをREPL(Read-Eval-Print Loop)と呼びます。
IBMの
REXXのように、他の言語を埋め込めるフレームワークを持つものもあります。
このように、コマンドライン
インタプリタは、単なるコマンド実行ツール以上の多様な機能と役割を担っています。