Terminaller hangi protokolü / standartı kullanıyor?


25

Bir komut satırı uygulamasının "GUI" sinin bir ağ üzerinden nasıl iletildiğini merak ediyordum. Çoğu zaman, oldukça basit (düz metin / giriş) ancak bazen daha karmaşıktır (yetenek).

Herhangi bir kişinin kendi terminalini yazabilmesi ve tüm terminal uygulamalarının aynı şekilde davranması (renkler, konumlandırma vb.) İçin bir tür standart tarafından tanımlanmış mı?

Yanıtlar:


46

Konsol programları , hakkında konuştuğunuz metin kullanıcı arabirimi türlerini oluşturmak için genellikle küfürleri veya haleflerinden birini kullanır .

Bu kütüphaneler , denilen termcapve terminfo.² adındaki iki veritabanından birini kullanır. Bu veritabanları, çok sayıda farklı terminal tipinde istenen eylemleri almak için kütüphaneye hangi kodları göndereceğini söyleyen haritalar içerir . Bu veritabanlarında tanımlanmış bulacağınız terminal türlerinin büyük çoğunluğu, gerçek terminal günlerinde hayatta kalamadı ve bu nedenle şimdi yalnızca tarihi çıkarlar.

ANSI Terminalleri

Modern Unix terminal emülatörleri³ ANSI X3.64 protokolünü veya sonraki sürümlerinden birini kullanır:

  • ANSI X3.64 : "cam terminalleri" kontrol etmek için bir standart - karşı teletypes - karakterlerin uzak terminal yorumlayan ve özel sekansları dayanır. Örneğin, Unix kutusu imlecini ekranın sol üst köşesine taşımak için ANSI X3.64 uyumlu bir terminale anlatmak isterse karakterleri gönderirESC [ 1 ; 1 H. İlk iki karakter terminale bir kontrol sekansı beklemesini söyler, 1'ler satır ve sütundur veH"imleci taşı" anlamına gelen komuttur.

    Diğer bilgiler: Pek çok PC BBS de ANSI kodları kullandı. ( Yine de aslında.)

  • Aralık VT100 : Gerçekten popüler olan ilk ANSI uyumlu cam terminal, Digital Equipment Corporation'ın VT100'ü idi. ANSI'nin jüri standardını piyasada kanıtlayarak , bugün hala önemli olan fiili bir standart oluşturdu.

    Bazen bunu VT102 protokolü olarak adlandırıyorsunuz, bunun daha sonra maliyeti düşürülmüş ve dolayısıyla daha popüler olan VT100 versiyonunun yanı sıra tüm mevcut genişletme seçeneklerinin yerleşik olduğunu görüyorsunuz.

    DEC terminali protokolleri, 1978'de (VT100) tanıtılan ilk ANSI uyumlu modelden Boundless Technologies tarafından 1995 yılında DEC'den alım yaptıktan sonra Boundless Technologies tarafından üretilen VT500 serisi modellerine kadar uzanan geriye dönük bir seridir . şimdi işsiz, ancak terminalleri zaman zaman kullanılmış pazarda hala gözüküyor.)

  • xterm : Ne tür standartlarda olursa olsun, bir tür ANSI ve VT birleşimi. Bir GUI terminal emülatörünüxtermtürevlerinden biri veya birigibikullanıyorsanızxterm, genellikle terminal protokolünüde kullanırsınız, tipik olarak daha modernxterm-colorveyaxterm-color256değişkenler.

  • Linux : Linux konsolu,xtermprotokollerleaynı şekilde, ANSI terminal protokolünün geniş bir değişkenini de kullanır. Uzantılarının çoğunun bir PC ile bir cam terminal arasındaki farklarla ilgisi var. Örneğin, IBM klavyesinde DEC VT'de olmayan bazı tuşlar bulunur. (Ve tam tersi.)

    Bazı Unix sistemlerinin de kendi konsol terminal protokolü vardır. Orada scoansiSCO Unix ler için ANSI X3.64 varyant örneğin.

Tipik bir terminal emülatör programı bir melez şeydir ve herhangi bir tek terminal modelini tam olarak taklit etmez. VT320 boyunca tüm DEC VT çıkış dizilerinin% 96'sini destekleyebilir, ancak ANSI renk (bir VT525 özelliği) ve rastgele sayıda satır ve sütun gibi uzantıları da destekler. cursesProgramların VT320 protokolünü kullanmak için kullanmasını istediğinizi söylemiş olsanız da (ya da her neyse) programlarınız bu özelliklere ihtiyaç duymuyorsa, anlamadığı kodların% 4'ü kaçırılmayabilir . Böyle bir program VT320 uyumlu olarak kendini tanıtır, daha sonra kesinlikle konuşsa bile.

ANSI Olmayan Terminaller

