コマンドラインインターフェース

GNOMEターミナル3、Fedora 15でのサンプルBashセッションのスクリーンショット
Windows Vistaで実行されているWindows PowerShell 1.0のスクリーンショット

コマンドラインインターフェースCLI)は、コマンドラインシェルとも呼ばれ、[ 1 ] [ 2 ]は、コマンド(各コマンドはテキスト行としてフォーマットされます)を介してソフトウェアと対話する手段です。コマンドラインインターフェースは、パンチカードで利用可能な非対話型モードに代わる、対話型でユーザーフレンドリーな代替手段として、 1960年代半ばにコンピュータ端末上で登場しました。[ 3 ]

約30年にわたり、CLIはソフトウェアの最も一般的なインターフェースでしたが、今日ではグラフィカルユーザーインターフェース(GUI)の方が一般的です。[ 4 ]それでも、オペレーティングシステムソフトウェア開発ユーティリティなどの多くのプログラムは、依然としてCLIを提供しています。

CLIでは、コマンドをスクリプトファイルに保存して繰り返し使用できるため、プログラムの自動化が 可能です。スクリプトでは、含まれるコマンドをグループ(単一のプログラム)として実行できます。

CLI は、入力コマンドを実行するプログラムである コマンドライン インタープリタまたはコマンドライン プロセッサによって実現されます。

CLI の代替としては、GUI ( Windowsなどのデスクトップ メタファーを含む)、テキスト ベースのメニュー( DOS シェルおよびIBM AIX SMITを含む)、およびキーボード ショートカットなどがあります。

グラフィカルユーザーインターフェースとの比較

アイコンとウィンドウを備えたグラフィカルユーザーインターフェース(GEM 1.1デスクトップ

グラフィカルユーザーインターフェースと比較して、コマンドラインインターフェースは実装に必要なシステムリソースが少なくて済みます。コマンドのオプションは各コマンドラインで数文字で指定できるため、経験豊富なユーザーにとってはオプションへのアクセスが容易です。行編集機能と、頻繁に使用するシーケンスを保存する履歴機能により、繰り返しタスクの自動化が容易になります。これは、パラメータや可変オプションを使用できるスクリプト言語にも適用できます。コマンドライン履歴を保存することで、コマンドの確認や繰り返し実行が可能になります。

コマンドラインシステムでは、ユーザーが参照するために紙のマニュアルやオンラインマニュアルが必要になる場合がありますが、多くの場合、ヘルプオプションによってコマンドのオプションが簡潔に説明されています。コマンドライン環境では、GUIにあるような異なるフォントや拡張編集ウィンドウといったグラフィカルな拡張機能が提供されない場合があります。新しいユーザーにとって、マニュアルを参照せずに利用可能なすべてのコマンドとオプションに慣れることは、グラフィカルユーザーインターフェースの アイコンドロップダウンメニューと比べて難しい場合があります。

種類

オペレーティングシステムのコマンドラインインターフェース

オペレーティングシステム(OS)のコマンドラインインターフェースは、通常、オペレーティングシステムに付属する独立したプログラムです。このようなテキストインターフェースを実装するプログラムは、コマンドラインインタープリタ、コマンドプロセッサ、またはシェルと呼ばれることがよくあります。

コマンドラインインタープリタの例としては、 NushellOpenVMSおよびRSX-11のDECのDIGITAL Command Language(DCL)、さまざまなUnixシェルshkshcshtcshzshBashなど)、CP/MCCPDOSCOMMAND.COM 、 OS/2およびWindowsのCMD.EXEプログラム(後者のグループはDECのRSX-11およびRSTS CLIに大きく基づいている)などがある。ほとんどのオペレーティングシステムでは、デフォルトのシェルプログラムを代替プログラムに置き換えることが可能である。例としては、DOSの場合は4DOS 、OS/2の場合は4OS2、 Windowsの場合は4NT / Take Commandなどがある。

シェルという用語はコマンドラインインタープリタを説明するときによく使用されますが、厳密に言えば、シェルはコマンドインタープリタとプロセッサであり、その延長として、コマンドインタープリタとプロセッサおよびオペレーティングシステムの幅広い機能に対するインタフェース (ユーザーインタフェース (コマンドラインインタフェース、GUI など) またはプログラミングインタフェース) を提供するプログラムです。たとえば、デフォルトの Windows GUI は、 WIN.INI 構成ファイルの SHELL=EXPLORER.EXE 行で定義されているEXPLORER.EXEという名前のシェル GUI です。このプログラムは厳密に言えばシェル GUI であり、その延長としてシェルです (厳密に言えば、Windows シェルは shell32.dll であり、shell32.dll のシェル GUI である explorer.exe ではありません)。ただし、これは CLI (コマンドラインインタープリタ) でもシェル CLI (シェルコマンドラインインタフェース) でもありません。

アプリケーションのコマンドラインインターフェース

GNU Octaveのコマンドラインインターフェース付き GUI

アプリケーション プログラム (オペレーティング システムとは対照的) にもコマンド ライン インターフェイスがある場合があります。

アプリケーション プログラムは、次の 3 つの主要なコマンド ライン インターフェイス メカニズムのいずれか、またはすべてをまったくサポートしない場合があります。

  • パラメーター: ほとんどのコマンドライン インターフェイスは、プログラムの起動時に追加情報を渡す手段をサポートしています。
  • 対話型コマンドラインセッション: プログラムの起動後、オペレーターにコマンドを入力するための独立した手段が提供される場合があります。
  • プロセス間通信: ほとんどのオペレーティングシステムは、プロセス間通信標準ストリーム名前付きパイプなど)をサポートしています。クライアントプロセスからのコマンドラインは、これらの方法のいずれかによってCLIプログラムにリダイレクトされます。

一部のアプリケーションはCLIをサポートしており、ユーザーに独自のプロンプトを表示し、コマンドラインを受け付けます。他のプログラムはCLIとGUIの両方をサポートしています。場合によっては、GUIは別のCLI実行可能ファイルを単にラップしたものに過ぎません。また、プログラムがGUIのオプションとしてCLIを提供する場合もあります。CLIとGUIは、多くの場合、異なる機能をサポートします。例えば、数値解析コンピュータプログラムであるMATLABのすべての機能はCLI経由利用できますが、MATLAB GUIは機能のサブセットのみを提供します。

1975 年のColossal Cave Adventureでは、ユーザーは CLI を使用して 1 つまたは 2 つの単語を入力し、洞窟システムを探索します。

歴史

コマンドラインインターフェースは、テレプリンター(TTY)を介して人々が行っていた通信形態から発展しました。テレックスを用いて命令や確認を送信することもあった。初期のコンピュータシステムでは、オペレーターとのやり取りにテレプリンターがよく使用されていました。

機械式テレプリンターは、テレプリンターを模倣したキーボードと画面を備えた「ガラスTTY」に置き換えられました。 「スマート」端末は、画面全体でのカーソル移動や、端末上でローカルにデータを編集してコンピュータに送信するなどの追加機能を可能にしました。マイクロコンピュータ革命により、従来のミニコンピュータ+端末というタイムシェアリングアーキテクチャが置き換えられると、ハードウェア端末は端末エミュレータ (PCのシリアルポートを介して送信される端末信号を解釈するPCソフトウェア)に置き換えられました。これらは通常、組織の新しいPCと既存のミニコンピュータまたはメインフレームコンピュータとのインターフェースとして使用されたり、PC同士を接続したりするために使用されました。これらのPCの中には、電子掲示板システム(BBS)ソフトウェアを実行しているものもありました。

