Terminalfunktioner
Inom datorer och telekommunikation är kapaciteten hos en terminal olika terminalfunktioner, utöver vad som är tillgängligt från en ren teleskrivmaskin , som värdsystem (och programmen som körs på dem) kan använda sig av. De är (främst) av kontrollkoder och escape-koder som kan skickas till eller tas emot från terminalen. Escape-koderna som skickas till terminalen utför olika funktioner som en CRT- terminal (och mjukvaruterminalemulatorer ) kan, men som en teleskrivmaskin inte är; som att flytta terminalens markör till positioner på skärmen, rensa och rulla hela eller delar av skärmen, slå på och stänga av anslutna skrivarenheter, programmera programmerbara funktionstangenter, ändra displayfärger och attribut (som omvänd video) och ställa in displayen titelsträngar. Escape-koderna som tas emot från terminalen betecknar saker som funktionstangent , piltangent och andra speciella tangenter ( hemknapp , slutknapp , hjälpknapp , PgUp-knapp , PgDn - tangent , infogningstangent , raderingsknapp , och så vidare) tangenttryckningar .
Unix och POSIX: termcap, terminfo, et al.
I Unix och andra POSIX- kompatibla system som stöder POSIX-terminalgränssnittet kodas dessa funktioner i databaser som är konfigurerade av en systemadministratör och nås från program via terminfo -biblioteket (som ersätter det äldre termcap- biblioteket), som i sin tur är byggda bibliotek som curses och ncurses -biblioteken, genom vilka applikationsprogram använder terminalfunktionerna för att tillhandahålla textuella användargränssnitt med fönster, dialogrutor, knappar, etiketter, inmatningsfält, menyer och så vidare. Avsikten är att detta tillåter applikationsprogram att vara oberoende av faktiska terminalegenskaper. De behöver inte koppla in några kontrollkoder eller escape-sekvenser i sin kod, och har därför inga problem att använda på en rad terminaler med en rad möjligheter.
termcap
Termcap (för " term inal cap abilities")-biblioteket utvecklades för BSD-system . Den använder en databas lagrad i filen /etc/termcap . Denna databas består av en serie poster (som var och en består av en eller flera rader i filen, sammanfogade av omvänt snedstreck i ändarna av varje rad som fortsätter på en efterföljande) som var och en representerar kapaciteten hos en viss terminal. Fälten i posten omfattar terminaltypens namn, eller namn, följt av en sekvens av funktioner, separerade med kolon. Kapacitetsfälten delas in i tre grupper:
- terminalens egenskaper
- Dessa innefattar sådant som det (nominella) antalet rader och kolumner som terminalens display har, om utdata automatiskt lindas till nästa rad när den når slutet av en rad, och så vidare.
- kontrollsekvenser som skickas som utdata till terminalen
- Dessa omfattar kontrollkoderna och escape-sekvenserna som skickas till terminalen för att den ska kunna utföra någon åtgärd (inte nödvändigtvis en visningsåtgärd). Ett exempel på en av de enklaste är utdatasekvensen för att rensa skärmen, vilket kan vara formmatningstecknet ( ASCII FF ) på vissa typer av terminaler men kan till exempel vara escape-sekvensen ␛2J på en terminal som kräver ANSI escape sekvenser .
- kontrollsekvenser som skickas som inmatning av terminalen
- Dessa omfattar kontrollkoderna och escape-sekvenserna som terminalen skickar till värden för att representera olika åtgärder och händelser, såsom funktionstangenter och piltangenter som trycks ned.
terminfo
Terminfo-biblioteket (" term inal info rmation") utvecklades för System V-system. Den använder en databas lagrad i flera filer i en katalog, som kan vara olika (på olika Unices och POSIX-kompatibla system) /usr/lib/terminfo , /usr/share/terminfo , eller till och med /usr/share/lib/terminfo . (Dess plats är inte ens enhetlig över olika distributioner av Linux .)
Till skillnad från termcap-databasen är terminfo-databasen kompilerad, en maskinläsbar databas som är konstruerad från ett mänskligt läsbart källfilformat av ett verktygsprogram, tic . De kan dekompileras från maskinläsbar form tillbaka till mänsklig läsbar form av ett annat verktygsprogram, infocmp . Kommandot för att mata ut den mänskligt läsbara formen av terminaldefinitionen "vt100" är till exempel:
infocmp vt100
Användningen av ett maskinläsbart format var att undvika onödiga overhead, i applikationsprogram som använder system som termcap-biblioteket, att upprepade gånger analysera databasinnehållet för att läsa fälten i en post. Användningen av flera filer var att undvika liknande omkostnader för att analysera databasinnehållet för att hitta databasposten för målterminaltypen. Terminaltypens namnindex är i själva verket Unix/POSIX-filsystemets vanliga katalogstruktur. Ursprungligen hade Unix allvarliga prestandaproblem med stora kataloger som innehåller många filer, och därför använder terminfo en struktur på två nivåer, som delar upp katalogposterna med första bokstav i en serie underkataloger. Nyare filsystemformat som används på Unix-system lider inte lika mycket av sådana problem (eftersom deras katalogstrukturer på skivan inte längre är enkla arrayer av poster, utan är organiserade i träd eller hashtabeller) och därför är nödvändigheten för detta designelement , som fortfarande finns i moderna terminfo-implementationer, har sedan dess försvunnit.
Verktygsprogram för att utöva terminalfunktioner
På Unix-system används kommandot tput för att leta upp en specifik förmåga i systemets databas, och mata ut den till kommandots standardutgång (som antagligen är den terminal med vilken funktionen som betecknas med förmågan ska utföras). En av de enklaste operationerna är att rensa skärmen. Namnet på databasfältet som lagrar utdatasekvensen för detta är tydligt , så kommandoargumenten till tput -programmet för att rensa skärmen är
klart
En annan operation är att initiera eller återställa terminalen till ett känt standardtillstånd (av teckenattribut, typsnitt, färger och så vidare). Kommandona för detta är:
tput init
och
tput återställ
Normalt använder kommandot tput terminaltypen som specificeras av miljövariabeln TERM
, en av de styrande miljövariablerna för POSIX-terminalgränssnittet . Detta kan dock åsidosättas för att tvinga tput att leta upp en annan terminaltyp i databasen, med ett kommandoradsalternativ till kommandot. Så för att till exempel utfärda återställningssekvensen som är lämplig för typen av terminal som heter "vt100" i databasen (vanligtvis en DEC VT100- terminal), oavsett terminaltyp som anges i miljövariabler, är kommandot:
tput -T vt100 återställning
Vad stödjer vad
Använda källor
- Afzal, Amir (2008). UNIX unbounded: a beginning approach (5:e upplagan). Prentice Hall. ISBN 978-0-13-119449-6 .
- Blum, Richard (2008). Linux Command Line och Shell Scripting Bible . Bibelserien. John Wiley och söner. ISBN 978-0-470-25128-7 .
- Kista, Stephen (1991). UNIX system V version 4: den fullständiga referensen . Osborne McGraw-Hill. ISBN 978-0-07-881653-6 .
- Frisch, Æleen (2002). Viktig systemadministration . En nötskalshandbok (3:e upplagan). O'Reilly Media, Inc. ISBN 978-0-596-00343-2 .
- Kumar, Sudhir (2004). Encyclopaedia of Operating System . Anmol Publications PVT. LTD. ISBN 978-81-261-1792-5 .
- Raymond, Eric S. (2004). Konsten att programmera Unix . Addison-Wesley professionell datorserie. Addison-Wesley. ISBN 978-0-13-142901-7 .
- Winsor, Janice (2001). Solaris 8 Advanced System Administrator's Guide (3:e upplagan). Prentice Hall PTR. ISBN 978-0-13-027703-9 .
Vidare läsning
- Strang, John; Mui, Linda; O'Reilly, Tim (1991). Termcap och terminfo . Nötskalshandbok (3:e upplagan). O'Reilly Media, Inc. ISBN 978-0-937175-22-4 .