コマンドラインインタプリタ
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Bash_screenshot.png/200px-Bash_screenshot.png)
コマンドラインインタプリタ[注釈 1] (英: command line interpreter) は、コンピュータのコマンドライン、すなわち、ユーザによりキーボードなどから入力される文字列の行(ライン)のコマンドを解釈し、オペレーティングシステム(以下、OS)やプログラミング言語処理系などに渡すものである。
OSの標準ユーティリティとしてはコマンドラインシェルがあり、いくつかのプログラミング言語処理系が持つそれに関してはRead-Eval-Print Loopも参照。
コマンドラインインタプリタが動いている具体的な画面はコマンドライン・インタフェース(en:Command-line interface、略してCLI)と呼ばれている。キャラクタユーザインタフェースを構成する要素である。
例
[編集]- UNIXおよびUNIX系のもの
- Unixシェル - (UNIXおよびUNIX系OS)
- Bash
- Bourne Shell
- C Shell
- (他にも)Emacsも、テキストエディタであるがコマンドラインインタプリタの機能も備えている。
これら以外にもかなりの種類があり、詳しくはUnixシェルの項目で解説されている。
なおWindows上でもCygwinをインストールすれば、これらの(UNIX系用の)シェルは(大抵は)動く。
- MacOSのもの
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/06/TerminalOSXscreenshot.gif/180px-TerminalOSXscreenshot.gif)
MacOSはBSD UNIXをベースにしており、ターミナル(Terminal)という名のUNIX端末エミュレータ画面を開くことでUNIXのシェルが起動する。→ターミナル (macOS)
起動する標準シェルは変化してきた経緯があり、最初はtcshだったが、その後Panther(10.3)でbash、Catalina(10.15)でzshとなった。
なお、かつてのClassic Mac OSには(つまり初代MacintoshのOSから2001年発売のMac OS 9までは)コマンドラインインタプリタは基本的には無かった。すべてGUIで操作するという設計思想だったのである。[2][3] ただし1988から1995年にかけてMacintoshのマシン上でSystem 7(Mac OS 7)とともに動くA/UXというUNIX OSが販売されていた時期(だけ)は、それを別途購入してインストールすれば、CommandShellという画面を起動してシェルを使うことができた。
- Microsoft社が開発にかかわった経緯のあるもの
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/Windows_PowerShell_1.0_PD.png/180px-Windows_PowerShell_1.0_PD.png)
- IBM PC DOS
- cmd.exe - (OS/2、Windows)
- なお日本語版Windowsのメニュー項目や画面タイトルとしては「コマンドプロンプト」と表示されるので、その呼び方も親しまれている。
- Command.com - (MS-DOS、Windows)
- 4DOS/4OS2/4NT - (DOS(MS-DOS), OS/2, Windows NT)
- Windows PowerShell - (Windows XP, Windows Server 2003, Windows Vista, Microsoft Exchange Server 2007)
- Windows 回復コンソール - (Windows 2000, Windows XP)
- IBMのマシン(やそれに倣ったマシン)のもの
- Control Language(CL)(英語版) (OS/400、 近年は「IBM i」と(も)呼ばれる)
- iSeries QSHELL - (IBM OS/400)
- Job Control Language(JCL) - (OS/360, z/OS)
- TSO - (MVS)
- 他
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/RT-11_help.jpg/200px-RT-11_help.jpg)
- rc Shell - (Plan 9)
- clig - (tcl/c)
- Command Line Interpreter(CLI)/Amiga Shell - (AmigaOS)
- CCP - (CP/M)
- CMS - (VM/CMS)
- FreeCOM - (FreeDOS)
ユーザインタフェースとしてのコマンドライン
[編集]コマンドラインインタプリタによって実現されるユーザインタフェース (「コマンドラインインタフェース」、CLI) は、有効で簡潔なたくさんのコマンドを発行する環境をユーザに提供する。一方でこの環境は、コマンドやそのパラメータの内容や、それらの構文を覚えることを(多かれ少なかれ)ユーザに要求する。
初期のコンピュータはその計算機資源の制約からも文字端末による操作が主流であった。その後GUIも発達したが、Unix系環境におけるコマンドラインシェルや、NT系以降のWindowsにおけるcmd.exeなど、GUI経由の操作では煩雑になり過ぎる指示や作業を簡潔に効率良く行うためのインタフェースとして、GUIと相互に補完する関係にあり、必要に応じて使い分けるという住み分けになっている。
また、シスコシステムズなどのルーターの操作インタフェースとしては GUI も提供されているものの、大半のユーザは CLI を使用している。3D CADソフトウェアのひとつRhinoceros 3Dでも、アイコンによるGUIやプルダウンメニューに加えコマンドラインが用意されている。
スクリプト言語
[編集]多くのコマンドラインインタプリタは、1個の動詞的な語による表現から成るような、単純な命令だけではなく、条件分岐による繰返し等に代表されるある種の制御構造などといった、スクリプト言語的機能も持ち合わせていて、特に操作者にとって苦痛となる単純な繰り返し作業などを軽減できることが多い。またシェルにおけるシェルスクリプトのように、外部ファイルにまとめて記述されたコマンドを実行できるコマンドラインインタプリタもある。
あるいは逆に、多くのスクリプト言語の処理系は、ソースコードが書かれたファイルを指定して実行するだけではなく、内蔵の、あるいは外付けのコマンドラインインタプリタを持っている。(例えばPythonの場合、CPythonは何もコマンドライン引数を付けずに起動すると内蔵の簡易なコマンドラインインタプリタが入出力するモードになる他、外付けでより強化された環境を提供しているIPythonがある。一方、Rubyの場合は、CRuby(MRI)は内蔵のコマンドラインインタフェースを持たず、標準添付のirbコマンド(Interactive Ruby)が標準のコマンドラインインタプリタで、より強化された環境としてはPryがある)
BASIC(本来のBASICであるダートマスBASICでは少し異なるのだが)のように、言語自体がコマンドラインインタプリタからのコマンドで操作されるよう設計されている場合もある(たとえば、行番号を前提とした構文は、入力の先頭にあるトークンが整数として解釈できればプログラムの入力であると判断する、などといったように、テレタイプ機を入出力装置として利用していた時代に便利なように設計されたことを反映している)。
LISPなどの一部の言語では、入力された文字列を構文解析してプログラムの構造を読み込むことができる「read」、それを評価する「eval」、評価結果を(値を)文字列として出力する「print」、といったルーチンがユーザに公開されているので、それらを組み合わせて繰り返す(loop)ことで簡単に簡易コマンドラインインタプリタを作ることができる。それを Read-Eval-Print Loop、略してREPLという。
IBMのREXXのように、他の言語を入力中に含ませられるようなフレームワークを持っているものもある。
脚注
[編集]注釈
[編集]出典
[編集]- ^ 『GLOSSARY OF JAPANESE/ ENGLISH TECHNICAL TERMS USED ON OUR WEBSITE』(PDF)(レポート)SYMPHOTIC TII CORPORATION 。2019年9月21日閲覧。(注意: 本稿に機械翻訳との印象を持つ編集者も存在します)
- ^ Wow, the fact that Mac OS Classic did not even have a command line interface really baffles me.
- ^ superuser.com, How can I open the Terminal on an iMac G3 (Mac OS 8.5)?