初期のオペレーティングシステムのCLIは常駐モニタプログラムの一部として実装されており、簡単に置き換えることはできませんでした。シェルが交換可能なコンポーネントとして初めて実装されたのは、Multicsタイムシェアリングオペレーティングシステムの一部でした。[ 5 ] 1964年、MITコンピューティングセンターのスタッフであるLouis Pouzinは、引数の置換を可能にしながらコマンドスクリプトを実行するためのRUNCOMツールを開発しました。[ 6 ] Pouzinは、プログラミング言語のようにコマンドを使用する手法を説明するために「シェル」という用語を作り出し、 Multicsオペレーティングシステムでそのアイデアを実装する方法に関する論文を書きました。[ 7 ] Pouzinは1965年に母国フランスに戻り、最初のMulticsシェルはGlenda Schroederによって開発されました。[ 6 ]

バージョン 7 UnixでのBourne Shell の相互作用

最初のUnixシェルであるV6シェルは、1971年にベル研究所のケン・トンプソンによって開発され、シュローダーのMulticsシェルをモデルにしていました。[ 8 ] [ 9 ] Bourneシェルは、V6シェルの代替として1977年に導入されました。対話型コマンドインタープリタとして使用されていますが、スクリプト言語としても意図されており、構造化プログラムを作成するために一般的に考えられている機能のほとんどを備えています。Bourneシェルは、 KornShell(ksh)、Almquistシェル(ash)、そして人気のBourne-againシェル(またはBash)の開発につながりました。[ 9 ]

初期のマイクロコンピュータ自体は、 CP/MDOSAppleSoft BASICなどのコマンドラインインターフェースをベースとしていました。1980年代から1990年代にかけて、Apple MacintoshとPC上のMicrosoft Windowsの登場により、コマンドラインインターフェースは主要なユーザーインターフェースとしてグラフィカルユーザーインターフェースに取って代わられました。[ 10 ]コマンドラインは代替ユーザーインターフェースとして引き続き利用可能であり、システム管理者やその他の上級ユーザーがシステム管理、コンピュータプログラミングバッチ処理によく使用しました。

2006年11月、MicrosoftはWindows PowerShell(旧コードネームMonad )バージョン1.0をリリースしました。これは、従来のUnixシェルの機能とMicrosoft独自のオブジェクト指向フレームワークである.NET Framework を組み合わせたものです。MinGWとCygwinは UnixライクなCLIを提供するWindows向けのオープンソースパッケージです。Microsoftは、Services for UNIXアドオン を通じて、 MKS Inc.ksh実装であるMKS Korn ShellをWindows向けに提供しています。

2001年以来、MacintoshオペレーティングシステムmacOSは、 Darwinと呼ばれるUnix系オペレーティングシステムをベースとしている。[ 11 ]これらのコンピュータでは、ユーザーは、アプリケーションフォルダのユーティリティサブフォルダにあるターミナルと呼ばれる端末エミュレータプログラムを実行するか、 sshを使用してマシンにリモートでログインすることで、Unix系コマンドラインインターフェイスにアクセスできる。ZシェルはmacOSのデフォルトシェルであり、Bash、tcshKornShellも提供されている。macOS Catalinaより前は、Bashがデフォルトだった。

使用法

CLIは、膨大なコマンドやクエリの語彙と幅広い(または任意の)オプションを、純粋なGUIよりもテキストとしてより迅速に入力できる場合に使用されます。これは通常、オペレーティングシステムのコマンドシェルに当てはまります。CLIは、グラフィカルユーザーインターフェースをサポートするのに十分なリソースがないシステムでも使用されます。一部のコンピュータ言語システム(Python[ 12 ] ForthLISPRexx 、および多くのBASIC方言など)では、対話型のコマンドラインモードが提供されており、コードを迅速に評価できます。

CLIは、プログラマーやシステム管理者、エンジニアリングや科学分野の環境、そして技術的に高度なパーソナルコンピュータのユーザーによってよく使用されます。[ 13 ] CLIは、コマンドと応答を更新可能な点字ディスプレイを使用して表示できるため、視覚障害者の間でも人気があります。

シェル CLI の構造

コマンドラインの一般的なパターンは次のとおりです。[ 14 ] [ 15 ]

プロンプトコマンド パラメータ1 パラメータ2 パラメータ3 … パラメータN 
  • プロンプト— プログラムが入力の準備ができていることを示すために出力するもの。プロンプトにはコンテキスト情報が含まれる場合があり、多くの場合、入力が期待されていることを視覚的に示す記号で終わります。
  • コマンド — ユーザーが入力するコマンドは、通常、次の 2 つのクラスのいずれかになります。
    1. 内部コマンドはコマンドラインインタープリタによって認識され、処理されます。内部コマンドは組み込みコマンドとも呼ばれます。[ 16 ]
    2. 外部コマンドは、別の実行ファイルにある実行ファイルを実行します。コマンドラインインタープリタは、外部コマンドに一致する名前の実行ファイルを検索します。[ 17 ] [ 18 ]
  • param1 … paramN — ユーザーが指定するパラメータ。パラメータの形式と意味はコマンドによって異なります。外部コマンドの場合、パラメータの値はOSによってプログラムが起動された際に渡されます。パラメータは引数またはオプションのいずれかです。

この形式では、コマンドライン要素間の区切り文字は空白文字、行末の区切り文字は改行文字です。これは広く使用されている慣例ですが、普遍的ではありません。

CLI は一般に、構文セマンティクスで構成されていると考えられます。構文は、すべてのコマンドが従うべき文法です。オペレーティング システムの場合、DOSUnix はそれぞれ、すべてのコマンドが従うべき独自のルール セットを定義します。組み込みシステムの場合、 NortelJuniper NetworksCisco Systemsなどの各ベンダーが独自のルール セットを定義します。これらのルールは、ユーザーがコマンド システム内をどのように操作するかも指示します。セマンティクスはどのような種類の操作が可能か、どのような種類のデータに対してこれらの操作を実行できるか、そして文法がこれらの操作とデータをどのように表現するか (構文における記号的な意味) を定義します。

2 つの異なる CLI は構文またはセマンティクスのいずれかで一致する場合があります。ただし、両方で一致している場合にのみ、ユーザーが何も学習することなく両方の CLI を使用でき、スクリプトの再利用も可能になるほど十分に類似していると見なすことができます。

シンプルなCLIはプロンプトを表示し、ユーザーが入力したコマンドラインを受け取り、 Enterキーで終了すると、指定されたコマンドを実行し、結果またはエラーメッセージをテキストで表示します。高度なCLIは、指定されたコマンドを実行する前にコマンドラインを検証、解釈、パラメータ展開し、必要に応じて出力をキャプチャまたはリダイレクトします。

GUI のボタンやメニュー項目とは異なり、コマンド ラインは通常自己文書化されており、[ 19 ]ユーザーが実行したいことを正確に示します。さらに、コマンド ラインには通常、結果をカスタマイズするために変更できる多くの既定値が含まれています。完全なコマンドを表す文字列またはエイリアスを割り当てることによって便利なコマンド ラインを保存したり、複数のコマンドをグループ化してより複雑なシーケンス (プログラムのコンパイル、インストール、実行など) を実行したりして、コマンド プロシージャまたはスクリプトと呼ばれる単一のエンティティを作成し、それ自体をコマンドとして扱うことができます。これらの利点は、複雑なコマンドや一連のコマンドを保存して再利用できるため、ユーザーはそれらを一度理解するだけで済むことを意味します。

CLI シェルに与えられるコマンドは、多くの場合、次のいずれかの形式になります。

  • doSomething how toFiles
  • doSomething how sourceFile destinationFile
  • doSomething how < inputFile > outputFile
  • doSomething how | doSomething how | doSomething how > outputFile

ここで、 doSomethingは、事実上、動詞howは副詞(たとえば、コマンドは冗長に実行するか静かに実行するか)、toFilesはコマンドが作用するオブジェクト(通常は1つ以上のファイル)です。3>番目の例のはリダイレクト演算子で、コマンドラインインタープリタに、コマンドの出力を自身の標準出力(画面)ではなく、指定されたファイルに送信するように指示します。これにより、ファイルが上書きされます。を使用すると、>>出力がリダイレクトされ、ファイルに追加されます。もう1つのリダイレクト演算子は垂直バー|)で、これは、 1つのコマンドの出力が次のコマンドの入力になるパイプラインを作成します。[ 20 ]

