シェルで実行されるプログラムやシェルスクリプト(例:Pine)

シェルで実行されるプログラムやシェルスクリプト(例:Pine)

私が間違った質問のせいか、質問に対する答えを見つけるのは少し難しかったです。

私はBashスクリプトを理解しています。私はずっと小さな役に立つ仕事をするためにそれらを書いています。

しかし、シェルスクリプトとシェルで実行されるプログラムの違いを知りたいです。たとえば、松とは何ですか?どの言語で書かれていますか?シェルで実行されますが、私が知っている限り、シェルスクリプトではなくナビゲートできる別のプログラムです。終了すると、シェルを起動したときにあった場所に戻ります。

さまざまな機能を持つプログラムでシェルで実行されるという点で、Pineのような機能を持つプログラムを作成するにはどこから始めるべきですか?このように書かれたプログラムの例はどこにありますか?

答え1

shellターミナルエミュレータ(コマンドラインソルバー)と混同しているようです。

シェルがインタラクティブに実行されているときにpineユーザーと対話するには、端末または端末エミュレータが必要です。pineしかし、それは殻とは何の関係もありません。

過去の端末は、コンピュータ(自体にはモニタやキーボードがなかった)と対話するために、シリアル回線を介してコンピュータに接続されたモニタとキーボードを備えたデバイスでした。インターフェイスはシンプルでテキストベースです。

コンピュータのシリアルラインは文字デバイスファイルです(/dev/ttyS0たとえば、Linuxでも同様)。端末と対話するアプリケーションは、端末に表示するためにデバイスにデータを書き込みます。

たとえば、最も単純な場合、pineASCIIに書き込むと、その文字に対応する一連のビットがシリアルラインを介して送信され、端末が画面の現在のカーソル位置に表示されますa/dev/ttyS0aa

最も簡単な場合、ユーザーがaキーボードを押すと、端末は同じビットシーケンスを別の行のコンピュータに送信し、システムはその文字をaバッファに配置し、on文字がpine実行されるとその文字を返します。read()/dev/ttyS0a

端末はテレタイプ(画面なし、紙に印刷)などからaCRTモニター付きの端末に発展しており、カーソルの位置決め、領域の消去/スクロール、色のサポートなどのより多くの機能を備えた一部の端末は、これらすべてのpine機能を使用します。でもグラフィック機能まで使用します。いくつかのエスケープシーケンス。

それにもかかわらず、私たちは何十年もの間この端末のためのアプリケーションを書いてきました。 Xができないことをターミナルにできることがたくさんあります。データは双方向の2文字ストリームなので、ネットワーク(Telnet、SSHなど)を介してターミナルセッションをエクスポートするのは簡単で、同様のアプリケーションをcat使用してターミナルに書き込んでファイルの内容を表示できます。ユーザーは画面上で見ることができ、まったく同じ方法で使用され、同じコンテンツをファイルに保存したり、ネットワーク経由で一部のサーバーに送信したりするための変更は必要ありません...(必要なのは出力をリダイレクトするだけです。それがどこにあるか) 。一般に、1つの目的のみを持ち、互いに簡単に連携できないXアプリケーションでは同じことを行うことはできません。

このような理由でXが広く普及した後も、長い間端末が使用され続けてきました。

実際の端末はありませんが、端末をエミュレートしますが、それ自体はXアプリケーション(コンピュータで実行され、Xサーバー、同じコンピュータ、または別のコンピュータに表示される、、xterm... gnome-terminal)などの端末エミュレータです。eterm)).

デフォルトでは、これらのターミナルエミュレータアプリケーションを起動すると、そのアプリケーション内でシェルが起動するため、2つの間で混乱が発生することがあります。端末エミュレータでシェルを実行する必要はなく、シェルpineから起動する必要もありませんが、端末が必要です。セミグラフィック端末アプリケーションです。これは端末装置と対話し、その装置のもう一方の端には、カーソル位置決め、文字強調表示などの最小限の機能セットを有する端末または端末エミュレータが必要である。

関連情報