reset(1)
NAMN
tset, reset – terminalinitiering
SYNOPSIS
tset [-IQVcqrsw] [-] [-e tecken] [-i tecken] [-k tecken] [-m mappning] [terminal] reset [-IQVcqrsw] [-] [-e tecken] [-i tecken] [-k tecken] [-m mappning] [terminal]
BESKRIVNING
tset initierar terminaler.
Först bestämmer tset vilken terminaltyp som används. Detta görs genom att välja den första terminaltyp som hittas enligt följande ordning:
- Argumentet terminal som anges på kommandoraden.
- Värdet i miljövariabeln TERM.
- På BSD-system: den terminaltyp som är kopplad till standardfelutmatningens enhet i filen /etc/ttys. På Linux och System V-liknande UNIX-system gör getty normalt detta genom att sätta TERM enligt den terminaltyp som anges i /etc/inittab.
- Standardterminaltypen unknown.
Om terminaltypen inte anges på kommandoraden tillämpas därefter mappningarna från optionen -m. Se avsnittet Mappning av terminaltyp.
Om terminaltypen börjar med ett frågetecken, ?, frågas användaren om terminaltypen ska bekräftas. Ett tomt svar bekräftar typen. Ett annat värde kan matas in för att ange en ny terminaltyp.
När terminaltypen har bestämts hämtas motsvarande terminfo-post. Om ingen terminfo-post hittas för typen frågas användaren om en annan terminaltyp.
När terminfo-posten har hämtats ställs bland annat fönsterstorlek, backstegstecken, avbrottstecken och radborttagningstecken in. Därefter skickas terminalens initieringssträngar och tabbinitieringssträngar till standardfelutmatningen.
Slutligen, om erase-, interrupt- eller line-kill-tecknen har ändrats eller inte är satta till sina standardvärden, visas deras värden på standardfelutmatningen.
Använd optionen -c eller -w för att endast välja kontrolltecken och lägen respektive fönsterstorlek. Om ingen av dessa optioner anges antas båda.
RESET-LÄGE
När programmet körs som reset sätter tset terminalen i normalt, kokt läge och eko-läge. Det stänger av cbreak och raw, slår på översättning av nyrad och återställer specialtecken som inte är satta till sina standardvärden innan terminalinitieringen görs.
Detta är användbart efter att ett program har kraschat och lämnat terminalen i ett onormalt tillstånd.
I ett sådant läge kan du behöva skriva:
<LF>reset<LF>
Radmatningstecknet, LF, är normalt Ctrl-J. Detta kan behövas eftersom vagnretur kanske inte längre fungerar när terminalen är i ett felaktigt tillstånd.
Ofta ekas inte heller kommandot på skärmen i detta läge.
OPTIONER
-c
- Sätt kontrolltecken och lägen.
-e tecken
- Sätt erase-tecknet till tecken.
-I
- Skicka inte terminalens initieringssträngar eller tabbinitieringssträngar till terminalen.
-i tecken
- Sätt avbrottstecknet, interrupt, till tecken.
-k tecken
- Sätt line-kill-tecknet till tecken.
-m mappning
- Ange en mappning från porttyp till terminaltyp. Se avsnittet Mappning av terminaltyp.
-Q
- Visa inga värden för erase-, interrupt- och line-kill-tecknen. Normalt visar tset värden för kontrolltecken som skiljer sig från systemets standardvärden.
-q
- Visa terminaltypen på standardutmatningen och initiera inte terminalen på något sätt. Optionen - ensam motsvarar detta men är föråldrad.
-r
- Skriv terminaltypen till standardfelutmatningen.
-s
- Skriv en sekvens av skalkommandon till standardutmatningen för att initiera miljövariabeln TERM. Se avsnittet Ställa in miljön.
-V
- Visa versionen av ncurses som användes för detta program och avsluta.
-w
- Ändra fönsterstorleken så att den motsvarar storleken som härleds via setupterm. Normalt har detta ingen effekt, utom när setupterm inte kan upptäcka fönsterstorleken.
Argumenten till optionerna -e, -i och -k kan anges som faktiska tecken eller med hattnotation. Exempelvis kan control-H anges som:
^H ^h
STÄLLA IN MILJÖN
Det är ofta önskvärt att lägga terminaltypen och information om terminalens funktioner i skalets miljö. Detta görs med optionen -s.
När optionen -s anges skrivs kommandon för att lägga informationen i skalets miljö till standardutmatningen.
Om miljövariabeln SHELL slutar med csh skrivs kommandon för csh. Annars skrivs kommandon för sh.
Observera att csh-kommandona sätter och tar bort skalvariabeln noglob, och lämnar den osatt.
Följande rad i filen .login eller .profile initierar miljön korrekt:
eval `tset -s optioner ...`
MAPPNING AV TERMINALTYP
När terminalen inte är fast kopplad till systemet, eller när aktuell systeminformation är felaktig, är den terminaltyp som hämtas från /etc/ttys eller från miljövariabeln TERM ofta något generiskt, till exempel:
network dialup unknown
När tset används i ett startskript är det ofta önskvärt att ge information om vilken terminaltyp som används på sådana portar.
Syftet med optionen -m är att mappa från en uppsättning villkor till en terminaltyp. Med andra ord kan man tala om för tset:
Om jag är på denna port vid denna hastighet, anta att jag använder denna terminaltyp.
Argumentet till -m består av:
- valfri porttyp
- valfri operator
- valfri baudhastighetsspecifikation
- valfritt kolon, ':
- terminaltyp
Porttypen är en sträng som avgränsas av operatorn eller kolontecknet.
Operatorn kan vara valfri kombination av:
>
- större än
<
- mindre än
@
- lika med
!
- inverterar testets betydelse
Baudhastigheten anges som ett tal och jämförs med hastigheten för standardfelutmatningen, som normalt ska vara kontrollterminalen.
Terminaltypen anges som en sträng.
Om terminaltypen inte anges på kommandoraden tillämpas -m-mappningarna på terminaltypen. Om porttypen och baudhastigheten matchar mappningen ersätter terminaltypen i mappningen den aktuella typen.
Om flera mappningar anges används den första som är tillämplig.
Exempel:
dialup>9600:vt100
Detta betyder:
- porttypen är dialup
- operatorn är >
- baudhastigheten är 9600
- terminaltypen är vt100
Resultatet är att om terminaltypen är dialup och hastigheten är högre än 9600 baud används terminaltypen vt100.
Om ingen baudhastighet anges matchar terminaltypen alla baudhastigheter.
Om ingen porttyp anges matchar terminaltypen alla porttyper.
Exempel:
-m dialup:vt100 -m :?xterm
Detta gör att alla dialup-portar, oavsett baudhastighet, matchar terminaltypen vt100. Alla icke-dialup-portar matchar terminaltypen ?xterm.
Eftersom ?xterm börjar med frågetecken kommer användaren att tillfrågas om terminalen verkligen är en xterm.
Inga blanktecken är tillåtna i argumentet till optionen -m.
För att undvika problem med metatecken rekommenderas att hela argumentet till -m omges av enkla citationstecken. Användare av csh bör dessutom sätta ett omvänt snedstreck före utropstecken, !.
HISTORIK
Kommandot tset förekom i BSD 3.0.
ncurses-implementationen anpassades lätt från 4.4BSD-källorna för en terminfo-miljö av Eric S. Raymond.
KOMPATIBILITET
Verktyget tset tillhandahålls för bakåtkompatibilitet med BSD-miljöer. I de flesta moderna UNIX-system kan /etc/inittab och getty(1) sätta TERM korrekt för varje dialup-linje, vilket tar bort det som tidigare var tset viktigaste användningsområde.
Denna implementation beter sig som 4.4BSD tset, med några undantag.
BSD-optionen -S fungerar inte längre. Den skriver ett felmeddelande till standardfel och avslutas.
Optionen -s sätter bara TERM, inte TERMCAP. Båda ändringarna beror på att miljövariabeln TERMCAP inte längre stöds i terminfo-baserad ncurses. Därmed är tset -S oanvändbar.
I 4.4BSD fanns en odokumenterad funktion där körning av tset via en länk med namnet TSET, eller något annat namn som började med versal, ställde in terminalen för enbart versaler. Den funktionen har utelämnats.
Optionerna -A, -E, -h, -u och -v togs bort från tset i 4.4BSD. Ingen av dem dokumenterades i 4.3BSD och de har högst begränsad nytta.
Optionerna -a, -d och -p är på liknande sätt odokumenterade eller mindre användbara, men behölls eftersom de verkar vara spridda i användning. Det rekommenderas starkt att all användning av dessa tre optioner ändras till att använda -m i stället.
Optionen -n finns kvar men har ingen effekt.
Optionerna -adnp är därför utelämnade från användningssammanfattningen ovan.
Det är fortfarande tillåtet att ange optionerna -e, -i och -k utan argument, men det rekommenderas starkt att sådan användning ändras så att tecknet anges uttryckligen.
Från och med 4.4BSD innebär körning av tset som reset inte längre automatiskt optionen -Q.
Interaktionen mellan optionen - och argumentet terminal i vissa historiska implementationer av tset har också tagits bort.
MILJÖ
Kommandot tset använder följande miljövariabler:
SHELL
- Anger om tset ska initiera TERM med syntax för sh eller csh.
TERM
- Anger terminaltypen. Varje terminaltyp är distinkt, även om många är likartade.
TERMCAP
- Kan ange platsen för en termcap-databas. Om värdet inte är en absolut sökväg, alltså inte börjar med /, tar tset bort variabeln från miljön innan terminalbeskrivningen slås upp.
FILER
/etc/ttys
- Databas för mappning mellan systemportnamn och terminaltyp. Används endast i BSD-versioner.
/usr/share/terminfo
- Databas över terminalfunktioner.
EXEMPEL
Återställ en terminal som blivit felaktig efter att ett program kraschat:
reset
Om terminalen inte reagerar på Enter kan du behöva använda Ctrl-J:
Ctrl-J reset Ctrl-J
Visa terminaltyp utan att initiera terminalen:
tset -q
Skriv terminaltypen till standardfel:
tset -r
Skapa skalkommandon för att sätta TERM:
tset -s
Använd i .profile eller .login:
eval `tset -s`
Tvinga terminaltyp:
tset xterm
Mappa dialup-terminaler till vt100:
tset -m 'dialup:vt100'
Mappa dialup över 9600 baud till vt100:
tset -m 'dialup>9600:vt100'
Ställ in erase-tecknet till Ctrl-H:
tset -e ^H
Initiera inte terminalen, men skicka inte heller initieringssträngar:
tset -I
PRAKTISK ANVÄNDNING
reset används ofta när terminalen blivit ”trasig”, till exempel efter att ett program kraschat och lämnat terminalen i raw-läge, utan eko eller med fel teckentolkning.
Vanliga symptom:
- tangenttryckningar syns inte
- Enter fungerar inte normalt
- text visas på konstigt sätt
- terminalen svarar men beter sig fel
Då kan följande hjälpa:
reset
eller, om Enter inte fungerar:
Ctrl-J reset Ctrl-J
tset används mer för att initiera eller bekräfta terminaltyp, särskilt i äldre miljöer eller startskript.
SE ÄVEN
KORT SAMMANFATTNING
reset återställer terminalen till ett fungerande läge.
Vanlig användning:
reset
Om terminalen är så trasig att Enter inte fungerar:
Ctrl-J reset Ctrl-J
tset initierar terminaltyp och kan skapa skalkommandon för att sätta miljövariabeln TERM:
eval `tset -s`
KOLOFON
Denna manualsida beskriver ncurses version 5.7, patch 20090207, enligt den uppladdade källan.
Den uppladdade HTML-sidan kommer från linux.die.net och beskriver manualsidan:
reset(1): terminal initialization