ターミナル、コンソール、シェル、コマンドラインの違いは何ですか?


211

ターミナル、コンソール、シェル、コマンドラインの違いは何ですか?


1
(1/2)Agent Coolはほとんど正しいですが、彼が提供するコンソールの定義はこのトピックを考えると時代遅れのものです。あなたがそれに従えば、彼のリンクは正しい情報を持っています。彼のリンクで定義全体を読んでください。コンソールは、多くの類似したものを意味するために大まかに使用されますが、最も重要なのは、通常、キーボード、ディスプレイ、およびマウスなどのローカル接続された人間の入出力デバイスを指します。
0xSheepdog

1
(2/2)これは教訓的な点のように見えるかもしれませんが、ベテランのシステム管理者として、そうではないことを伝えます。システムに問題があり、完全にクラッシュ/ダウン/オフラインしているように見える場合は、システムの物理コンソールをチェックして、まだ機能しているがネットワーク接続が失われたかどうかを確認する必要があります。この小さなディテールにより、データや情報処理などを節約したり、コストをかけたりする可能性があります。しかし重要です。
0xSheepdog

6
@ 0xSheepdogこれらのコメントを完全な回答(他の用語の定義や説明も含む)に展開し、そのまま投稿することもできます。質問が複数の回答を持つことは悪くありません(おそらく、まったく同じ情報を同じ方法で伝える場合を除きます)。マシンをローカルでチェックする重要なプラクティスが実際にその物理的なヒューマンインターフェースをコンソールに知っている/呼び出すことに依存している理由はわかりませんが、同僚との効果的なコミュニケーションやドキュメントの使用に重要であるという議論があるかもしれません。(あなたの答えでそれを明確にするかもしれません。)
エリアカガン14

4
密接な関係(すべての適切な回答を参照)により、これらの用語は同義語として使用される場合があります。
マーク14

回答:


143

簡潔な答え:

  • 端末 =テキスト入力/出力環境
  • コンソール =物理端末
  • shell =コマンドラインインタープリター

長い答え:

コンソールと端末は密接に関連しています。もともとは、コンピュータとやり取りできる機器のことでした。Unixの初期には、タイプライター(テレタイプライターと呼ばれることもある)、または略して「tty」に似たテレプリンタースタイルのデバイスを意味していました。「端末」という名前は電子的な観点から来ており、「コンソール」という名前は家具の観点から来ています。UNIXの歴史のごく初期に、電子キーボードとディスプレイが端末の標準になりました。

ターミナル

UNIXの用語では、端末は特定の種類のデバイスファイルであり、読み取りおよび書き込みを超える多くの追加コマンド(ioctl)を実装します。一部の端末は、ハードウェアデバイスに代わってカーネルによって提供されます。たとえば、キーボードからの入力とテキストモード画面への出力、またはシリアル回線を介した入出力が提供されます。疑似端末または疑似ttyと呼ばれることもある他の端末は、端末エミュレーターと呼ばれるプログラムによって(シンカーネルレイヤーを介して)提供されます。ターミナルエミュレータには、次の種類があります。

  • X Window Systemで実行されているGUIアプリケーション:Xterm、Gnome Terminal、Konsole、Terminatorなど
  • Screentmux。プログラムと別の端末の間の分離層を提供します
  • Ssh、あるマシン上の端末を別のマシン上のプログラムに接続します
  • 期待して、端末間の相互作用のスクリプト作成に関する、

ターミナルという言葉は、コンピューター、通常はキーボードやディスプレイと対話するためのデバイスという、より伝統的な意味を持つこともできます。たとえば、X端末は一種のシンクライアントであり、キーボード、ディスプレイ、マウス、および場合によっては他の人間とのやり取りの周辺機器を駆動し、実際のアプリケーションを別のより強力なコンピューターで実行することを唯一の目的とする専用コンピューターです。

コンソール

コンソールは、一般的にいくつかの定義によって直接コンピュータに接続された一次端子である物理的な意味で端末です。コンソールは、オペレーティングシステムからは(カーネル実装)端末として表示されます。LinuxやFreeBSDなどの一部のシステムでは、コンソールは複数の端末(tty)として表示されます(これらの端末間で特別なキーの組み合わせが切り替わります)。問題を混乱させるために、特定の各端末に付けられる名前は、「コンソール」、「仮想コンソール」、「仮想端末」、およびその他のバリエーションにすることができます。

