K čemu slouží příkaz `tty`? Zobrazuje jméno terminálu, který právě používáte. Zkratka TTY pochází z anglického „teletypewriter“, což znamená dálnopis. Jaký je však příběh tohoto příkazu? To si vyžaduje trochu širší kontext.
Historie dálnopisů sahá až do 19. století
Již ve 30. a 40. letech 19. století byly vynalezeny stroje zvané dálnopisy. Tato zařízení umožňovala přenášet psané zprávy „po drátě“ do vzdálených míst. Odesílatel zadával text pomocí klávesnice, a zpráva se vytiskla na papír na přijímací straně. Byly to pokročilejší verze telegrafie, která dříve používala Morseovu abecedu a jí podobné kódy.
Zprávy byly zakódovány a odeslány, poté přijaty, dekódovány a vytištěny. Pro kódování a dekódování se používaly různé metody. Jednou z nejvýznamnějších a nejrozšířenějších byla technika patentovaná v roce 1874 Émilem Baudotem, po němž je pojmenována přenosová rychlost. Jeho kódovací schéma předcházelo standardu ASCII o celých 89 let.
Baudotův kód se stal standardem pro kódování dálnopisných zpráv a přijala ho většina výrobců. Původní Baudotův návrh hardwaru měl pouze pět kláves, podobných klávesám klavíru. Operátor se musel naučit specifické kombinace kláves pro každé písmeno. Později byl Baudotův systém spojen s tradičním rozložením klávesnice.
Tyto stroje, které představovaly technologický pokrok, začaly být označovány jako „teletypewriters“, což se zkrátilo na „teletypes“ a nakonec na TTY. Tady se dostáváme k původu akronymu TTY. Ale co má telegrafie společného s počítači?
ASCII a Telex
V roce 1963, s příchodem ASCII, jej přijali i výrobci dálnopisů. Navzdory vynálezu a rozšíření telefonů, dálnopisy si stále držely svou pozici.
Telex byla celosvětová síť dálnopisů, která umožňovala zasílání psaných zpráv po celém světě. V období po druhé světové válce až do rozšíření faxových přístrojů v 80. letech 20. století, byly dálnopisy hlavním způsobem přenosu písemných informací.
Současně se vyvíjely i počítače. Začínaly komunikovat s uživateli v reálném čase a podporovat více uživatelů. Starý dávkový způsob zpracování dat se stal neefektivní. Lidé nechtěli čekat na výsledky 24 hodin i déle. Dělat hromady děrných štítků a čekat přes noc na výstupy již nebylo přijatelné.
Lidé potřebovali zařízení, které by jim umožnilo zadávat pokyny a okamžitě dostávat výsledky. Chtěli efektivitu.
Nové využití dálnopisů
Dálnopis se ukázal jako ideální kandidát pro vstupní a výstupní zařízení. Byl to koneckonců stroj navržený pro psaní, kódování, odesílání, přijímání, dekódování a tisk zpráv.
Dálnopisu nezáleželo na tom, jestli je na druhém konci spojení jiný dálnopis. Dokud uměl stejný kódovací jazyk a dokázal přijímat a odesílat zprávy, byl s tím spokojený.
A navíc používal víceméně standardní rozložení klávesnice.
Hardwarová emulace dálnopisů
Dálnopisy se staly standardním prostředkem pro komunikaci s velkými mini a sálovými počítači tehdejší doby.
Později byly nahrazeny elektronickými zařízeními, které tyto elektromechanické stroje emulovaly. Místo papírových rolí měly obrazovky s katodovými trubicemi (CRT). Při zobrazování odpovědí z počítače už netiskly na papír. Umožňovaly funkce, které dříve nebyly možné, jako je pohyb kurzoru po obrazovce, mazání obrazovky, tučné písmo a další.
DEC VT05 byl jedním z prvních příkladů virtuálního dálnopisu a předchůdcem známých DEC VT100, kterých se prodaly miliony kusů.
Softwarová emulace dálnopisů
V desktopovém prostředí Linuxu a dalších unixových operačních systémů, jako je macOS, jsou terminálová okna a aplikace jako xterm a Konsole příklady softwarově emulovaných virtuálních dálnopisů. Říká se jim pseudoteletypes, zkráceně PTS.
A tady do hry vstupuje `tty`.
Co nám může `tty` sdělit?
V Linuxu existuje multiplexor pseudoteletypů, který spravuje připojení ze všech oken terminálů (PTS). Multiplexor je hlavní a PTS jsou podřízené. Multiplexor je jádrem adresován skrze soubor zařízení umístěný v `/dev/ptmx`.
Příkaz `tty` vypíše název souboru zařízení, který váš pseudodálnopis používá pro připojení k hlavnímu zařízení. Je to v podstatě číslo vašeho terminálového okna.
Podívejme se, co `tty` vypíše pro naše terminálové okno:
tty
Odpověď ukazuje, že jsme připojeni k souboru zařízení v `/dev/pts/0`.
Naše terminálové okno, které je softwarovou emulací dálnopisu (TTY), je spojeno s multiplexorem pseudodálnopisů jako pseudodálnopis (PTS). A v tomto případě má číslo nula.
Tichá volba
Volba `-s` (silent – tichá) způsobí, že `tty` nevytvoří žádný výstup.
tty -s
Vytvoří však návratovou hodnotu:
- 0: Pokud standardní vstup pochází ze zařízení TTY, ať už emulovaného nebo fyzického.
- 1: Pokud standardní vstup nepochází ze zařízení TTY.
- 2: Pokud došlo k chybě syntaxe, byly použity nesprávné parametry příkazového řádku.
- 3: Pokud nastala chyba zápisu.
To se nejvíce hodí při skriptování v Bash. Ale i v příkazovém řádku si můžeme ukázat, jak spustit příkaz pouze pokud běžíte v okně terminálu (relaci TTY nebo PTS).
tty -s && echo "In a tty"
Protože běžíme v relaci TTY, výstupní kód je 0 a druhý příkaz se provede.
Kdo velí?
Další příkazy nám mohou odhalit vaše TTY číslo. Příkaz `who` vypíše informace o všech přihlášených uživatelích, včetně vás.
Alec a Mary jsou vzdáleně připojeni k počítači se systémem Linux. Jsou připojeni k PTS jedna a dvě.
Uživatel dave je zobrazen jako připojený k „:0“.
To reprezentuje obrazovku a klávesnici fyzicky připojené k počítači. I když jsou obrazovka a klávesnice hardwarová zařízení, jsou stále připojeny k multiplexoru prostřednictvím souboru zařízení. `tty` ukazuje, že jde o `/dev/pts/2`.
who
tty
Přístup k TTY
K relaci TTY na celou obrazovku se dostanete podržením kláves Ctrl+Alt a stisknutím jedné z funkčních kláves.
Ctrl+Alt+F3 vyvolá výzvu k přihlášení tty3.
Pokud se přihlásíte a zadáte příkaz `tty`, uvidíte, že jste připojeni k `/dev/tty3`.
Toto není pseudodálnopis (emulovaný v softwaru); je to virtuální dálnopis (emulovaný v hardwaru). Používá obrazovku a klávesnici připojenou k vašemu počítači k emulaci virtuálního dálnopisu, podobně jako to dělal DEC VT100.
Můžete používat funkční klávesy Ctrl+Alt s funkčními klávesami F3 až F6 a mít otevřené čtyři relace TTY. Můžete být například přihlášeni v tty3 a stisknutím Ctrl+Alt+F6 přejít na tty6.
Pro návrat do grafického desktopového prostředí stiskněte Ctrl+Alt+F2.
Stisknutím Ctrl+Alt+F1 se vrátíte na přihlašovací obrazovku vaší grafické relace.
Dříve, Ctrl+Alt+F1 až Ctrl+Alt+F6 otevíraly konzole TTY na celou obrazovku a Ctrl+Alt+F7 vás vracelo do grafického prostředí. Pokud používáte starší distribuci Linuxu, může se váš systém takto chovat.
Toto bylo testováno na aktuálních verzích Manjaro, Ubuntu a Fedora a všechny se chovaly následovně:
- Ctrl+Alt+F1: Vrátí vás na přihlašovací obrazovku grafického prostředí.
- Ctrl+Alt+F2: Vrátí vás do grafického prostředí pracovní plochy.
- Ctrl+Alt+F3: Otevře TTY 3.
- Ctrl+Alt+F4: Otevře TTY 4.
- Ctrl+Alt+F5: Otevře TTY 5.
- Ctrl+Alt+F6: Otevře TTY 6.
Přístup k těmto celoobrazovkovým konzolím umožňuje uživatelům, kteří používají Linux pouze v příkazovém řádku (a mnoho linuxových serverů je takto nakonfigurováno), mít k dispozici více konzolí.
Stalo se vám někdy, že jste pracovali na linuxovém stroji s grafickým desktopovým prostředím a něco způsobilo zamrznutí vaší relace? Nyní můžete přejít do jedné z relací konzole TTY, abyste se pokusili situaci napravit.
Můžete použít příkazy `top` a `ps`, abyste identifikovali nefungující aplikaci, a pak ji pomocí příkazu `kill` ukončit, nebo jednoduše použít `shutdown` a pokusit se ukončit systém, jak elegantně vám to jeho stav dovolí.
Tři malá písmena s bohatou historií
Příkaz `tty` získal svůj název podle zařízení z konce 19. století. Objevil se v Unixu v roce 1971 a dodnes je součástí Linuxu a operačních systémů podobných Unixu.
I tak malý příkaz skrývá bohatou historii.