Šta tačno radi komanda `tty`? Ona prikazuje ime terminala koji trenutno koristite. Skraćenica TTY potiče od „teletype machine“, što u prevodu znači teleprinter. Ali, zašto je baš taj naziv izabran za ovu komandu? Odgovor leži u istoriji razvoja komunikacionih tehnologija.
Teleprinteri iz 19. veka
Tokom tridesetih i četrdesetih godina 19. veka, razvijene su mašine koje su poznate kao teleprinteri. Ove mašine su omogućavale slanje tekstualnih poruka „kroz žicu“ na udaljene lokacije. Poruke bi unosio pošiljalac koristeći neku vrstu tastature, a primale su se i štampale na papiru na odredištu. Teleprinteri su predstavljali značajan napredak u odnosu na telegrafiju, koja se oslanjala na Morzeov kod i slične sisteme.
Poruke su se kodirale i prenosile, a zatim primale, dekodirale i štampale. Različite tehnike su korišćene za kodiranje i dekodiranje poruka. Jedna od najpoznatijih, i najviše korišćena, bila je ona koju je patentirao Emile Bodo 1874. godine. Po njemu je nazvana brzina prenosa podataka, izražena u bodovima. Njegov sistem kodiranja karaktera prethodio je ASCII standardu za čak 89 godina.
Bodoovo kodiranje je vremenom postalo standard u teleprinterskoj tehnologiji i prihvatila ga je većina proizvođača. Originalni Bodoov hardverski dizajn imao je samo pet tastera, sličnih klavirskim. Operater je morao da nauči određene kombinacije tastera za svako slovo. Na kraju, Bodoov sistem kodiranja je spojen sa tradicionalnim rasporedom tastature.
Kao rezultat tog napretka, ove mašine su nazvane teleprinter mašine. Ovo je skraćeno na teleprintere, a zatim na TTY. Dakle, dobili smo akronim TTY. Ali, kakve veze ima telegrafija sa računarstvom?
ASCII i Teleks
Kada se 1963. pojavio ASCII standard, proizvođači teleprintera su ga usvojili. Uprkos izumu i širokoj upotrebi telefona, teleprinteri su i dalje bili veoma popularni.
Teleks je bio globalna mreža teleprintera koja je omogućavala slanje pisanih poruka širom sveta. On je bio glavni način prenošenja pisanih poruka u periodu od Drugog svetskog rata do ekspanzije faks mašina osamdesetih godina prošlog veka.
Paralelno s tim, razvijali su se i računari. Postajali su sposobni da komuniciraju sa korisnicima u realnom vremenu i da podržavaju više korisnika istovremeno. Stari, serijski način rada je postao nedovoljan. Ljudi nisu više želeli da čekaju 24 sata ili više na rezultate. Izrada gomile bušenih kartica i čekanje rezultata preko noći više nije bilo prihvatljivo.
Ljudima je bio potreban uređaj koji će im omogućiti da unose instrukcije i dobijaju rezultate u realnom vremenu. Želeli su efikasnost.
Preoblikovanje Teleprintera
Teleprinter se pokazao kao idealan kandidat za ulazno/izlazni uređaj. Na kraju krajeva, to je bio uređaj dizajniran da omogući kucanje, kodiranje, slanje, primanje, dekodiranje i štampanje poruka.
Teleprinteru nije bilo važno da li je uređaj na drugom kraju veze drugi teleprinter ili ne. Sve dok je govorio istim kodnim jezikom i mogao da prima poruke i šalje odgovore, teleprinter je radio bez problema.
I naravno, koristio je manje-više standardnu tastaturu.
Hardverski Emulirani Teleprinteri
Teleprinteri su postali standardni način interakcije sa velikim mini i mainframe računarima tog doba.
Kasnije su ih zamenili uređaji koji su emulirali te elektromehaničke mašine korišćenjem elektronike. Ovi uređaji su umesto papirnih rolni imali katodne cevi (CRT). Odgovori sa računara su se prikazivali brzo. Takođe su omogućavali funkcionalnosti koje ranije nisu bile moguće, poput pomeranja kursora po ekranu, brisanja ekrana, podebljavanja teksta i slično.
DEC VT05 je bio rani primer virtuelnog teleprintera, a nasledio ga je poznati DEC VT100. Milioni DEC VT100 su prodati širom sveta.
Softverski Emulirani Teleprinteri
U desktop okruženju Linuxa i drugih operativnih sistema sličnih Unix-u, poput macOS-a, prozori terminala i aplikacije kao što su xterm i Konsole predstavljaju primere virtuelnih teleprintera. Međutim, oni su u potpunosti emulirani softverski. Nazivaju se pseudo-teleprinteri, skraćeno PTS.
I tu dolazimo do komande `tty`.
Šta nam `tty` može reći?
U Linuxu postoji pseudo-teleprinter multipleksor koji upravlja vezama svih pseudo-teleprintera u terminalskim prozorima (PTS). Multipleksor je glavni, a PTS su podređeni. Kernel adresira multipleksor putem datoteke uređaja koja se nalazi na /dev/ptmx.
Komanda `tty` će ispisati ime datoteke uređaja koju vaš pseudo-teleprinter (podređeni) koristi da bi se povezao sa glavnim. To je, u suštini, broj vašeg terminalskog prozora.
Hajde da vidimo šta komanda `tty` prikazuje za naš terminalski prozor:
tty
Odgovor pokazuje da smo povezani sa datotekom uređaja na /dev/pts/0.
Naš terminalski prozor, koji je softverska emulacija teleprintera (TTY), povezan je sa pseudo-teleprinterskim multipleksorom kao pseudo-teleprinter (PTS), i ima broj nula.
Tiha opcija
Opcija `-s` (tiho) uzrokuje da `tty` ne generiše nikakav izlaz.
tty -s
Međutim, ona daje izlaznu vrednost:
0: ako standardni ulaz dolazi sa TTY uređaja, emuliranog ili fizičkog.
1: ako standardni ulaz ne dolazi sa TTY uređaja.
2: Greška u sintaksi, korišćeni su netačni parametri komandne linije.
3: Došlo je do greške prilikom pisanja.
Ovo će najverovatnije biti najkorisnije u Bash skriptovanju. Ali, čak i u komandnoj liniji, možemo pokazati kako da se naredba izvrši samo ako radite u prozoru terminala (TTY ili PTS sesija).
tty -s && echo "In a tty"
Pošto radimo u TTY sesiji, naš izlazni kod je 0, a druga komanda se izvršava.
Komanda `who`
Druge komande takođe mogu otkriti vaš TTY broj. Komanda `who` prikazuje informacije o svim prijavljenim korisnicima, uključujući i vas.
Aleks i Meri su se udaljeno povezali sa Linux računarom. Oni su povezani sa PTS jedan i dva.
Korisnik Dejv je prikazan kao povezan na „:0“.
Ovo predstavlja ekran i tastaturu koji su fizički povezani sa računarom. Iako su ekran i tastatura hardverski uređaji, oni su i dalje povezani sa multipleksorom putem datoteke uređaja. Komanda `tty` otkriva da je to /dev/pts/2.
who
tty
Pristup TTY-ju
Možete pristupiti TTY sesiji preko celog ekrana tako što ćete držati pritisnute tastere Ctrl+Alt i pritisnuti jedan od funkcijskih tastera.
Ctrl+Alt+F3 će prikazati prompt za prijavu na tty3.
Ako se prijavite i izdate naredbu `tty`, videćete da ste povezani na /dev/tty3.
Ovo nije pseudo-teleprinter (emuliran u softveru); to je virtuelni teleprinter (emuliran u hardveru). On koristi ekran i tastaturu povezane sa vašim računarom, da emulira virtuelni teleprinter kao što je DEC VT100 nekada radio.
Možete koristiti funkcijske tastere Ctrl+Alt sa funkcijskim tasterima F3 do F6 i imati otvorene četiri TTY sesije ako to želite. Na primer, možete biti prijavljeni na tty3 i pritisnuti Ctrl+Alt+F6 da biste prešli na tty6.
Da biste se vratili u grafičko okruženje radne površine, pritisnite Ctrl+Alt+F2.
Pritiskom na Ctrl+Alt+F1 vratićete se na prompt za prijavu vaše grafičke radne sesije.
Nekada davno, Ctrl+Alt+F1 do Ctrl+Alt+F6 bi otvaralo TTY konzole preko celog ekrana, a Ctrl+Alt+F7 bi vas vraćao u vaše grafičko okruženje radne površine. Ako koristite stariju distribuciju Linuxa, vaš sistem se možda ponaša na taj način.
Ovo je testirano na trenutnim izdanjima Manjaro, Ubuntu i Fedora i svi su se ponašali ovako:
Ctrl+Alt+F1: Vraća vas na ekran za prijavu na grafičko okruženje radne površine.
Ctrl+Alt+F2: Vraća vas u grafičko okruženje radne površine.
Ctrl+Alt+F3: Otvara TTY 3.
Ctrl+Alt+F4: Otvara TTY 4.
Ctrl+Alt+F5: Otvara TTY 5.
Ctrl+Alt+F6: Otvara TTY 6.
Pristup ovim konzolama preko celog ekrana omogućava ljudima koji koriste instalacije Linuxa samo sa komandne linije – a mnogi Linux serveri su konfigurisani na ovaj način – da imaju više konzola na raspolaganju.
Da li ste ikada radili na Linux mašini sa grafičkim desktop okruženjem i da li je nešto prouzrokovalo da se vaša sesija zamrzne? Sada možete da pređete na jednu od sesija TTY konzole kako biste mogli da pokušate da ispravite situaciju.
Možete koristiti `top` i `ps` da pokušate da identifikujete neispravnu aplikaciju, a zatim upotrebite `kill` da biste je prekinuli ili jednostavno upotrebite `shutdown` da biste pokušali da zatvorite sistem na što elegantniji način, koliko to stanje računara dozvoljava.
Tri mala slova sa puno istorije
Komanda `tty` je dobila ime po uređaju iz kasnih 1800-ih, koji se pojavio u Unixu 1971. godine, i do danas je deo Linuxa i operativnih sistema sličnih Unix-u.
Mala komanda ima dugu i zanimljivu priču iza sebe.