「仮想端末が「仮想」である理由、および「実際の」端末は何/なぜ/どこにあるのかも参照してください

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

コマンドラインは、ユーザータイプ(文字列として表現される-いくつかのパラメータが続く、典型的には、コマンド名)コマンドインタフェースであり、押圧Returnそのコマンドを実行するキー。

シェル

シェルは、その主な目的の他のプログラムを開始するユーザーがログイン時に参照主要なインターフェイスです。(元の比phorがシェルがユーザーのホーム環境であるかどうか、またはシェルが他のプログラムが実行されているものであるかどうかはわかりません。)

UNIXサークルでは、シェルコマンドラインシェルを意味するように特化されており、起動したいアプリケーションの名前を入力し、その後にアプリケーションが動作するファイルまたはその他のオブジェクトの名前を入力し、Enterキーを押します。他のタイプの環境(最近のGnome Shellの例外を除く)は、通常、「shell」という単語を使用しません。たとえば、ウィンドウシステムには、「シェル」ではなく「ウィンドウマネージャ」と「デスクトップ環境」が含まれます。

多くの異なるUNIXシェルがあります。UbuntuのデフォルトのシェルはBashです(他のほとんどのLinuxディストリビューションと同様)。人気のある代替手段には、zsh(パワーとカスタマイズ性を重視)とfish(シンプルさを重視)があります。

コマンドラインシェルには、コマンドを組み合わせるためのフロー制御構造が含まれています。対話型プロンプトでコマンドを入力することに加えて、ユーザーはスクリプトを作成できます。最も一般的なシェルには、Bourne_shellに基づいた共通の構文があります。「シェルプログラミング」について説明するとき、シェルはほとんど常にBourneスタイルのシェルであると暗示されています。スクリプトの作成によく使用されるが、高度なインタラクティブ機能を欠くシェルに、Kornシェル(ksh)や多くのashバリアントが含まれます。ほとんどのUnixライクなシステムには/bin/sh、通常ash、ksh、またはbash としてBourneスタイルのシェルがインストールされています。Ubuntuに/bin/shDashがあり、これはashの亜種です(bashよりも高速でメモリ使用量が少ないために選択されます)。

UNIXシステム管理では、ユーザーのシェルはログイン時に呼び出されるプログラムです。通常のユーザーアカウントにはコマンドラインシェルがありますが、アクセスが制限されているユーザーには、シェルまたはその他の特定のコマンドが制限されています-アカウントのみ)。