CLIとリソース保護

Unix系システムやWindowsなどの一部のシステムでは、 PATH環境変数またはそれに相当する環境変数に指定するパスを変更することで、利用可能なコマンド群を変更できます。Unix系システムでは、コマンドの実行ファイルまたはスクリプトを含むファイルにも実行権限を与える必要があります。パス変数内のディレクトリは、指定された順序で検索されます。パスの順序を変更することで、例えば、デフォルトが逆の場合に、\OS2\MDOS\E.EXEではなくを実行できます\OS2\E.EXE。実行ファイルの名前を変更することもできます。例えば、お気に入りのエディタの名前をEDITに変更する人はよくいます。

コマンドラインでは、高度な内部コマンドへのアクセスなど、利用可能なコマンドを制限することができます。Bourne ShellやBashなどの類似シェルは、制限付きシェルとして実行できます。これにより、ユーザーによるPATH環境変数の変更が禁止されます。つまり、PATHが許可されたコマンドのみを含むディレクトリのみを含むように設定されている場合、ユーザーはそれらのコマンドのみを実行できます。WindowsのCMD.EXEも、利用可能なコマンドの制限をサポートしています。多くの場合、シェアウェアプログラムは、プロンプトに「管理者によってバッチファイルの実行が無効にされています」というコマンドを表示するなど、コマンドの範囲を制限します。

ネットワークルータなどの一部のCLIには、モードの階層構造があり、各モードでは異なるコマンドセットがサポートされます。コマンドセットは、セキュリティ、システム、インターフェースなどの関連ごとにグループ化されています。これらのシステムでは、ユーザーは一連のサブモードを経由する場合があります。例えば、CLIにインターフェースシステムという2つのモードがある場合、ユーザーはインターフェースコマンドを使用してインターフェースモードに入ることができます。この時点では、ユーザーがインターフェースモードを終了してシステムモードに入るまで、システムモードのコマンドにアクセスできない場合があります。

IBMの主力オペレーティングシステムMVSでは、許可プログラム機能APF)により、特定の許可プログラムをUnix系システムのUID(0)に類似した拡張特権で実行できます。TSO /Eは、許可コマンドなどの呼び出しをサポートしますが、インストール時に制御されるリストに含まれるコマンド、プログラム、およびサービスのみを対象としています。

コマンドプロンプト

電源投入後またはハードリセット後のBBC Microのプロンプト

コマンドプロンプト(または単にプロンプ​​ト)は、コマンドラインインターフェースにおいて、コマンドを受け付ける準備ができていることを示すために使用される(1つ以上の)文字のシーケンスです。文字通り、ユーザーに操作を促すものです。プロンプトは通常、、、、[ 21 ] [ 22 ] 、または [ 23 ] のいずれかの文字で終わり$現在%作業ディレクトリパスホスト名など情報が含まれることがよくあります#:>-

多くのUnixおよび派生システムでは、ユーザーが通常のユーザーの場合、プロンプトは一般に$または で終わりますが、ユーザーがスーパーユーザー(Unix 用語では「root」) の場合、プロンプトは で終わります。 %#

エンドユーザーは多くの場合、プロンプトを変更できます。環境に応じて、色、特殊文字、その他の要素(現在時刻、ユーザー、シェル番号、作業ディレクトリを表す変数や関数など)を追加できます。例えば、プロンプトの表示内容をより分かりやすくしたり、見た目を美しくしたり、複数のマシン上のセッションを区別したり、コマンドのネストレベルを示すことができます。一部のシステムでは、プロンプト定義内の特殊トークンを使用することで、プロンプトを表示しながらコマンドラインインタープリタによって外部プログラムを呼び出すことができます。

DOS の COMMAND.COM および Windows NT のcmd.exeでは、ユーザーは コマンドを発行するか、対応する環境変数PROMPTの値を直接変更することで、プロンプトを変更できます。最近のほとんどのシステムのデフォルトであるスタイルは、たとえば で取得されます。古い DOS システムのデフォルトはだけで取得されますが、一部のシステムでは、フロッピー ドライブ A: または B: で使用されない限り、これによって新しいスタイルが生成されます。これらのシステムでは、 を使用して自動デフォルトをオーバーライドし、古いスタイルに明示的に切り替えることができます。 %PROMPT%C:\>PROMPT $P$GC>PROMPTC:\>PROMPT $N$G

多くのUnixシステムでは$PS1変数(プロンプト文字列1)が提供されていますが[ 24 ] 、他の変数もプロンプトに影響を与える可能性があります(使用するシェルによって異なります)。Bashシェルでは、次のような形式のプロンプトが使用されます。

[時間]ユーザー@ホスト: work_dir $ 

コマンドを発行することで設定できる

エクスポートPS1 = '[\t] \u@\H: \W $'

zshでは、この変数は画面右側に表示される $RPROMPTオプションのプロンプトを制御します。これは、テキスト入力の位置が変化しないため、実際のプロンプトではありません。プロンプトと同じ行に、右揃えで情報を表示するために使用されます。

RISC OSではコマンドプロンプトはシンボルなので、(OS) CLIコマンドはスターコマンド*と呼ばれることが多い。[ 25 ]また、コマンドの前に.を付けることで、他のコマンドライン( BBC BASICコマンドラインなど)から同じコマンドにアクセスすることもできる。 *

IBM のTSOでは、コマンド プロンプトは、READYプロンプト内の単語にちなんで READY プロンプトと呼ばれます。

プロンプトシステム表示の例。
「Liquidprompt」コマンド プロンプト システムで表示できるすべての情報。ここでは「Jolly」テーマを使用しています。
デフォルトのテーマを使用した Liquidprompt の表示例。
Liquidprompt の「Pureship」テーマを使用した表示例。
Liquidprompt の「Powerline」テーマを使用した表示例。

Bash、zsh、PowerShellなどの一部のシェルでは、コマンドプロンプトにリモート接続の種類、マシンセンサーの状態、バージョン管理システムに関する追加情報など、より多くの情報を表示するプロンプトシステムを使用できます。これらのシェルでは、 ANSIカラーUnicode文字、高度なシェル機能などを使用して、カラフルな表示を設定することがよくあります。

議論

コマンドと引数の解析を示すMS-DOSコマンドライン

コマンドライン引数またはパラメータは、プログラムの起動時に提供される情報項目です。[ 26 ]プログラムには、情報のソースまたは宛先を識別したり、プログラムの動作を変更したりする多くのコマンドライン引数を設定できます。

コマンドプロセッサがアクティブな場合、プログラムは通常、プログラム名に続けてコマンドライン引数(存在する場合)を入力することで起動されます。例えば、UnixおよびUnix系環境では、コマンドライン引数の例は次のようになります。

rmファイル.s 

file.sは、 rmプログラムにという名前のファイルを削除するように指示するコマンドライン引数ですfile.s

CC++Javaなどの一部のプログラミング言語では、プログラムはメイン関数内でコマンドライン引数を文字列パラメータとして扱うことで、コマンドライン引数を解釈することができます。[ 27 ] [ 28 ] Pythonなどの他の言語では、特にコマンドライン引数については、モジュールを通じてオペレーティングシステム固有のAPI(機能)を公開しています。 syssys.argv

Unix 系オペレーティング システムでは、ファイル名の代わりに使用される単一のハイフンは、プログラムが標準入力からのデータを処理するか、標準出力にデータを送信するかを指定する特別な値です。

コマンドラインオプション

コマンドラインオプション、または単にオプション(フラグまたはスイッチとも呼ばれる)は、コマンドの動作を変更します。その効果はコマンドのプログラムによって決まります。オプションはコマンドライン上でコマンド名の後に、カンマやスペースなどで区切って指定します。区切り文字は必ずしも必要ではありません。例えばDOSの と はDir/?、DIRコマンドの利用可能なオプションを一覧表示するのとDIR /?同じ効果があります[ 23 ]dir --help 。一方、多くのUnixのバージョンでは、オプションの前に少なくとも1つのスペースが必要です(大文字と小文字は区別されます)。

