ターミナル、コンソール、シェル、コマンドラインの違いは何ですか?
ターミナル、コンソール、シェル、コマンドラインの違いは何ですか?
回答:
簡潔な答え:
長い答え:
コンソールと端末は密接に関連しています。もともとは、コンピュータとやり取りできる機器のことでした。Unixの初期には、タイプライター(テレタイプライターと呼ばれることもある)、または略して「tty」に似たテレプリンタースタイルのデバイスを意味していました。「端末」という名前は電子的な観点から来ており、「コンソール」という名前は家具の観点から来ています。UNIXの歴史のごく初期に、電子キーボードとディスプレイが端末の標準になりました。
UNIXの用語では、端末は特定の種類のデバイスファイルであり、読み取りおよび書き込みを超える多くの追加コマンド(ioctl)を実装します。一部の端末は、ハードウェアデバイスに代わってカーネルによって提供されます。たとえば、キーボードからの入力とテキストモード画面への出力、またはシリアル回線を介した入出力が提供されます。疑似端末または疑似ttyと呼ばれることもある他の端末は、端末エミュレーターと呼ばれるプログラムによって(シンカーネルレイヤーを介して)提供されます。ターミナルエミュレータには、次の種類があります。
ターミナルという言葉は、コンピューター、通常はキーボードやディスプレイと対話するためのデバイスという、より伝統的な意味を持つこともできます。たとえば、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/sh
はDashがあり、これはashの亜種です(bashよりも高速でメモリ使用量が少ないために選択されます)。
UNIXシステム管理では、ユーザーのシェルはログイン時に呼び出されるプログラムです。通常のユーザーアカウントにはコマンドラインシェルがありますが、アクセスが制限されているユーザーには、シェルまたはその他の特定のコマンドが制限されています-アカウントのみ)。
ターミナルとシェル間の分業は完全には明らかではありません。主なタスクは次のとおりです。
\e[D
)。シェルは、制御シーケンスをコマンドに変換します(例:\e[D
→ backward-char
)。M-x shell
Emacsです。foo
」、「前景色を緑に切り替える」、「カーソルを次の行に移動する」などの指示を出します。端末はこれらの指示に基づいて動作します。UnixおよびLinuxからリサイクル
CONFIG_TTY
ます。ターミナルエミュレーター(より適切には擬似ターミナルと呼ばれる-「ターミナルエミュレーター」にはtelnetd、screen、expectなどが常に含まれているわけではありません)のサポートはによって制御されCONFIG_UNIX98_PTYS
ます。PCテキストモードディスプレイおよびキーボードなどのサポートは、によって制御されCONFIG_VT
ます。drivers/tty/Kconfig
カーネルソースを参照してください。
視覚的な表現。
座って上司のように働くことができるもの。
多くのことを行うハードウェア。
コンソールのもう1つの例は、スーパー任天堂などのビデオゲームコンソールです(ここではActraiserをプレイできます)
基本的にコマンドを実行するためのアプリケーション。
基本的にコマンドを入力するもの。
ターミナル:技術的には、ターミナルエミュレータとも呼ばれるターミナルウィンドウは、コンソールをエミュレートするグラフィカルユーザーインターフェイス(GUI)のテキストのみのウィンドウです。
私たちの言葉では、GUIアプリケーションから、ユーザーのコンソールにアクセスできます。
コンソール:コンピューターのコントロールを含む計器盤
シェル:シェルは、Linuxおよびその他のUnixライクなオペレーティングシステム用の従来のテキストのみのユーザーインターフェイスを提供するプログラムです。
コマンドライン:コマンドラインは、ユーザーがコマンドやデータを入力するコンピューターモニター(通常はCRTまたはLCDパネル)の全テキスト表示モードのコマンドプロンプトの右側のスペースです。
ここでの答えはとても良いようです。しかし、私の味にはあまりにもドライで技術的であるため、試してみます。
ターミナルは何かの終わりです-それはそこで終わります。たとえば、ある都市で地下鉄に乗る場合、降りる駅はターミナルです。または、空港では、人々が目的国に到着したときに出てくる場所がターミナルと見なされます。空港のターミナルが、現在、乗客を乗せる場所と飛行機から降りる場所の両方である理由は、明らかに経済的な理由です。
コンピューターの目的は、データを取得し、それを使って結果を吐き出すことです。したがって、端末は、計算の結果を取得できる任意のデバイスです(たとえば、画面)。最初のコンピューターでは、通常、入力(キーボード)と出力(画面)が単一のデバイスとして使用されていました。そのため、現在の端末はあらゆる入出力デバイスと見なされています。マウス、キーボード、スクリーン、カメラ、それらはすべて端末です。
シェルはOSのものです。コンピューターには、たとえばUbuntuのLinux部分であるカーネルがあります。カーネルは本当に低レベルであるため、シェルが提供されます。これは、ユーザーが簡単にカーネルと対話できるようにするプログラムです。それは、たとえばBASHのことです。
コンソールは(辞書から)
機械、電気機器などのコントロールを含む平らな表面
そのため、音楽業界ではすべてのノブを備えたボード、またはスペースシャトルではコマンドテーブルはすべてコンソールと見なされます。スーパー任天堂とPS2は歴史的にコンソールとも呼ばれます。最初のそのようなエンターテインメントデバイスは、ボタンがたくさんある箱のように見えたからです。
コマンドラインは単なるインターフェースです-GUIの反対です。つまり、コンピューターには2種類のインターフェイスがあります。CLI(コマンドラインインターフェイス)およびGUI(グラフィカルユーザーインターフェイス)。主な違いは、最初のものはキーボードから入力を取得し、2番目のものはマウスから入力を取得することです。
私の答えを要約するには:
シェルは、Linuxのbashのようなprocesses
コマンドとreturns
出力を行うプログラムです。
ターミナルプログラムであるシェルは、過去にそれがあった物理デバイス(端末はキーボードとモニターした前に、彼らがいたテレタイプ)と、その概念を移したソフトウェアと同様に、gnome-terminalの。run
Gnome-Terminalを開くと、シェルを実行する黒いウィンドウが表示され、コマンドを実行できます。
コンソールは特別な種類の端末であり、物理デバイスでもありました。Linuxの例でvirtual console
は、Ctrl+ Alt+の組み合わせでアクセスできますF1 to F7。
コンソールとは、このコンピューターに物理的に接続されているキーボードとモニターのことです。
これらの用語はよく一緒に使用されるため、人々はいずれかの用語を使用してコレクションを参照します。(つまり、通常、コンテキストから、コマンドラインシェルへのインターフェイスを提供するターミナルウィンドウを意味していることが明らかです)。
これが長引くのを防ぐために、私は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コードが動作し、その端末のフォアグラウンドプロセスに^c
a 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の扱いについてのあなたの感じ方によっては、端末にも複数の意味があると言えます。)
/dev/console
。コンソールは特に曖昧ではありませんが、端末のより一般的な意味で使用されることもありますが、それは非常にまれです(特にコンソールを意味するために使用される端末よりもまれです)。
タイムシェアリングコンピューターの初期の時代には、すべてのユーザーが端末を持っていましたが(1つ入手できたとき!)、システムオペレーターだけがコンソールを持っていたと思います。コンソールは、マシンの再起動や、ユーザー端末からは不可能なシステム診断の取得などのタスクに使用できます。コンソールはコンピューターの本質的な部分である機械室にありましたが、端末はリモートにすることができました。コンソールには、テキストの入出力だけでなく、ハードウェアのライトとスイッチも含まれます。
コマンドラインはユーザーがコマンドを入力できる領域であり、シェルはそのコマンドを解釈/従うプログラムです。「シェル」という用語は、Unix派生物に特有のものです。「コマンドライン」は、Windows / DOSの伝統にあります。メインフレームの同等物は、通常「ジョブ制御言語」と呼ばれます。
明らかに、これらの元々の区別は、技術が変化するにつれて時間とともにぼやけてきました。
ユーザー中心の短い答えを試してください:
コマンドライン -コマンドを入力するライン。通常、オペレーティングシステムが提供するテキストモードウィンドウ(コマンドラインインターフェイス)で何かを実行する必要があることを伝えるために使用されていました。
shell-入力したものを処理するためにオペレーティングシステムによって実行される実際のプログラムcommand line
。したがって、名前-非フレンドリーOSコアのユーザーフレンドリーなシェル。$
またはなどのコマンドプロンプトを提供し>
、独自のコマンドとアプリを実行します。常にshell
プログラムを使用し、コンソールや端末で直接操作することはありません。
コンソール -テキストモードプログラムが実行されているウィンドウです。このウィンドウはキーの押下を処理し、幅と高さを認識します。フルスクリーンにすることができます。
端末 -文字の入力ストリームを受け入れて表示する、人間用のディスプレイを備えたデバイスです。高さまたは幅(ハックのみ)またはキーボードのキー入力についてユーザーにフィードバックはありません-文字のみがそこに移動します。ターミナルは、このストリーム内の特別なシーケンスを処理して、色を付けたり、画面をクリーンアップしたり、その他の厄介なことを行います。出力にパイプしているファイルにその特別なシーケンスが含まれていると物事を台無しにするのは簡単だからです。これらは、出力の送信と出力デバイスの制御に単一のストリームtap
が必要であり、ウィンドウを初期化または作成する必要なく会話することができるため、ネットワークおよびデバイスデバッグインターフェイスで人気があります。
シリアルコンソール -端末のような入力ストリームを処理するコンソールです。
用語は非常にあいまいであるため、これはあいまいなトピックです。この回答全体で提供したリンクを読むことを強くお勧めします。これは、この回答のソースでもあります。
シェルは、カーネル上の層です。
ターミナルは、多くの意味があります。
コンソールには、多くの意味があります。
多くの場合、オペレーティングシステムでは、物理コンソールで複数のコンソールを実行できます(コンソール定義2)。これらは呼ばれている仮想コンソール別名仮想端末、及び介してアクセスすることができますctrl+ alt+ Fxの組み合わせ。たとえば、3番目の仮想コンソールを開く場合は、ctrl+ alt+ の組み合わせを使用しますF3。
コンソール(定義3)は時代錯誤のように見えるかもしれませんが、GUIをサポートしていないOSがたくさんあるので、エキスパートは使い慣れているはずです。また、GUIが応答しなくなった場合でも、コンソールが機能する場合があります。
最近のほとんどの端末は厳密に言えば端末エミュレータです。これは、UNIXライクなシステムの動作における役割の一種であり、同時にシステムが提供する基本的なインターフェイスです。実際、GUIを含むすべてがその上に構築されます。
口語的には「端末」は、星形の地形を持つコンピュータネットワーク内のエンドポイントを指すこともあります。
コンソールは、端末の(ハードウェア)インターフェースを指します。すなわち、シリアルコンソールがあり、今日ではほとんどが仮想コンソールです。
「コンソール」と口語的に呼ばれるウィンドウは、仮想コンソールを介してシステムの端末に接続されたシェルです。
コンピュータが高価だった当時、施設にはシリアルケーブル(「シリアルコンソール」)を介して1台の実際のコンピュータと複数の端末が接続されていた可能性があります。OS、操作などは物理コンピューターで実行され、入出力はコンソールで行われました。
仮想端末を切り替えるには、CTRL+ ALT+ F1(〜までF6)を押します:それらの時間の残り。
今日、「シンクライアント」の概念は、大量のリソースを集中化し、実際の職場で最先端のインターフェースを提供するのに十分なハードウェアを提供するというこの方向に遡ります。
シェルは、ターミナルに表示される「エンジン」です。システム自体との相互運用性を提供し、オートコンプリート、変数などの優れた機能を追加
します。システムコールを使用する実際のOS /カーネルとユーザーの間で相互に変換します。シェルなしのシステムコールはコーディングに少し似てassembler
おり、少なくともシェルはあなたに提供しますC
。
コマンドラインは、テキストウィンドウを介して入力と出力を交換する方法を指します。厳密に言えば、入力する行は(現在の)コマンド行です。一般に、この方法はコマンドラインインターフェイスまたはCLI と呼ばれます。