ターミナルとシェル間の分業は完全には明らかではありません。主なタスクは次のとおりです。

  • 入力:端末はキーを制御シーケンスに変換します(例Left\e[D)。シェルは、制御シーケンスをコマンドに変換します(例:\e[Dbackward-char)。
  • ラインエディション、入力履歴、および完了は、シェルによって提供されます。
    • 端末は、代わりに独自のラインエディション、履歴、および完了を提供し、実行の準備ができたときにのみシェルにラインを送信します。この方法で動作する唯一の一般的な端末はM-x shellEmacsです。
  • 出力:シェルは、「表示foo」、「前景色を緑に切り替える」、「カーソルを次の行に移動する」などの指示を出します。端末はこれらの指示に基づいて動作します。
  • プロンプトは純粋にシェルの概念です。
  • シェルは、(リダイレクトされない限り)実行するコマンドの出力を見ることはありません。出力履歴(スクロールバック)は、純粋に最終的な概念です。
  • アプリケーション間コピーペーストは、端末によって提供されます(通常は、マウスまたはCtrl+ Shift+ VShift+ などのキーシーケンスを使用してInsert)。シェルには、独自の内部コピーペーストメカニズムもあります(例:Meta+ WおよびCtrl+ Y)。
  • ジョブ制御(バックグラウンドでのプログラムの起動と管理)は、ほとんどがシェルによって実行されます。しかし、それはのようなキーの組み合わせ扱う端末のCtrl+をCフォアグラウンド仕事と殺すためにCtrl+をZ、それを停止します。

UnixおよびLinuxからリサイクル


1
ターミナルがターミナルデバイスファイルの適切な用語であること、および/またはカーネルのターミナル処理コード(tty ioctl、raw / cooked、基本的な行編集)であることに同意しないといけません。ターミナル=エスケープコードを処理し、キー入力を文字に変換し、画面に描画する(または紙/テープに印刷する)もの。詳細については私の答えをご覧ください。
ピーターコーデス14

2
@PeterCordesこの詳細レベルでは、区別はありません。POSIXは、定義端子と同義として端末装置デバイスファイルの意味で、。それがUnixの意味です。エスケープコードを処理したり、キー入力を文字に変えたり、画面に描画したり(またはネットワーク経由で送信したり、ファイルにログを記録したりするなど)、それは偶然のものです。
ジル14

2
hrm、そういう意味ではターミナルも慣れる。カーネルが処理している端末デバイスの一端に、端末エミュレーターまたは端末アプライアンスが接続されたシリアルポートがあることを前提としています。カーネルtty処理(クックモード)は、少数の制御コード(^ cのシグナル、^ u / ^?の行編集(削除)のみを処理します。ttyコードとLinuxの一部の間に線を引きます。それは、グラフィックスカードとキーボードAT USB / PS2 /上のVT100状端子を実装していますが、それなしでLinuxをコンパイルすることができますが、ないのttyなし。。
ピーター・コルド

3
@PeterCordesカーネル構成では、ターミナルのサポートを省くことができます(メモリが非常に少ない一部のまれな組み込みシステムに役立ちます)。によって制御されCONFIG_TTYます。ターミナルエミュレーター(より適切には擬似ターミナルと呼ばれる-「ターミナルエミュレーター」にはtelnetd、screen、expectなどが常に含まれているわけではありません)のサポートはによって制御されCONFIG_UNIX98_PTYSます。PCテキストモードディスプレイおよびキーボードなどのサポートは、によって制御されCONFIG_VTます。drivers/tty/Kconfigカーネルソースを参照してください。
ジル14

2
おっと、最近のカーネルソースはありませんでした。CONFIG_TTYは2012年にのみ追加されました。とにかく、そうすれば、パズルのさまざまなピースが何であるか、そしてそれらがどのように組み合わされるかを頭で包み込もうとする人の助けになります。
ピーターコーデス14

60

視覚的な表現。

ターミナル

座って上司のように働くことができるもの。

ターミナル

コンソール

多くのことを行うハードウェア。

コンソール

コンソールのもう1つの例は、スーパー任天堂などのビデオゲームコンソールです(ここではActraiserをプレイできます)

シェル

基本的にコマンドを実行するためのアプリケーション。

シェルシェル

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

基本的にコマンドを入力するもの。

CLICLI


8
あなたは私の考えを盗んだ-私は基本的に同じ答えをするつもりだった。だから、あなたは賛成票を持つことができます。もちろん、これらの用語は最近ではほとんど同義語ですが、「端末」や「コンソール」などの用語は、古いコンピューティングの概念に由来しているという点です。
thomasrutter

2
良い努力。シンプルで簡単
ウマルムクタール14

19

Linuxの情報プロジェクト

ターミナル:技術的には、ターミナルエミュレータとも呼ばれるターミナルウィンドウは、コンソールをエミュレートするグラフィカルユーザーインターフェイス(GUI)のテキストのみのウィンドウです。

私たちの言葉では、GUIアプリケーションから、ユーザーのコンソールにアクセスできます。

コンソール:コンピューターのコントロールを含む計器盤

シェル:シェルは、Linuxおよびその他のUnixライクなオペレーティングシステム用の従来のテキストのみのユーザーインターフェイスを提供するプログラムです。

コマンドライン:コマンドラインは、ユーザーがコマンドやデータを入力するコンピューターモニター(通常はCRTまたはLCDパネル)の全テキスト表示モードのコマンドプロンプトの右側のスペースです。


5
「ターミナル」は、物理的なテキストのみの画面を表します。あなたが言うことは、実際には「端末エミュレータ」です。
登録ユーザー14

2
@RegisteredUser端末エミュレータは一種の端末です。ターミナルという言葉は物理的なターミナルに限定されません(そのための通常の言葉はconsoleです)。
ジル14

2
このコマンドラインの定義は間違っています。コマンドラインは、全テキスト表示モードに限定されません。
ジル14

1
@Gilles One web-Linkから入手しました。あなたは適切な答えをうまく述べました。
rɑːdʒɑ

5
@AgentCoolコピーアンドペーストする機能に疑問はありません。ソースの選択について質問します。あなたがそれを書いたかどうかにかかわらず、投稿するのはあなたの責任です。
ジル14

15

ここでの答えはとても良いようです。しかし、私の味にはあまりにもドライで技術的であるため、試してみます。

ターミナルは何かの終わりです-それはそこで終わります。たとえば、ある都市で地下鉄に乗る場合、降りる駅はターミナルです。または、空港では、人々が目的国に到着したときに出てくる場所がターミナルと見なされます。空港のターミナルが、現在、乗客を乗せる場所と飛行機から降りる場所の両方である理由は、明らかに経済的な理由です。

コンピューターの目的は、データを取得し、それを使って結果を吐き出すことです。したがって、端末は、計算の結果を取得できる任意のデバイスです(たとえば、画面)。最初のコンピューターでは、通常、入力(キーボード)と出力(画面)が単一のデバイスとして使用されていました。そのため、現在の端末はあらゆる入出力デバイスと見なされています。マウス、キーボード、スクリーン、カメラ、それらはすべて端末です。

シェルはOSのものです。コンピューターには、たとえばUbuntuのLinux部分であるカーネルがあります。カーネルは本当に低レベルであるため、シェルが提供されます。これは、ユーザーが簡単にカーネルと対話できるようにするプログラムです。それは、たとえばBASHのことです。

コンソールは(辞書から)

機械、電気機器などのコントロールを含む平らな表面

そのため、音楽業界ではすべてのノブを備えたボード、またはスペースシャトルではコマンドテーブルはすべてコンソールと見なされます。スーパー任天堂とPS2は歴史的にコンソールとも呼ばれます。最初のそのようなエンターテインメントデバイスは、ボタンがたくさんある箱のように見えたからです。

コマンドラインは単なるインターフェースです-GUIの反対です。つまり、コンピューターには2種類のインターフェイスがあります。CLI(コマンドラインインターフェイス)およびGUI(グラフィカルユーザーインターフェイス)。主な違いは、最初のものはキーボードから入力を取得し、2番目のものはマウスから入力を取得することです。


1
「GUIの反対」とはどういう意味ですか?
Koray Tugay

2
反対に、CLIまたはGUIのいずれかがあることを意味します。答えをもう少し明確にしました。
ピティコス

12

私の答えを要約するには:

シェルは、Linuxのbashのようなprocessesコマンドとreturns出力を行うプログラムです。

ターミナルプログラムであるシェルは、過去にそれがあった物理デバイス(端末はキーボードとモニターした前に、彼らがいたテレタイプ)と、その概念を移したソフトウェアと同様に、gnome-terminalのrun

Gnome-Terminalを開くと、シェルを実行する黒いウィンドウが表示され、コマンドを実行できます。

コンソールは特別な種類の端末であり、物理デバイスでもありました。Linuxの例でvirtual consoleは、Ctrl+ Alt+の組み合わせでアクセスできますF1 to F7

コンソールとは、このコンピューターに物理的に接続されているキーボードとモニターのことです。


11

これらの用語はよく一緒に使用されるため、人々はいずれかの用語を使用してコレクションを参照します。(つまり、通常、コンテキストから、コマンドラインシェルへのインターフェイスを提供するターミナルウィンドウを意味していることが明らかです)。

これが長引くのを防ぐために、私はxtermをXTerm / Gnome Terminal / Konsole / mrxvt / etc / etcの代用として言うだけです。bashでも同じです。

コンソールには他にも複数の特定の意味がありますので、今のところは省略します。

ターミナル:通常、VT100または同様のエスケープコード処理を使用して、ASCII / UTF8 /他の文字の双方向ストリームを介してプログラムと人間の対話を提供するもの。(たとえば、バックスペース、削除、矢印キーなどは、エスケープコードを生成します。プログラムは、エスケープコードを印刷して、カーソルを端末画面上で移動したり、太字テキストに切り替えたり、色を付けたり、画面をクリアまたはスクロールしたりすることができます。昔は、これは多くの場合、画面とキーボード、シリアルポートを備えた専用のアプライアンスでした。現在、通常はxtermのようなプログラムです。

端末との間で読み書きするプログラム用のデバイスファイルがあり、仮想端末にはデバイスファイルとしてアクセス可能なもう一方の側もあります。これは、btermが読み取れるようにxtermが入力を書き込む場所です。

仮想端末を含むすべての端末は、(rawではなく)cookedモードのときに基本的な行編集を提供します。これはカーネルコードによって処理されます。矢印キーで実行できる行編集を提供するのはbashです。(catカーネルが提供する基本的な行編集がどのようなものかを確認したい場合は、実行して入力してみてください。Backspaceは機能し、stty設定に従って他のいくつかのこともできます。)

端末デバイスの背後には多くのカーネルコードがありますが、端末自体ではなく端末処理コードと呼ばれます。

編集:Gillesは、ttyをターミナルと呼ぶのが適切な使い方であると確信しました。端末エミュレーター、および端末に接続して実行される対話型プログラムはすべて、カーネルによって実装される端末セマンティクスに依存しています。(この動作のほとんどはPOSIXによって標準化されており、Linux / * BSD /その他のUnixでも同じです。)フルスクリーンテキストエディタは、Unix ttyスタッフの動作とカーソル移動エスケープコード処理に依存します。ターミナルエミュレータのその他の多くの機能。

ただし、画面、キーボード、およびシリアルポートを備えた物理VT100は、端末のインスタンスです。シリアルポートのもう一方の端にあるUnixカーネルを完了する必要はありません。まったく異なるものは、エスケープコードとASCIIテキストを送信し、そこから同じものを受信することです。ただし、UNIX端末ではなく、VT100になります。ターミナルエミュレータとUnix ttyセマンティクスは、bashなどのプログラムが通常実行されるUnixターミナルの完全なパッケージを構成します。

コマンドラインはユーザーインターフェイスのスタイルであり、何かを入力し、returnキーを押して何かを実行します。また、bashやMS-DOSなどのコマンドラインシェルの省略形としても使用されますが、fdiskなどについては「コマンドラインツールです」と言うこともできます。UIにターミナルを使用するプログラムのみを考慮すると、2つの主要なファミリはコマンドラインと全画面テキスト(たとえば、viやのようなエディタemacs -nw)です。

通常は端末で実行されるコマンドラインプログラムは、ほとんど常に入力と出力をファイルにリダイレクトして動作しますが、エディターや電子メールクライアントなどの端末ベースのフルスクリーンプログラムは対話専用であり、動作しません。

シェルは、他のプログラムを起動するためのプログラムです。Unixのコンテキストでは、コマンドラインシェル(つまり、BourneシェルまたはCシェルの同等物)を意味するのが一般的です。Unixシェルは、ファイル、つまりシェルスクリプトから入力を読み取ることもできます。これらは変数、ループ、条件付きの完全なプログラミング言語であり、多くのプログラムはbashで記述されています(または/bin/sh移植性を高めるためにPOSIXシェル機能のみを使用)。またfor i in *.something; do some_program "$i";done 、インタラクティブシェルでクイックを簡単に作成することもでき ます。

すべてをまとめると、bash(またはシェルコマンドを実行して起動したプログラム)のようなシェル/dev/pts/Nは、xtermが入力を擬似端末の側に書き込んだ後、端末デバイスから文字を受け取ります。を実行してcatからを^c押すと、カーネルttyコードが動作し、その端末のフォアグラウンドプロセスに^ca SIGINTを送信します。(端末の使用に注意してくださいこのコンテキストでは、端末エミュレータやシリアルポートに接続された何かではなく、Unix ttyを意味します。)これは、シェルがプログラムを開始する前に端末を「調理済み」モードにするためです。シーケンス。(ttyコードはまだVT100エスケープコードの処理とは関係がなく、いくつかのlow-ASCII制御コードのみです。)xtermの代わりにLinuxコンソールテキスト端末を使用している場合、カーネルはVT100エミュレーションを実行しています。そのすべてを処理します。Linuxは、仮想コンソールのテキスト端末サポートなしでコンパイルできますが、ttyサポートなしではコンパイルできません。

コンソールは端末の同義語として使用されることがあります(KDEにはKonsoleという端末エミュレータもあります)。

0xSheepdogが指摘しているように、これには別の意味もあります。それは、ローカルに接続された人間対話ハードウェアです。

カーネルコンテキストでは、コンソールには別の特定の意味があります。それは、ブートメッセージが書き込まれる端末です。これはシリアルポートにすることができます。通常、もちろん、グラフィックハードウェアおよびUSB / ps2 / ATキーボード用のドライバーの上にカーネルによって実装されるテキストコンソールです。console=tty0 console=ttyS0,115200n8コマンドラインでLinuxを起動すると、画面とシリアルポートにカーネルメッセージが表示されます。

Linuxは、(仮想コンソールを実装/dev/tty1するN)。物理スクリーン/キーボードが制御しているものをCtrl+ Alt+で交換できます。典型的なLinuxディストリビューションは6を作成し、それらすべてを起動します。したがって、X11を起動できない、または起動したくない場合でも、6回ログインし、コマンド、マニュアルページ、およびその他のものを切り替えることができます。画面のようなプログラムを実行します。Linux(カーネル)には、仮想コンソールの画面とキーボードを介して端末インターフェイスを提供するVT100スタイルの端末エミュレータが含まれています。FNgetty

ログインプロンプトを備えた標準の6つの仮想端末が、Ctrl+ Alt+でF7X11セッションに戻る理由です。Xサーバーは次に利用可能な仮想コンソールを取得します。(ただし/dev/input/...、キープレスをから取得するのではなく、Xサーバーが直接開き/dev/tty7ます。)

したがって、「テキストコンソールに切り替える」とは、Ctrl+ Alt+ を押しF1てその端末を使用することを意味します。コンピューターが遅く、RAMがあまりなかったとき、一部の人々は高速であるため、多くの時間をテキストコンソールに費やしていました。素敵なフォントを設定でき、端末のサイズを変更して文字を小さくすることもできましたが、一度に画面に表示します。 Alt+ LeftおよびAlt+ Rightprev / nextコンソールにスワップします。(X11はもちろんコンソールでこれを無効にし、Ctrl+ Alt+ コンボのみを残します。)FN

したがって、コンソールは、これらの用語のうち、明確に定義された単一の技術的意味を持たない唯一の用語です。いくつかの異なるものがあります。(端末の適切性と端末とttyの扱いについてのあなたの感じ方によっては、端末にも複数の意味があると言えます。)


2
「メイン」物理端末を意味するコンソールは、カーネルコンテキストだけではありません。で同じ意味です/dev/consoleコンソールは特に曖昧ではありませんが、端末のより一般的な意味で使用されることもありますが、それは非常にまれです(特にコンソールを意味するために使用される端末よりもまれです)。
ジル14

1
はい、エコーfoo | sudo tee / dev / console> / dev / nullは、現在のVTがテキストモード(文字どおりVGAテキストモードだけでなく、フレームバッファーコンソールを含む)の場合、画面に印刷されます。シリアルポートでコンソールを使用して起動した場合、そこに行くと思います。/ dev / consoleは、カーネルがシステムコンソールとして処理しているデバイスファイルです。システムの他には何もあり(。システムは、通常のinitrdからマルチユーザモードで起動に失敗した場合、コンソールのTTY上でシェルを起動し、ブート・リカバリーのものを除く)すべてのコンソールのTTYという概念を持っている必要がありません
ピーター・コーデス14

1
xorg Xサーバー(文字列/ usr / bin / Xorg)は、ハードウェアアクセスを取得するために/ dev / consoleを使用しません。/ dev / tty0、/ dev / tty%d、および/ dev / vc /%dを使用して、自身のVTでセットアップします。Xorgは、シリアルポートでカーネルコンソールを使用して起動したPCでも引き続き正常に実行されると確信しています。また、テキストモードの仮想端末は引き続き機能します。これを考慮するほど、ブート時に選択された特別な端末として、カーネルコンテキストでコンソールを表示する傾向が強くなります。(Linuxは、実際にコンソールメッセージを複数の端末に一度に出力することができます。)
Peter Cordes 14

6

タイムシェアリングコンピューターの初期の時代には、すべてのユーザーが端末を持っていましたが(1つ入手できたとき!)、システムオペレーターだけがコンソールを持っていたと思います。コンソールは、マシンの再起動や、ユーザー端末からは不可能なシステム診断の取得などのタスクに使用できます。コンソールはコンピューターの本質的な部分である機械室にありましたが、端末はリモートにすることができました。コンソールには、テキストの入出力だけでなく、ハードウェアのライトとスイッチも含まれます。

コマンドラインはユーザーがコマンドを入力できる領域であり、シェルはそのコマンドを解釈/従うプログラムです。「シェル」という用語は、Unix派生物に特有のものです。「コマンドライン」は、Windows / DOSの伝統にあります。メインフレームの同等物は、通常「ジョブ制御言語」と呼ばれます。

明らかに、これらの元々の区別は、技術が変化するにつれて時間とともにぼやけてきました。


3

ユーザー中心の短い答えを試してください:

コマンドライン -コマンドを入力するライン。通常、オペレーティングシステムが提供するテキストモードウィンドウ(コマンドラインインターフェイス)で何かを実行する必要があることを伝えるために使用されていました。

shell-入力したものを処理するためにオペレーティングシステムによって実行される実際のプログラムcommand line。したがって、名前-非フレンドリーOSコアのユーザーフレンドリーなシェル。$またはなどのコマンドプロンプトを提供し>、独自のコマンドとアプリを実行します。常にshellプログラムを使用し、コンソールや端末で直接操作することはありません。

コンソール -テキストモードプログラムが実行されているウィンドウです。このウィンドウはキーの押下を処理し、幅と高さを認識します。フルスクリーンにすることができます。

端末 -文字の入力ストリームを受け入れて表示する、人間用のディスプレイを備えたデバイスです。高さまたは幅(ハックのみ)またはキーボードのキー入力についてユーザーにフィードバックはありません-文字のみがそこに移動します。ターミナルは、このストリーム内の特別なシーケンスを処理して、色を付けたり、画面をクリーンアップしたり、その他の厄介なことを行います。出力にパイプしているファイルにその特別なシーケンスが含まれていると物事を台無しにするのは簡単だからです。これらは、出力の送信と出力デバイスの制御に単一のストリームtapが必要であり、ウィンドウを初期化または作成する必要なく会話することができるため、ネットワークおよびデバイスデバッグインターフェイスで人気があります。

シリアルコンソール -端末のような入力ストリームを処理するコンソールです。


3

用語は非常にあいまいであるため、これはあいまいなトピックです。この回答全体で提供したリンクを読むことを強くお勧めします。これは、この回答のソースでもあります。

シェルは、カーネル上の層です。

  • ユーザーが入力したコマンドを解釈し、処理します。ユーザーとは異なり、シェルはカーネルにアクセスできます。ユーザーは、シェルを使用してコマンドを入力するか、プロセスを使用する(プログラムを実行する)ことによってのみカーネルにアクセスできます。プログラムはシステムコールを使用してカーネル機能にアクセスします。すべてのシステムコールが一緒になってシステムAPIを形成します。
  • シェルの例は、2番目の端末定義に記載されています。

ターミナルは、多くの意味があります。

  • (1)テキスト端末。これは、ディスプレイモニターとキーボードの組み合わせです。端末がコンピューターに接続されているケーブル(しばしば間接的に)。このケーブルの終端にあるため、端末と呼ばれていました。これらの端末は通常、コンピューターから物理的に分離されていました。当時、多くの端末が単一のメインフレーム/コンピューターに接続されていたため、複数のユーザーが同時にコンピューターにアクセスできるためです。
  • (2)ターミナルウィンドウ、またはターミナルエミュレータ。Linuxでは、ターミナルウィンドウはコンソールのエミュレーションであり、GUIウィンドウに含まれています。テキストを入力するCLIであり、この入力は使用しているシェルによって読み取られます。多くの種類のシェル(bash、dash、ksh88など)とターミナル(konsole、gnomeなど)があります。
  • (3)擬似端末の説明については、こちらをご覧ください。これは、プロセスと端末エミュレーター間の通信に使用される2つの「デバイスファイル」のペアです。

コンソールには、多くの意味があります。

  • (1)コンピューターのコントロールを含む計器盤。
  • (2)システムコンソールコンピューターコンソール)。これは、ディスプレイモニターとコンピューターに接続されたキーボードの組み合わせです。これは、「テキスト端末」と呼ばれるものと同義です。マウスなどの他のユーザー入力周辺機器もコンソールの一部である場合があります。
  • (3)全画面をカバーするコマンドラインインターフェイス。これは、ウィンドウを閉じるための右上隅にXがあるGUIであるターミナルウィンドウとは対照的です。これらは、UnixライクシステムのCLI(コマンドラインインターフェイス)の2つの表示モードです。端末ウィンドウと同様に、コンソールも多くのシェルを実行できます。

多くの場合、オペレーティングシステムでは、物理コンソールで複数のコンソールを実行できます(コンソール定義2)。これらは呼ばれている仮想コンソール別名仮想端末、及び介してアクセスすることができますctrl+ alt+ Fxの組み合わせ。たとえば、3番目の仮想コンソールを開く場合は、ctrl+ alt+ の組み合わせを使用しますF3

コンソール(定義3)は時代錯誤のように見えるかもしれませんが、GUIをサポートしていないOSがたくさんあるので、エキスパートは使い慣れているはずです。また、GUIが応答しなくなった場合でも、コンソールが機能する場合があります。


2

最近のほとんどの端末は厳密に言えば端末エミュレータです。これは、UNIXライクなシステムの動作における役割の一種であり、同時にシステムが提供する基本的なインターフェイスです。実際、GUIを含むすべてがその上に構築されます。
口語的には「端末」は、星形の地形を持つコンピュータネットワーク内のエンドポイントを指すこともあります。

コンソールは、端末の(ハードウェア)インターフェースを指します。すなわち、シリアルコンソールがあり、今日ではほとんどが仮想コンソールです。
「コンソール」と口語的に呼ばれるウィンドウは、仮想コンソールを介してシステムの端末に接続されたシェルです。

コンピュータが高価だった当時、施設にはシリアルケーブル(「シリアルコンソール」)を介して1台の実際のコンピュータと複数の端末が接続されていた可能性があります。OS、操作などは物理コンピューターで実行され、入出力はコンソールで行われました。
仮想端末を切り替えるには、CTRL+ ALT+ F1(〜までF6)を押します:それらの時間の残り。
今日、「シンクライアント」の概念は、大量のリソースを集中化し、実際の職場で最先端のインターフェースを提供するのに十分なハードウェアを提供するというこの方向に遡ります。

シェルは、ターミナルに表示される「エンジン」です。システム自体との相互運用性を提供し、オートコンプリート、変数などの優れた機能を追加
します。システムコールを使用する実際のOS /カーネルとユーザーの間で相互に変換します。シェルなしのシステムコールはコーディングに少し似てassemblerおり、少なくともシェルはあなたに提供しますC

コマンドラインは、テキストウィンドウを介して入力と出力を交換する方法を指します。厳密に言えば、入力する行(現在の)コマンド行です。一般に、この方法はコマンドラインインターフェイスまたはCLI と呼ばれます。

  1. カーネル
  2. ターミナルを提供しています
  3. 端末はコンソールを介して接続されています
  4. コンソールはシェルを実行します
  5. コマンドと出力はコマンドライン(インターフェイス)を介して交換されます

1
コマンドライン命令は、カーネルではなくシェルによって理解されます。「カーネルが理解する命令のコアフレームワーク」はシステムコールです。「基本的なUNIXコマンドラインインターフェース」はシェルであり、「素晴らしい機能」と区別されません。「端末エミュレータウィンドウ」はコンソールではありません。
ジル14

1
@Gilles調整済み。明らかに、自分自身でいくつかのことを混乱させました。
マーク14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.