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 termcap
ve 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üxterm
türevlerinden biri veya birigibikullanıyorsanızxterm
, genellikle terminal protokolünüde kullanırsınız, tipik olarak daha modernxterm-color
veyaxterm-color256
değişkenler.
Linux : Linux konsolu,xterm
protokollerleaynı ş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 scoansi
SCO 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. curses
Programları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 cat
ve 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 curses
bakarak kütüphanelerden hangi terminal standardını kullanmak istediğinizi öğrenebilirsiniz TERM
:
$ echo $TERM
xterm-color
Ne zaman ssh
başka bir sisteme, TERM
değ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 TERM
olduğ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:
En sık ncurses .
Ayrıca S-Langcurses
gibi API'ye açık rakipler de var .
AT&T, BSD'nin veritabanının yerine geçtiğini ilan terminfo
etti ve yerini almaktatermcap
büyük ölçüde başarılı oldu, ancak hala eski termcap
veritabanı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/terminfo
bu iki işletim sistemi genellikle komut satırı düzeyinde oldukça benzer olsa da, standart bir FreeBSD kurulumu tam tersi bir yoldur.
minicom
, xterm
, mintty
, GNOME Terminal , Terminal.app vb
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.
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 xterm
adlı bir program yazdığı vttest
Vt 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.