Hala karşı karşıya kaldığınız bazı önemli standartlar vardır:

  • Wyse : İlk bağımsız cam terminali üreticilerinden biri olan Wyse, 1980'lerin başında iş istasyonu bilgisayarlarının mini bilgisayarları değiştirmeye başlamasındanönce terminalleryapmaya başladı. Wyse terminalleri VT100 ve diğer popüler terminal protokollerini taklit edebiliyor olsalar da, kendi yerel kodlarına sahiptiler.

  • IBM 3270 : Bu kesinlikle bir "Unix" terminal tipi olmasa da, Unix sistemlerini IBM ana bilgisayarlarına bağlama ihtiyacı, hala kullanımda bulabileceğiniz IBM 3270 serisi terminal emülatör programlarının oluşturulmasına yol açtı. Daha sonra IBM 5250 series terminalleriiçin emülatörlerde oldukça yaygındır, bu günlerde en sık AS / 400 ve System i minicomputers bilgisayarlarınabağlanmak için kullanılır.

  • Tektronix 4014 : PC'ler ve iş istasyonları büyük ölçüde cam terminalleri yerinden oynattığından ve böylece bitmap grafikleri standart bir özellik yapmadan önce, yukarıda açıklanan kaçış dizilerine benzer metin komutlarına cevap olarak ekrana grafik çizen pahalı grafik terminalleri vardı. Muhtemelen bunlardan en popüler olanı Tektronix 4010 serisi idi.

    Kullanımı oldukça eğlenceliydi. Grafik çizen bir program yazabilirsiniz ancak daha sonra yerel terminalinizde çizmek için çalıştırmak yerine, çıktısını bir dosyaya yönlendirebilirsiniz:

    $ ./my4014program > my-neat-graphic
    

    Daha sonra bu dosyayı başkasına gönderebilir catve grafiğini, programınız olmadan görmek için Tek terminallerinde gönderebilirler. Tılsımın bir kısmı bu terminallerin ne kadar yavaş çizildiğini gösteriyordu, böylece grafiğin birkaç saniyede toplandığını izleyebiliyordunuz.

Bugün Unix Terminal Emülasyonuyla Çalışma

Ortam değişkenine cursesbakarak kütüphanelerden hangi terminal standardını kullanmak istediğinizi öğrenebilirsiniz TERM:

$ echo $TERM
xterm-color

Ne zaman sshbaşka bir sisteme, TERMdeğişken böylece birlikte yapılır uzaktan Unix kutusu yerel terminale iletişim bilir.

Bu protokollerin çoğu ANSI X3.64 varyantları olduğu ve her yerde bulunan ASCII ve UTF-8 karakter kodlama standartlarının çok fazla TERMolduğu için yanlış bir değişken tipik olarak felaket değildir. Kırılma eğiliminde olan şeyler; Ana Sayfa ve Sayfa Yukarı, Alt-ne olursa olsun tuş kombinasyonları ve renk, kalın vb. Gibi tipografik görüntüleme özellikleridir.


Dipnotlar:

  1. En sık ncurses .

    Ayrıca S-Langcurses gibi API'ye açık rakipler de var .

  2. AT&T, BSD'nin veritabanının yerine geçtiğini ilan terminfoetti ve yerini almaktatermcap büyük ölçüde başarılı oldu, ancak hala eski termcapveritabanını kullanan programlar var . Modern sistemlerde hala bulabileceğiniz birçok BSD ve AT&T farkından biridir.

    Benim macOS kutum yok /etc/termcap, ama var , ancak /usr/share/terminfobu iki işletim sistemi genellikle komut satırı düzeyinde oldukça benzer olsa da, standart bir FreeBSD kurulumu tam tersi bir yoldur.

  3. minicom, xterm, mintty, GNOME Terminal , Terminal.app vb

  4. Düzgün yazılmış Unix programları bu kaçış dizilerini doğrudan yaymaz . Bunun yerine, yukarıda belirtilen kütüphanelerden birini kullanıyorlar, "imleci konumuna (1,1)" ya da her neyse hareket ettirmesini söylüyorlar ve kütüphaneTERM ortam değişken ayarınıza göre gerekli terminal kontrol kodlarını veriyor . Bu, hangi terminal türünü çalıştırdığınızdan bağımsız olarak programın düzgün çalışmasını sağlar.

  5. Eski metin terminalleri, programlar tarafından pek kullanılmayan çok garip özelliklere sahipti, bu yüzden birçok popüler terminal emülatör programı bu özellikleri kullanmıyor. Yaygın ihmaller sixel grafik ve çift genişlik / çift yükseklikli metin modları için destek.

    Ve idame xtermadlı bir program yazdığı vttestVt gibi terminal emülatörlerine test etmek için xterm. Hangi özellikleri desteklemediklerini bulmak için diğer terminal emülatörlerine karşı çalıştırabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.