コマンド (コンピュータ)

コマンド (コンピュータ)



コンピュータシステムにおけるコマンドとは、システムに対する指示や命令のことです。ジョブやタスクをコンピュータに実行させるために用いられ、コンピュータ本体と周辺機器間、ソフトウェア間の通信、エンドユーザーからの対話的な操作など、様々な状況で使用されます。また、命令型プログラミング言語においても「コマンド」という用語が用いられることがあります。

OSコマンド



対話環境を持つオペレーティングシステム (OS) において、コマンドラインインタプリタ (シェル) が解釈し実行する文字列を「コマンド」と呼びます。多くのOSコマンドは、引数を任意に取ることができます。引数は通常文字列ですが、コマンドの対象となるオブジェクト(ファイルなど)や、動作を細かく変更するオプションを指定するために使用されます。オプション文字列には、Unix系システムではハイフン `-`、MS-DOSではスラッシュ `/` を前置する慣習があります。オプションを省略した場合、既定値が適用されます。

内部コマンドと外部コマンド

コマンドの例



以下に、コマンドラインインタプリタ (Unix系のシェル) で使用されるコマンドの例を示します。

`cd /home/pete`: ユーザーのカレントディレクトリを `/home/pete` に変更します。`cd` がコマンド本体、`/home/pete` が引数です。
`echo "Hello World"`: 「Hello World」という文字列を標準出力ストリームに出力し表示します。`echo` がコマンド本体、`"Hello World"` が引数です。引用符は、`Hello` と `World` が別々の引数として解釈されるのを防ぐために使用されています。
`ls -l -t -r /bin` または `ls -ltr /bin`: `/bin` ディレクトリにあるファイルの一覧を表示します。`ls` がコマンド本体、`/bin` が引数、`-l`, `-t`, `-r` がフラグです。
`cat ch1.txt ch2.txt`: `ch1.txt` と `ch2.txt` というファイルの内容を表示します。`cat` がコマンド本体、`ch1.txt` と `ch2.txt` が引数です。
`touch hoge.txt piyo.txt`: `hoge.txt` と `piyo.txt` という2つのファイルを作成します。`touch` がコマンド本体、`hoge.txt` と `piyo.txt` が引数です。

以下は、別のコマンドラインインタプリタ (DOS, OS/2, Microsoft Windows のコマンドプロンプト) で使用されるコマンドの例です。フラグの定義は環境によって異なりますが、概念は同様です。

`dir /A`: カレントディレクトリの内容を一覧表示します。`dir` がコマンド本体、`/A` はフラグです。
`type /P readme.txt`: ファイル `readme.txt` の内容を表示します。`type` がコマンド本体、`readme.txt` が引数、`/P` はパラメータです。

コマンドプロセッサの起動とセキュリティ脆弱性



C言語およびC++では、ホスト環境のコマンドプロセッサを起動してコマンドを実行できる `system()` 関数が用意されています。POSIXには、パイプを利用したストリームを開く `popen()` 関数も存在します。これらの機能を利用すると、システムが提供するコマンドをアプリケーションソフトウェアで直接利用できます。PerlPythonなどのスクリプト言語にも同様の機能があります。

しかし、ユーザーが入力したコマンド文字列を適切に無害化せずに、任意のOSコマンドを実行できるようにした場合、攻撃者が悪意のあるコマンド文字列を入力することで、実行環境への侵入や乗っ取り、システム破壊を許してしまうセキュリティ脆弱性が生じることがあります。この種の攻撃手法は「OSコマンドインジェクション」または「コマンドインジェクション」と呼ばれます。

周辺機器の制御コマンド



コンピュータに接続された周辺機器を制御するための指令も「コマンド」と呼ばれます。ソフトウェアはシリアル通信などの規格化されたインターフェイスを介して、機器の仕様に従った情報を送信することで、コマンドを発行しハードウェアと通信します。例えば、グラフィックスハードウェア (GPU) やプリンターに対する描画命令が該当します。コマンドは、ハードウェアを高度に抽象化したAPIやデバイスドライバを通じて発行されることもあり、その場合、アプリケーションソフトウェア層ではコマンドの存在を意識する必要がないこともあります。

GUIにおけるコマンド



グラフィカルユーザーインターフェイス (GUI) の要素を操作することで、対応するアクションを発生させることを「コマンド」と呼ぶことがあります。例えば、メニュー内の各アイテムや、ボタンをクリックした際に特定の動作をソフトウェアに実行させることを、ソフトウェアやコンピュータに対する指示とみなします。この「コマンド」は、GUIフレームワークにおける概念・用語として使用されることがあります。

コンピュータゲームにおけるコマンド



コンピュータゲームにおいて、ユーザー (プレイヤー) がゲーム内のキャラクターに与える指示を「コマンド」と呼ぶことがあります。

古典的なアドベンチャーゲームシミュレーションゲーム、ターン制ロールプレイングゲーム (コンピュータRPG) では、場面に応じて各キャラクターが次にとる行動がいくつかの選択肢として用意されており、これらの選択肢がコマンドと呼ばれます。画面上でコマンドが配置されている領域はコマンドメニューと呼ばれ、テキストが列挙されていたり、アイコンが配置されていたりします。コマンドを選択後、動作の対象となるもの(攻撃目標やアイテムなど)を選択する必要がある場合もあります。

対戦型格闘ゲームでは、キャラクターごとに用意された固有の必殺技を繰り出すための、ジョイスティックやボタンを使った一連の入力手順や組み合わせをコマンドと呼びます。一般的に、威力の高い技ほどコマンドが複雑になります。

特定の画面または状況で、一定時間内に特定の方向キーやボタンを順番に入力することで、公式マニュアルには記載されていないオプション (裏技) が使えるようになる「隠しコマンド」を持つ作品もあります。

関連項目



メニュー (コンピュータ)
* Command パターン

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。