コマンドラインアプリケーションの「GUI」がネットワークを介してどのように通信するのか疑問に思います。ほとんどの場合、非常に単純ですが(通常のテキスト/入力)、時にはより複雑です(機能)。
誰もが自分の端末を作成でき、すべての端末実装が同じ方法(色、位置決めなど)で機能するようにいくつかの標準によって定義されていますか?
ベストアンサー1
コンソールプログラムは通常呪いあるいは、あなたが言う種類のテキストユーザーインターフェースを構築するための後続製品の1つです。
これら図書館termcap
と呼ばれる2つのデータベースのいずれかを使用しますterminfo
。 ²このデータベースには以下が含まれています。地図さまざまな端末タイプで目的のタスクを実行するためにどのコードを送信する必要があるかをライブラリに教えてください。これらのデータベースで定義されているほとんどの端末タイプは生き残りません。実端末だから今は歴史的な意味しかありません。
ANSI端子
最新のUnix端末エミュレータ³は、ANSI X3.64プロトコルまたはそれ以降のバリエーションのいずれかを使用します。
ANSI X3.64:「ガラス端子」制御規格 - ありテレタイププライター— リモート端末で解釈される特殊文字シーケンスに基づいています。たとえば、UnixボックスがANSI X3.64互換端末にカーソルを画面の左上に移動するように指示したい場合は、文字を送信します
ESC
[
1
;
1
H
。最初の2文字は制御順序が必要であることを端末に通知し、1は行と列であり、H
「カーソル移動」コマンドです。 ⁴12月VT100:最初の人気のANSI対応ガラスターミナルは、Digital Equipment CorporationのVT100でした。 ANSIで実証済み法学市場で標準を確立しました。実は今日でもまだ有効な標準です。
時には、VT100の最新バージョンであるVT102プロトコルと、利用可能なすべての組み込み拡張オプションが表示されます。
DECターミナルプロトコルは、1978年に導入された最初のANSI互換モデル(VT100)から無限の技術1995年にはDECから端末事業を買収しました。 (Boundlessは現在廃業していますが、その端末はまだ中古市場に時々登場しています。)
xterm:ANSIとVT規格を組み合わせたものです。 GUIターミナルエミュレータ
xterm
またはその派生物のいずれかを使用するたびに、通常はxterm
ターミナルプロトコル、通常より近代的なプロトコルまたはxterm-color
そのxterm-color256
バリエーションを使用します。Linux
xterm
:Linuxコンソールは、プロトコルの精神と一致するANSIターミナルプロトコルの拡張されたバリエーションも使用します。拡張のほとんどは、PCとガラス端末の違いに関連しています。たとえば、IBMキーボードにはDEC VTにはないいくつかのキーがあります。 (逆に)一部の Unix システムには独自のコンソール端末プロトコルもあります。
scoansi
たとえば、SCO Unix用のANSI X3.64バリアントがあります。
一般的な端末エミュレータプログラムはハイブリッドであり、単一の端末モデルを正確にエミュレートしません。 VT320は、すべてのDEC VTエスケープシーケンスの96%をサポートできるだけでなく、ANSIカラー(VT525機能)や任意の数の行と列などの拡張もサポートします。プログラムがこれらの機能を必要としない場合、プログラムがcurses
VT320プロトコルを使用するように要求しても、プログラムが理解していない4%のコードが欠けている可能性があります。これらのプログラムはVT320と互換性があると主張できますが、厳密にはそうではありません。 ⁵
ANSI以外の端末
時々遭遇するいくつかの異なる注目すべき標準があります。
知恵:Wyseは、1980年代初頭からターミナル生産を開始した最初の独立ガラスターミナルメーカーの1つです。ワークステーションコンピューティングミニコンピュータを交換し始めました。 Wyse端末はVT100や他の広く使用されている端末プロトコルをエミュレートできますが、独自の基本コードもあります。
IBM 3270:厳密に言えば、「Unix」ターミナルタイプではありませんが、UnixシステムをIBMメインフレームに接続する必要があるため、IBM 3270シリーズターミナルエミュレータープログラムが誕生し、このプログラムはまだ使用されています。後でシミュレータIBM 5250シリーズ端末は非常に一般的であり、現在の接続に最も一般的に使用されます。AS/400およびSystem iミニコンピュータ。
テクトロニクス 4014:PCとワークステーションがガラスターミナルを置き換え、ビットマップグラフィックを標準機能にする前に、上記のエスケープシーケンスと同様のテキストコマンドに応答して画面にグラフィックを描画する高価なグラフィックターミナルがありました。おそらく最も人気のある製品はTektronix 4010シリーズです。
使用するのは楽しいです。グラフを描画するプログラムを作成できますが、単にそれを実行してローカル端末に描画するのではなく、出力をファイルにリダイレクトできます。
$ ./my4014program > my-neat-graphic
cat
その後、プログラムをインストールせずにTek端末でグラフィックを表示できる他の人にファイルを送信できます。魅力の1つは、これらの端末が非常にゆっくりと描かれているため、数秒でグラフが構成されていることがわかります。
今Unix端末エミュレーションを使用してください
curses
環境変数を見ると、ライブラリでの使用を好む端末標準を見つけることができますTERM
。
$ echo $TERM
xterm-color
ssh
他のシステムに接続すると、このTERM
変数はリモートUnixシステムがローカル端末と通信する方法を知るために渡されます。
これらのプロトコルの多くはANSI X3.64バリアントであり、ユビキタスASCIIおよびUTF-8文字エンコーディング規格が他の多くの問題を処理するため、通常、誤った変数TERM
は悲惨な結果をもたらしません。簡単に破損するには、拡張キー(Home、Page Upなど)、Altキーの組み合わせ、印刷表示機能(カラー、太字など)が含まれます。
脚注:
最も一般的な、呪い。
APIには直接的な競合他社もあります
curses
。スラング。AT&T発行
terminfo
termcap
BSDデータベースの代替、これを置き換えることに大きく成功しましたが、まだ既存のtermcap
データベースを使用するプログラムがあります。これは、現代のシステムでまだ見つけることができるBSDとAT&Tの多くの違いの1つです。私のmacOSコンピュータにはありませんが、FreeBSDの標準インストールとは異なり
/etc/termcap
ます/usr/share/terminfo
。両方のオペレーティングシステムは通常、コマンドラインレベルで非常に似ていますが。正しく書かれたUnixプログラムは以下をエクスポートしません。エスケープシーケンスまっすぐ。代わりに、上記のライブラリの1つを使用して「カーソルを(1,1)の位置に移動する」と言います。図書館環境変数の設定に従って
TERM
必要な端末制御コードを発行してください。これにより、プログラムを実行している端末の種類に関係なく、プログラムが機能することができます。古いテキスト端末にはプログラムであまり使用されていない奇妙な機能がたくさんあったため、多くの人気のある端末エミュレータプログラムはこれらの機能をまったく実装していません。一般的な欠落はサポートすることです。6種類のカラーグラフィックと二重幅/倍高さテキストモード。
メンテナンス者
xterm
私は'というプログラムを書いた。vttest
たとえば、VTターミナルエミュレータをテストするために使用されますxterm
。他の端末エミュレータに対して実行して、サポートしていない機能を確認できます。