私はbashをLinuxにコマンドを入力できるウィンドウとして理解しています。ウィキペディアを読んで、歴史を通して様々なシェルアプリケーションがあったことがわかりました。まず、私はbashにコマンドを入力して応答を受け取ることを理解しました。何かを入力してEnterを押すたびに、別のテキスト行で応答します。しかし、ここでは終わりません。実際、Bashで「アプリケーション」を作成できます。たとえば、テキストエディタであるnanoとvimがあります。したがって、実際にはウィンドウ内でいくつかのグラフィックを制御できるように見えます。
別の例は、Raspberry Piのraspi-configコマンドに表示されるこのウィンドウです。このコマンドを入力すると、パテウィンドウに表示されます。それは何ですか? bashに色付きの長方形の項目を表示するには?
何が起こっているのか知りたいです。 bashはLinux内でどこで実行されますか?システムとどのように通信しますか?私は若いので、コンピュータターミナルの歴史について何も知りませんでしたが、GUIが登場したときにすべてがどのように変わったのかわかりませんでした。
答え1
いくつかあります。抽象化レベル提供されたスクリーンショットに表示されている内容のデモンストレーションに参加してください。かなり広範なテーマですが、まとめてみましょう。
端末エミュレータ
説明内容:
Linuxにコマンドを入力できるウィンドウ
実際には強打しないし、少なくともそれ自体を強打するわけではない。見ている端末エミュレータシェル(おそらく/bin/bash
)を実行します。
よく引用される端末エミュレータの例は、ほとんどxterm
すべてのデスクトップUnixおよびLinuxシステムに含まれています。ただし、多くのターミナルエミュレータがあり、その一部には、xterm
追加のマウスコントロール、タブ(ブラウザタブと同様)など、ターミナルエミュレータよりも多くの機能があります。
Linuxコンソール(別名「テキストモード」)
Linuxマシンのように使用することもできます。物理端末これは、グラフィカル環境なしでLinux / Unixシステムを起動したときに表示されます(サーバーで構成されている多くのシステムの場合と同じです)。 Linuxはまだこれらの機能をある程度抽象化しますが(物理コンピュータ上の複数の仮想端末を許可します)、実際にはユーザーに似た専用の「テキスト専用」モニタです。
シェル
端末エミュレータは任意のコマンドラインプログラムを実行できます。デフォルトでは、対話型シェル(bash、sh、csh、kshなど)のみが実行されます。それでは、貝殻は何ですか?
簡単に言えば、シェルは他のプログラムと同様にコマンドラインプログラムです。インタラクティブモードで実行すると(つまり、事前にプログラムされたシェルスクリプトを実行しない)、プロンプト(通常などtype_outcast:~$
)が表示され、ユーザーが入力した内容を受け入れ、独自のルール(言語)セットに従って解釈します。各シェルはわずかに異なりますが、ほとんどの一般的なシェルはほぼ似ています。
コマンドを入力するとどうなりますか?
コマンド(たとえば)を入力してls -l
Enterキーを押すと、シェルはユーザーが入力した文字列を表示して実行する操作を決定します。この場合、変数ls
から呼び出されたプログラムを見つけて$PATH
見つけたら、子プロセス(fork()
およびexec()
システムコール内部構造)と提供されたパラメータ()を知りたい場合-l
。
デフォルトでは、コマンドの出力(stdout
「標準出力」、stderr
「標準エラー」とも呼ばれます)が端末に接続されているため、プログラムの出力を表示できます。また、stdin
(「標準入力」)はデフォルトで接続されているため、インタラクティブプログラムで入力を入力できます。 (時々プログラムは端末をより直接的に制御します。これは中級プログラミングのトピックです。)
注文する」入力と出力をリダイレクトできます。、それ自体が別のかなり広範なトピックです。
そのカラフルな色とメニューはどうですか?
ほとんどの端末エミュレータは色とさまざまな制御コード(通常ANSIエスケープシーケンス、一部の端末固有のコード)。このコードは、スクリーンショットに表示されるダイアログボックスなどのカラフルなインターフェイスを描画するために使用できます。
つまり、ここには明白な新しい魔法はありません。私のシステムは1980年代初頭(Windowsより前)にANSIコードを理解し、同様のダイアログを表示し、当時私の端末は80x25カラー(EGA)モニターでした。
それで何が変わったのですか?
それ以来、人々がより大きなターミナルサイズを楽しんで、ターミナルをグラフィックアプリケーションで実行できるように、ターミナルエミュレータアプリケーションにインスピレーションを与えたグラフィックデスクトップの広範な人気を除いて、比較的ほとんど変わりませんでした。 80x25または80x43テキスト専用モニター。