オプションの形式はオペレーティングシステムによって大きく異なります。ほとんどの場合、構文はオペレーティングシステムの要件ではなく慣例によって定められています。コマンドライン全体はプログラムに渡される単なる文字列であり、インタープリタがコマンド名の終わりと引数およびオプションの始まりを判断できる限り、プログラマーはそれを任意の方法で処理できます。

いくつかの規則を説明するために、ディレクトリ内のファイルのリスト表示に関連するコマンドライン オプションの代表的なサンプルをいくつか示します。

オペレーティング·システム指示有効な代替案注記
オープンVMSdirectory/ownerDir /Ownerディレクトリコマンドにファイルの所有権も表示するよう指示します。ディレクトリコマンド名は大文字と小文字を区別せず、一意性を保つために必要な文字数に短縮できます。
ウィンドウズDIR/Q/O:S d*dir /q d* /o:s名前がd(またはD)で始まるファイルの所有権を、サイズが小さい順に表示します。引数d*の前後にはスペースが必要です。
Unix系システムls -lS D*ls -S -l D*名前がD(ただしdは除く)で始まるファイルとディレクトリを、サイズ順(大きい順)に長い形式で表示します。すべての引数とオプションの前後にはスペースが必要ですが、一部の引数とオプションは同時に使用できます。例えば、-lSは-l -Sと同じです。
データジェネラル RDOS CLIlist/e/s 04-26-80/bList /S/E 4-26-80/B1980 年 4 月 26 日より前に作成されたファイルのすべての属性を一覧表示します。日付引数の末尾の /B はローカル スイッチであり、その引数の意味を変更しますが、/S と /E はグローバル スイッチであり、コマンド全体に適用されることに注意してください。
VM/CMS CLILISTFILE (FULLDATE)l(fulリストには、ファイルが最後に書き込まれた日付が含まれます。LISTFILEコマンド名は大文字と小文字が区別されず、一意性を保つために必要な文字数に短縮できます。
OS/360オペレータコマンドSTART TAPERDR,DSNAME=FOO.BARS TAPERDR,DSN=FOO.BAR指定されたデータセット名でTAPERDRという名前のプロシージャを開始します。
TSOLISTCAT LEVEL(FOO) MEMBERSLISTC L(FOO) M指定されたインデックス レベルのデータセットを一覧表示し、各PDSのメンバーを一覧表示します。
SEND 'text' USER(FOO)SE 'text' U(FOO)指定されたユーザーにメッセージを送信する

コマンドライン引数の解析は、プログラムの引数を解析するために使用され、様々な言語で提供されています。例えば、getopt()は引数を解析するための C POSIX ライブラリに含まれています。

コマンドの省略

Multicsでは、コマンドラインオプションとサブシステムキーワードを省略できます。この考え方は、短縮キーワード(例:STRINGRANGE を STRG 、DECLARE を DCL )を持つPL/I プログラミング言語に由来するようです。例えば、Multicsフォーラムサブシステムでは、-long_subjectパラメータを-lgsjと省略できます。Multics コマンドも省略形がよく使用され、通常は単語の頭文字をアンダースコアで繋げてコマンド名を形成します。例えば、delete_iacl_dirdidを使用するなどです。

他のシステムでは、コマンド名の最初の文字の一部を一意に識別するのに十分な文字を許可するなど、省略形が自動的に使用されます (SUの省略形などSUPERUSER)。一方、特定の省略形が事前にプログラムされている (例: MDCOMMAND.COMの ) か、バッチ スクリプトやエイリアスMKDIRによってユーザーが定義する(例: tcsh ) システムもあります。 alias md mkdir

DOS、Windows、OS/2のオプション規約

DOS、OS/2、Windowsでは、COMMAND.COMまたはCMD.EXE(または内部コマンド)から呼び出される異なるプログラムが、同じオペレーティングシステム内で異なる構文を使用する場合があります。例えば、次のようになります。

  • オプションはスイッチ文字: /、のいずれかで指定できます-。また、いずれか一方のみが許可される場合もあります。以下を参照してください。
  • 大文字と小文字は区別される場合とされない場合があります。
  • オプションとその引数は、一緒に実行される場合もあれば、空白で区切られる場合もあり、文字 (通常は:または=) で実行される場合もあります。つまりProg -fFilenameProg -f FilenameProg -f:FilenameProg -f=Filename
  • プログラムによっては、1文字のオプションを組み合わせることができますが、[ 23 ]、そうでないものもあります。スイッチは、[ 23 ]-fAと同じ意味になる場合もあれば、正しくない場合もあります。あるいは、有効ではあっても異なるパラメータである場合もあります。-f -A

DOSOS/2Windowsでは、スラッシュ ( /) が最もよく使用されますが、ハイフンマイナスも時々使用されます。 DOS の多くのバージョン (MS-DOS/PC DOS 2.xx 以上、DR-DOS 5.0 以降のすべてのバージョン、PTS-DOSEmbedded DOSFreeDOSRxDOS )では、使用されるスイッチ文字( switcharまたはswitchcharと省略されることもある) は、システム コール( INT 21h /AX=3700h)から返される値によって定義されます。 この API によって返されるデフォルトの文字は です/が、上記のシステムではハイフンマイナスに変更できます。ただし、Datalight ROM-DOS および MS-DOS/PC DOS 5.0 以上では、常に/この呼び出しから戻ります (SwitChar 機能を再び有効にする多くのTSRの 1 つがロードされない限り)。これらのシステムの一部(MS-DOS/PC DOS 2.xx、DOS Plus 2.1、DR-DOS 7.02以上、PTS-DOS、Embedded DOS、FreeDOS、およびRxDOS)では、CONFIG.SYSのSWITCHAR指令で設定を事前構成することもできます。 General Software の Embedded DOS は同じ目的で SWITCH コマンドを提供しており、4DOSでは を介し​​て設定を変更できます。[ 29 ] DR-DOS では、設定が から変更された場合、 PROMPTパラメータの表示の最初のディレクトリ区切り文字がスラッシュ(DOS、FlexOS、4680 OS、4690 OS、OS/2、およびWindowsでも有効なディレクトリ区切り文字)に変わり、変更を示す視覚的な手がかりとなります。[ 23 ]また、現在の設定は組み込みのヘルプ画面にも反映されます。[ 23 ] DR-DOS COMMAND.COMの一部のバージョンでは、現在の設定を表示するためのPROMPTトークンもサポートされています。DR-DOS 7.02以降のCOMMAND.COMでは、移植可能なバッチジョブの作成を可能にするために、という名前の疑似環境変数も提供されています。 [ 30 ] [ 31 ]いくつかの外部DR-DOSコマンドでは、システム設定を上書きするための環境変数もサポートされています。 SETDOS /W:n/\$G/$/%/%%SWITCHAR%

しかし、多くのプログラムは、/コマンドライン引数を解析する前にスイッチ設定を取得するのではなく、 のみを使用するようにハードコードされています。ごく少数のプログラム(主にUnix系システムのポート)は、-スイッチ文字が設定されていなくても受け入れるようにプログラムされています(例えば、 Microsoft Windowsに付属のnetstatおよびは、利用可能なオプションを一覧表示する /? オプションを受け入れますが、その一覧には表記規則が指定されています)。 ping-

Unix系システムにおけるオプション規約

Unix系システムでは、オプションはASCIIのハイフンマイナスで始まります。新しい(そしてGNUの)慣例では、オプションの使用を識別するために2つのハイフンと1つの単語(例:--create)を使用しますが、古い慣例(頻繁に使用されるオプションとしてまだ利用可能)では、1つのハイフンと1つの文字(例:-c)を使用します。1つのハイフンの後に2つ以上の文字が続く場合は、2つのオプションが指定されていることを意味しているか、または2番目以降の文字が最初のオプションのパラメータ(ファイル名や日付など)であることを意味する場合があります。[ 32 ]

2つのハイフンマイナス記号(--)に続く文字がない場合、残りの引数をオプションとして扱わないことを示す場合があります。これは、ファイル名自体がハイフンで始まる場合や、追加の引数が内部コマンド(例:sudo)用である場合などに便利です。また、2つのハイフンマイナス記号は、より説明的なオプション名が使用される長いオプションの前に付けるために使用されることもあります。これはGNUソフトウェアの一般的な機能です。コマンドラインオプションの解析には、通常、 getopt関数とプログラム、およびgetoptsコマンドが使用されます。

Unix コマンド名、引数、およびオプションでは大文字と小文字が区別されます (ただし、主に他のオペレーティング システムの一般的なコマンドが Unix に移植されているいくつかの例を除きます)。

他のシステムにおけるオプション規約

FlexOS4680 OS4690 OSを使用します-

通常はCP/M[が使用されます。

会話型モニターシステム(CMS)は、コマンド末尾のオプションと他の引数を区切るために、単一の左括弧を使用します。例えば、次のコマンドでは、ターゲットファイルが存在する場合は置き換え、ソースファイルの日時をコピーに保持するオプションを指定しています。 COPY source file a target file b (REPLACE OLDDATE)

OS/360オペレータコマンドは、位置パラメータとキーワードパラメータをコンマで区切ったリストを使用します。有効なのは、ドキュメントに記載されているコマンドとキーワードの略語のみです。キーワード値は等号でキーワードと区切られます。

TSOコマンドは、位置パラメータとキーワードパラメータをスペースで区切ってリスト化します。キーワードは、任意の一意の部分文字列に切り捨てられます。有効なコマンドの省略形は、ドキュメントに記載されているもののみです。キーワード値は括弧で囲みます。

Data GeneralRDOSAOSなどのオペレーティング システムでの CLI、およびBusiness Basicに付属のバージョンの CLI では、/スイッチ文字として のみ が使用され、大文字と小文字が区別されず、一部の引数のローカル スイッチによって解釈方法を制御できます (マクロ アセンブラ コマンドにユーザー シンボルを追加するMAC/U LIB/S A B C $LPT/Lグローバル オプションがあるなどU)。ただし、2 つのローカル スイッチ (1 つはパス 2 でスキップする必要がある LIB を指定するスイッチ、もう 1 つはプリンタ $LPT にリストを直接送信するスイッチ) があります。

組み込みの使用ヘルプ

CLIに対する批判の一つは、利用可能なアクションに関する手がかりがユーザーに不足していることです。対照的に、GUIは通常、メニュー、アイコン、またはその他の視覚的な手がかりによって利用可能なアクションをユーザーに通知します。この制限を克服するために、多くのCLIプログラムは、通常、引数なしで、または、、、、、、、、、、、のいずれかで起動されたときに、使用方法メッセージ表示します。[ 23 ] [ 33 ] [ 34 ]?-?-h-H/?/h/H/Help-help--help

ただし、使用方法のヘルプが表示されることを期待してパラメータなしでプログラム名を入力すると、コマンドライン引数がオプションであるプログラムやスクリプトがそれ以上の通知なしに実行されるため、危険となる可能性があります。

少なくともヘルプパラメータには望ましいものの、プログラムは上記に例示したオプションのリードイン文字をすべてサポートするとは限りません。DOSでは、デフォルトのコマンドラインオプション文字/を からに変更できるため、プログラムは現在の設定を確認するためにSwitChar- APIに問い合わせる場合があります。そのため、プログラムがこれらすべてをサポートするようにハードワイヤードされていない場合、ユーザーはヘルプを確実に要求するためにも、現在の設定を知る必要があるかもしれません。SwitCharが に変更され、文字がDOSコマンドラインでも代替パス区切り文字として受け入れられる場合、プログラムはや などのオプションをヘルプパラメータではなくパスとして誤って解釈する可能性があります。[ 23 ]ただし、最初のパラメータまたは唯一のパラメータとして指定された場合、ほとんどのDOSプログラムは慣例により、現在のSwitChar設定に関係なく、それをヘルプ要求として受け入れます。[ 23 ] [ 29 ]-//h/H

プログラムによっては、異なるレベルのヘルプを選択できる場合があります。この機能をサポートするプログラムの中には、ヘルプパラメータ(/H:1/H:2など)のオプション引数として詳細度を指定できるものや、ヘルプパラメータについては疑問符付きの短いヘルプを表示し、その他のヘルプオプションについてはより長いヘルプ画面を表示するものもあります。[ 35 ]

プログラムによっては、受け入れられるパラメータに関する追加またはより具体的なヘルプが、ヘルプパラメータの引数として問題のパラメータを指定するか、またはその逆(または/H:W(プログラムでサポートされている別のパラメータである/W:?と仮定/W))によって利用できる場合があります。[ 36 ] [ 37 ] [ 34 ] [ 33 ] [ 35 ] [注1 ]

helpパラメータに似ていますが、あまり一般的ではないプログラムの中には、、、、などのaboutパラメータ付きで呼び出されると、自分自身に関する追加情報(モード、ステータス、バージョン、作成者、ライセンス、連絡先情報など)を提供するものあり-!ます。[ 33 ]/!-about--about

?および!文字は通常、コマンド ラインで他の目的にも使用される ため、すべてのシナリオで使用できるとは限りません。したがって、対応するヘルプ情報にアクセスするための唯一のオプションとして使用しないでください。

RT-11SJからのHELPコマンド出力の終了がVT100に表示される

プログラムの組み込みの内部ヘルプで提供されるものよりも詳細なヘルプが必要な場合、多くのシステムは、コマンド名を呼び出しパラメータとして受け入れ、外部ヘルプ システムを呼び出してくれる専用の外部「コマンド」(または同様のコマンド)をサポートしています。 helpcommand

DR-DOSファミリーでは、コマンドの代わりにCOMMAND.COMプロンプトで/?またはと入力すると、利用可能な内部コマンドの動的に生成されたリストが表示されます。 [ 23 ] 4DOSNDOSは、プロンプトでと入力することで同じ機能をサポートしています[ 29 ](これは、DR-DOS COMMAND.COMの新しいバージョンでも受け入れられます)。内部コマンドは、 を介して個別に無効にしたり、再度有効にしたりできます。[ 29 ]これに加えて、DR-DOS COMMAND.COMの新しいバージョンの一部では、利用可能な組み込み疑似環境変数のリストを表示するコマンドも受け入れます。クイックヘルプリファレンスとしての目的の他に、これはバッチジョブで、基礎となるコマンドラインプロセッサの機能を照会するために使用できます。[ 23 ]/H?SETDOS /I?%

コマンド記述構文

組み込みの使用法ヘルプやマニュアルページでは、有効なコマンド形式を説明するために短い構文が一般的に使用されています。[ 38 ] [ 39 ] [ 40 ] [注2 ]

  • 必須パラメータの山括弧:ping <hostname>
  • オプションパラメータの角括弧:mkdir [-p] <dirname>
  • 繰り返し項目の省略記号:cp <source1> [source2…] <dest>
  • 項目を選択するための縦棒:netstat {-t|-u}

これらの文字は、シェル内で直接使用した場合とは異なる意味を持つことに注意してください。パラメータ名とリテラル文字列を混同する可能性が低い場合は、山括弧を省略できます。

スペース文字

コンピューティングの多くの分野、特にコマンドラインでは、スペース文字が問題を引き起こす可能性があります。これは、スペース文字がコマンドまたはパラメータの一部として、あるいはパラメータまたは名前の区切りとして、異なる2つの機能を持ち、互いに互換性がないためです。曖昧さを防ぐには、ファイル名やディレクトリ名にスペース文字を最初から含めないようにする(例えば、アンダースコア_に置き換える)か、スペース文字を含む名前を引用符で囲むか、スペース文字の前にエスケープ文字(通常はバックスラッシュ)を使用するかのいずれかです\。例えば、

Long path/Long program name Parameter one Parameter two

曖昧です(プログラム名はプログラム名の一部ですか、それとも2つのパラメータですか?)ただし

Long_path/Long_program_name Parameter_one Parameter_two…、
LongPath/LongProgramName ParameterOne ParameterTwo…、
"Long path/Long program name" "Parameter one" "Parameter two"

そして

Long\ path/Long\ program\ name Parameter\ one Parameter\ two

曖昧ではありません。Unixベースのオペレーティングシステムでは、引用符の必要性を最小限に抑えるために、埋め込みスペースの使用を最小限に抑えています。Microsoft Windowsでは、埋め込みスペース(ディレクトリ名など)が一般的であるため、引用符を使用する必要があることがよくあります。

コマンドラインインタープリター

多くのユーザーはシェルを対話型のコマンドインタープリタと考えていますが、実際には各文がコマンドを実行するプログラミング言語です。コマンド実行における対話的な側面とプログラミング的な側面の両方を満たす必要があるため、シェルは設計だけでなく歴史によっても形作られた奇妙な言語です。

コマンドラインインタープリタという用語は、ユーザーが入力したり、ファイルやその他のデータストリームから読み込んだりする一連のテキスト行を解釈するように設計されたコンピュータプログラムに適用されます。解釈のコンテキストは通常​​、特定のオペレーティングシステムまたはプログラミング言語のいずれかです。

コマンドラインインタープリタを使用すると、ユーザーは様々なコマンドを非常に効率的(かつ簡潔)に実行できます。ただし、そのためには、ユーザーはコマンド名とそのパラメータ、そしてインタープリタ処理される言語の構文を理解している必要があります。

Unixの#!メカニズムとOS/2のEXTPROCコマンドは、バッチファイルを外部プロセッサに渡すことを可能にします。これらのメカニズムを利用することで、特定の用途に特化したコマンドプロセッサを作成し、バッチファイル内に存在する外部データファイルを処理することができます。

OS/2プレゼンテーションマネージャや初期のMicrosoft Windowsなど、多くのグラフィカルインターフェースでは、ドキュメントやプログラムを開くためにコマンドラインを使用してヘルパープログラムを呼び出します。コマンドはグラフィカルシェル、またはレジストリやOS/2 ファイルなどのファイルに保存されますOS2USER.INI

初期の歴史

テレタイプモデル33 ASRテレプリンターキーボード、パンチテープリーダーとパンチ
DEC VT52端末

初期のコンピュータは対話型の入出力デバイスをサポートしておらず、コンピュータオペレータとの通信には多くの場合、センススイッチやランプに依存していました。これは、一度に1つのプログラムを実行するバッチシステム(多くの場合、プログラマがオペレータとして操作)には十分でした。また、ランプやスイッチを1つのマシン命令でテストおよび設定できるため、オーバーヘッドが低いという利点もありました。後に、オペレータがシステムと通信できるように、 単一のシステムコンソールが追加されました。

1960 年代以降、ユーザーとコンピューターのやり取りは主にコマンド ライン インターフェイスによって行われ、最初はTeletype Model 33 ASR などのマシンで行われ、その後VT52などの初期のCRTベースのコンピューター端末でも行われるようになりました。

これらのデバイスはすべて純粋にテキストベースであり、グラフィックや画像を表示する機能はありませんでした。[注 3 ]ビジネスアプリケーションプログラムではテキストベースのメニューが使用されていましたが、より一般的な対話にはコマンドラインがインターフェイスでした。

1964年頃、ルイ・プーザンは、互換タイムシェアリングシステム(CTSS)の初期のより単純な機能を基にして、Multicsシェルの概念と名前を導入しました。[ 42 ]

1970年代初頭から、Unixオペレーティングシステムは強力なコマンドライン環境の概念を採用し、あるコマンドの出力を別のコマンドの入力としてパイプする機能を導入しました。また、Unixには、コマンド文字列をシェルスクリプトとして保存し、カスタムコマンドのように再実行する機能もありました。

コマンドラインは、コモドールPETApple IIBBC Microといった初期の家庭用コンピュータの主要なインターフェースでもあり、ほとんどの場合、 BASICインタープリタ の形式で動作していました。CP /MIBM PCといった後発のDOSコンピュータなど、より強力なビジネス向けマイクロコンピュータが登場すると、コマンドラインは出力のグロブパイプといったUnixシェルの構文や機能の一部を取り入れるようになりました。

コマンドラインが初めて深刻な脅威にさらされたのは、1983年のApple Lisaと1984年のApple Macintoshで採用されたPARC GUIアプローチでした。GEOSやWindows 3.1などのGUIを採用したコンピュータユーザーも少数いましたが、 IBM PCユーザーの大多数は、 1995年にWindows 95がリリースされるまで、 COMMAND.COMシェルをGUIに置き換えることはありませんでした。[ 43 ] [ 44 ]

オペレーティングシステムシェルとしての現代的な使用法

現在、ほとんどの非熟練コンピュータ ユーザーはほぼ GUI のみを使用していますが、より上級のユーザーは強力なコマンド ライン環境にアクセスできます。

スクリプト

ほとんどのコマンドラインインタープリタは、様々な程度でスクリプトをサポートしています。結局のところ、コマンドラインインタープリタはインタープリタ型プログラミング言語のインタープリタですが、多くの場合、その言語は特定のコマンドラインインタープリタに固有のものです。インタープリタは、シェルスクリプトバッチファイルなどと呼ばれる、解釈対象の言語で書かれたスクリプトを解釈します。一部のコマンドラインインタープリタは、独自の言語に加えて、 REXXなどの他の言語のインタープリタエンジンも組み込んでおり、それらの言語で書かれたスクリプトをコマンドラインインタープリタ内で直接実行できます。

逆に、スクリプトプログラミング言語、特にeval関数を持つ言語(REXX、PerlPythonRubyJythonなど)は、コマンドラインインタープリタやフィルタの実装に使用できます。一部のオペレーティングシステム(特にDOS)では、このようなコマンドインタープリタは、標準装備のコマンドラインインターフェースよりも柔軟なインターフェースを提供します。また、言語のユーザーインターフェースや入出力機能を利用して、高度にカスタマイズされたユーザーインターフェースを提供することもできます。

その他のコマンドラインインターフェース

コマンドラインは、プログラムとユーザー間のインターフェースを提供します。この意味で、コマンドラインはダイアログボックスの代替手段です。エディタやデータベースはコマンドラインを提供し、そこで代替コマンドプロセッサが実行される場合があります。一方、コマンドラインにオプションを指定すると、ダイアログボックスが開きます。「Take Command」の最新バージョンにはこの機能が搭載されています。DBaseはダイアログボックスを使用してコマンドラインを作成し、使用前にさらに編集することができました。

BASIC、diskpartEdlin、QBASIC などのプログラムはすべてコマンドラインインターフェースを提供しており、その一部はシステムシェルを使用します。Basic は、8ビット Intel コンピュータのデフォルトインターフェースをモデルにしています。電卓は、コマンドラインまたはダイアログインターフェースとして実行できます。

Emacsはミニバッファという形でコマンドラインインターフェースを提供します。コマンドと引数はEmacsの標準テキスト編集機能を使って入力でき、出力は別のバッファに表示されます。

AdventureKing's Quest 1-3など、ユーザーが画面下部にコマンドを入力するテキストモードゲームは数多く存在します。「指輪をゲット」や「見る」といったコマンドを入力することでキャラクターを操作します。プログラムは、キャラクターが指輪をどのように見ているかを説明するテキストを返したり、アクションを実行したりします。ダグラス・アダムスの同名小説を 原作としたインタラクティブフィクション作品であるテキストアドベンチャー『銀河ヒッチハイク・ガイド』は、テレタイプ形式のコマンドラインゲームです。

これらのインターフェースの中で最も注目すべきは、標準ストリームインターフェースです。これにより、あるコマンドの出力を別のコマンドの入力に渡すことができます。テキストファイルも同様にどちらの目的にも使用できます。これは、パイプ、フィルタ、リダイレクトといったインターフェースを提供します。Unixではデバイスもファイルであるため、シェルでstdin、stdout、stderrとして使用される通常のファイル形式はttyデバイスファイルです。

もう一つのコマンドラインインターフェースは、シェルプログラムからヘルパープログラムを起動し、ドキュメントを起動したりプログラムを起動したりすることを可能にします。コマンドはシェル内部で処理され、その後別のプログラムに渡されてドキュメントを起動します。WindowsとOS/2のグラフィカルインターフェースは、コンソールまたはグラフィカルな他のプログラムに渡されるコマンドラインに大きく依存しており、これらのプログラムは通常、ユーザーコンソールを表示することなくコマンドラインを処理します。

OS/2 E エディターやその他の IBMエディターなどのプログラムは、通常はシェル用のコマンド ラインを処理でき、出力はドキュメント ウィンドウに直接配置されます。

ウェブブラウザのURL入力フィールドはコマンドラインとして使用できます。ウェブアプリの起動ブラウザ設定へのアクセス、検索の実行などに使用できます。「インターネットのコマンドライン」と呼ばれるGoogleは、既知の形式の検索パラメータを検出すると、ドメイン固有の検索を実行します。 [ 54 ]この機能は、検索がブラウザのフィールドから開始された場合でも、Googleのウェブサイトから開始された場合でも利用できます。

ブラウザ上でスタンドアロンのWebアプリとして、あるいはより大きなアプリケーションの一部としてコマンドラインアプリケーションを作成できるJavaScriptライブラリがあります。 [ 55 ]このようなWebサイトの例としては、 DuckDuckGoのCLIインターフェースがあります。[ 56 ]また、ブラウザからサーバーのコマンドラインインターフェースにアクセスできる WebベースのSSHアプリケーションもあります。

多くのPCビデオゲームには、コンソールと呼ばれるコマンドラインインターフェースが搭載されています。これは通常、ゲーム開発者が開発中に使用したり、MOD開発者がデバッグやチート、ゲームの一部をスキップするために使用したりするために使われます。

参照

注記

  1. ^一例として、 DR-DOS 7.03 DEBUGコマンドの包括的な内部ヘルプシステムが挙げられます。これは、デバッグプロンプトから(デフォルトの概要だけでなく(を介して選択できます、特定のコマンドのヘルプを表示できます。fe、さまざまなダンプコマンド(など)のヘルプを呼び出します。これらの機能の一部は、 DR DOS 3.41 SID86およびGEMSIDで既にサポートされていました。????nn??DD
  2. ^ DOS系オペレーティングシステムのコマンド構文の記述における顕著な違い:Windows Server 2003 R2のドキュメントでは「ユーザーが入力する必要がある情報」に斜体文字を使用していますが、Windows Server 2008のドキュメントでは山括弧を使用しています。斜体は内部ヘルプコマンドでは表示できませんが、山括弧は問題ありません。
  3. ^ ASCIIアートを除く。

参考文献

  1. ^ 「SQLite のコマンドラインシェル」
  2. ^ 「CAS - コマンドラインシェルの構成」
  3. ^ 「コマンドラインインターフェース(CLI)の進化:歴史的考察 | Contentstack」 www.contentstack.com . 2025年1月28日閲覧
  4. ^スタッフ、Coursera (2025年11月11日). 「コマンドラインインターフェースとは?」 . Coursera . 2026年1月9日閲覧
  5. ^ 「Unix Shells」 。2007年11月8日にオリジナルからアーカイブ。OSカーネルと緊密に統合された「モニター」ではなく、交換可能な「コマンドシェル」を持つという概念は、Multicsに起因すると考えられています。
  6. ^ a b「貝殻の起源」 www.multicians.org . 2017年12月21日時点のオリジナルよりアーカイブ2017年4月12日閲覧。
  7. ^ Metz, Cade (2013年1月3日). 「インターネットで長らく行方不明だったフランス人のおじさんにボンジュールを」 . Wired . 2017年7月31日閲覧
  8. ^ Mazières, David (2004年秋). 「MULTICS - 最初の7年間」 .高度なオペレーティングシステム. スタンフォード大学コンピュータサイエンス学部. 2014年11月23日時点のオリジナルよりアーカイブ。 2017年8月1日閲覧
  9. ^ a b Jones, M. (2011-12-06). 「Linuxにおけるシェルの進化」 . developerWorks . IBM . 2017年7月8日時点のオリジナルよりアーカイブ2017年8月1日閲覧。
  10. ^ 「グラフィカルユーザーインターフェースの歴史」KASS2024年3月24日閲覧
  11. ^ Singh, Amit (2006-06-19). Mac OS X 内部構造:システムアプローチ. Addison-Wesley Professional. ISBN 978-0-13-270226-3
  12. ^ 「1. コマンドラインと環境」 . Pythonドキュメント. 2024年8月5日閲覧。
  13. ^ 「CLIとは? - コマンドラインインターフェースの説明 - AWS」 Amazon Web Services, Inc. 2025年1月28日閲覧
  14. ^ 「GNU BASHリファレンス」2010年12月3日時点のオリジナルよりアーカイブ2015年12月20日閲覧。
  15. ^ 「Microsoft Windows コマンドシェルの概要」 2009年9月11日。2015年9月5日時点のオリジナルよりアーカイブ2015年7月12日閲覧。
  16. ^ 「シェル組み込みコマンドリスト」 . Linuxハンドブック. 2023年7月5日. 2024年8月5日閲覧
  17. ^ B, Jason. 「Linuxで$PATH変数を設定する方法 | Opensource.com」 . opensource.com . 2024年8月5日閲覧
  18. ^ JasonGerend (2023年2月3日). 「path」 . learn.microsoft.com . 2024年8月5日閲覧。
  19. ^ 「コマンドラインインターフェース(CLI)」 . tutorials.cloudfoundry.org . 2025年1月28日閲覧
  20. ^ 『bashシェルの学習』 UNIXシェルプログラミング(第2版)O'Reilly Media . 1998年1月. ISBN 978-1-56592-347-8. 2024年8月5日閲覧
  21. ^ SIDユーザーズガイド(PDF) . Digital Research . 1978. 595-2549. 2019年10月20日時点のオリジナルよりアーカイブ(PDF) . 2020年2月6日閲覧(4+69ページ)
  22. ^ SID-86 User's Guide for CP/M-86 (2 ed.). Digital Research . August 1982 [March 1982]. SID86UG.WS4. 2019年10月20日時点のオリジナルよりアーカイブ。 2020年2月6日閲覧[1](注:エマニュエル・ロッシュによるマニュアルの再入力版で、Q、SR、Zコマンドが追加されています。)
  23. ^ a b c d e f g h i j k Paul, Matthias R. (1997-07-30). "NWDOS-TIPs – Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds" . MPDOSTIP . Release 157 (in German) (3 ed.). 2017-09-10時点のオリジナルよりアーカイブ。2014-09-06閲覧(注: NWDOSTIP.TXT はNovell DOS 7およびOpenDOS 7.01に関する包括的な作業であり、多くの文書化されていない機能と内部構造の説明が含まれています。これは、2001 年まで維持され、当時多くのサイトで配布されていた、著者がさらに大規模に管理していた MPDOSTIP.ZIP コレクションの一部です。提供されているリンクは、HTML に変換された NWDOSTIP.TXT ファイルの古いバージョンを指しています。)
  24. ^パーカー、スティーブ (2011). 「第11章 シェルの選択と使用」.シェルスクリプト:Linux、Bashなどのためのエキスパートレシピ. プログラマーからプログラマーへ. インディアナポリス、米国: John Wiley & Sons . p. 262. ISBN 978-111816632-1シェルには、PS1、P52、P53、PS4という4つの異なるコマンドプロンプトがあります。PSはPrompt String(プロンプト文字列)の略です。
  25. ^ RISC OS 3 ユーザーガイド(PDF) . Acorn Computers Limited . 1992年3月1日. p. 125. 2017年1月9日時点のオリジナルよりアーカイブ(PDF) . 2017年4月12日閲覧
  26. ^ nguyen-dows (2024年5月29日). 「Windowsターミナルのコマンドライン引数」 . learn.microsoft.com . 2024年8月5日閲覧。
  27. ^ 「Cのコマンドライン引数」 www.w3schools.in . 2024年8月5日閲覧
  28. ^ 「Javaのコマンドライン引数」 . GeeksforGeeks . 2016年8月16日. 2024年8月5日閲覧
  29. ^ a b c d Brothers, Hardin; Rawson, Tom ; Conn, Rex C .; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (2002-02-27). 4DOS 8.00 オンラインヘルプ.
  30. ^ Paul, Matthias R. (1998-01-09). DELTREE.BAT R1.01 Extended file and directory delete . Caldera, Inc. 2019年4月8日時点のオリジナルよりアーカイブ。 2019年4月8日閲覧
  31. ^ DR-DOS 7.03 WHATSNEW.TXT — DR-DOS 7.02 から DR-DOS 7.03 への変更カルデラ社、 1998-12-24。2019年4月8日のオリジナルからアーカイブ2019年4月8日に取得
  32. ^ 「引数構文(GNU Cライブラリ)」gnu.org。 2021年6月18時点のオリジナルよりアーカイブ2021年7月9日閲覧。
  33. ^ a b c Paul, Matthias R. (2002-05-13). "[fd-dev] mkeyb" . freedos-dev . 2018-09-10にオリジナルからアーカイブ。2018-09-10に取得。 [ …] CPI /H […] CPI [@] [@] [/?|/Help[:topic]) [/!|/About] […] [?|&] […] /?, /Help このヘルプ画面またはトピックの特定のヘルプを表示します (+) […] /!, /About 「About」情報画面を表示します […] /Cpifile (+) .CPI/.CP ファイル名 <EGA.CPI>; 拡張子: <.CPI>; CPI.EXE=StdIn […] /Report レポートファイル名 <''=StdOut>; 拡張子: <.RPT> […] /Style (+) エクスポート <0>-6=BIN-raw/ROM/RAM/PSF0/1/SH/CHED; 7-12/13-18/19-24=ASM-hex/dec/bin/ip/il/p/l/mp/ml […] CPI /H:C […] コードページ ファイル パラメータの使用法の概要: […] CPI /H:S […] /Style パラメータの概要: […] ?, & オンライン編集モード (追加パラメータの入力を求めるプロンプト) […]
  34. ^ a b Paul, Matthias R. (2002-01-09). "SID86" .ニュースグループcomp.os.cpm . 2018-04-08閲覧. […] DR-DOS 7.03 DEBUG は依然として古いSID86.EXEをベースにしているため、DEBUG 1.51 を実行し、デバッグプロンプトから ?? で拡張ヘルプシステムに入ることをお勧めします。これにより、構文と機能に関するヘルプが8画面表示されます。これらの機能の一部は、以前のバージョンでもサポートされていました。[…]
  35. ^ a b Paul, Matthias R.; Frinke, Axel C. (2006-01-16). FreeKEYB - 高度な国際DOSキーボードおよびコンソールドライバ(ユーザーマニュアル)(v7予備版).
  36. ^ CCI Multiuser DOS 7.22 GOLD オンラインドキュメント. Concurrent Controls, Inc. (CCI). 1997-02-10. HELP.HLP.(注: シンボリック命令デバッガーSID86は、 に関する短いヘルプ画面?と に関する包括的なヘルプを提供します??。)
  37. ^ Paul, Matthias R. (1997-05-24) [1991]. 「DRDOSTIP.TXT – Tips und Tricks für DR DOS 3.41 - 5.0」 . MPDOSTIP (ドイツ語) (第47版). 2016年11月7日時点のオリジナルよりアーカイブ。 2016年11月7日閲覧
  38. ^ 「The Open Group Base Specifications Issue 7、第12.1章 ユーティリティ引数構文」 The Open Group、2008年。2013年4月30日時点のオリジナルよりアーカイブ2013年4月7日閲覧。man-pages(7) –  Linux の規則と雑多なマニュアル(注: Unix 系オペレーティング システム上のコマンドを記述するための規則)
  39. ^ 「コマンドシェルの概要」 . Windows Server 2003 製品ヘルプ. Microsoft . 2005年1月21日. 2012年7月12日時点のオリジナルよりアーカイブ2013年4月7日閲覧。
  40. ^ 「コマンドライン構文キー」 . Windows Server 2008 R2 TechNetライブラリ. Microsoft . 2010年1月25日. 2013年5月4日時点のオリジナルよりアーカイブ。 2013年4月7日閲覧
  41. ^カーニハン, ブライアン・W. ;パイク, ロブ(1984). UNIXプログラミング環境. エングルウッド・クリフス:プレンティス・ホール. ISBN 0-13-937699-2
  42. ^ Pouzin, Louis. 「貝殻の起源」 . Multicians.org . 2017年12月21日時点のオリジナルよりアーカイブ。 2013年9月22日閲覧
  43. ^ Wilcox, Joe (2010年8月24日). 「Windows 95の発売から15年を経て振り返る」 . BetaNews . 2015年2月18日時点のオリジナルよりアーカイブ。 2015年2月18日閲覧
  44. ^ 「Windowsの歴史」 . windows.microsoft.com . 2015年3月1日時点のオリジナルよりアーカイブ
  45. ^ "master - platform/external/mksh - Git at Google" . android.googlesource.com . 2016年1月21日時点のオリジナルよりアーカイブ。 2018年3月18日閲覧
  46. ^ 「Android adb shell - ash か kshか?」 stackoverflow.com . 2017年7月2日時点のオリジナルよりアーカイブ2018年3月14日閲覧。
  47. ^ 「Android sh ソース」 . GitHub . 2012年12月17日時点のオリジナルよりアーカイブ
  48. ^ 「Android ツールボックス ソース。GitHub
  49. ^ 「Windows POSIXシェル互換性」 2013年2月22日. 2017年7月3日時点のオリジナルよりアーカイブ2017年8月26日閲覧。
  50. ^ openharmony/third_party_toybox、OpenHarmony、2021年10月14日、 2024年7月7日閲覧
  51. ^ "调测 - Shell介绍 - 《华為鸿蒙操作系统(OpenHarmony) v1.0 开発行者文档》 - 书栈网 · BookStack"www.bookstack.cn 2024-07-07に取得
  52. ^ 「Configuration Fundamentals Configuration Guide, Cisco IOS Release 15M&T」 . Cisco . 2013年10月30日. コマンドラインインターフェイスの使用. 2016年11月18日時点のオリジナルからのアーカイブ。 2016年11月28日閲覧。Cisco IOSコマンドラインインターフェイス(CLI)は、主要なユーザーインターフェイスです…
  53. ^ 「コマンドラインインターフェースの概要」 www.juniper.net 2003年9月8日時点のオリジナルよりアーカイブ2018年3月14日閲覧。
  54. ^ 「Google strange goodness」 2014年3月4日時点のオリジナルよりアーカイブ。 2014年2月27日閲覧
  55. ^ “jQueryターミナルエミュレータ” . 2021年4月20日時点のオリジナルよりアーカイブ2021年4月20日閲覧。
  56. ^ “DuckDuckGo TTY” . 2021年5月7日時点のオリジナルよりアーカイブ2021年4月20日閲覧。
  • DOS のルーツ、David Hunter、IBM パーソナル コンピュータ用 Softalk、 1983 年 3 月。2000以降 Patersontech.com にアーカイブされています。
  • Windows コマンド: Microsoft TechNet データベース「コマンドライン リファレンス」