table of contents
tset(1) | Comenzi utilizator | tset(1) |
NUME¶
tset, reset - inițializează sau reinițializează starea terminalului
SINOPSIS¶
tset [-IQVcqrsw] [-] [-e
caracter] [-i caracter] [-k caracter]
[-m valoare-alocare] [tip-terminal]
reset [-IQVcqrsw] [-] [-e caracter]
[-i caracter] [-k caracter] [-m
valoare-alocare] [tip-terminal]
DESCRIERE¶
tset — inițializare¶
Acest program inițializează terminalele.
Mai întâi, tset recuperează valorile curente ale modului terminalului dumneavoastră. Pentru aceasta, testează succesiv
- ieșirea de eroare standard,
- ieșirea standard,
- intrarea standard și
- în final „/dev/tty”
pentru a obține parametrii terminalului. După ce a obținut aceste valori, tset memorează ce descriptor de fișier trebuie să utilizeze atunci când actualizează parametrii.
În continuare, tset determină tipul de terminal pe care îl utilizați. Această determinare se face după cum urmează, folosind primul tip de terminal găsit.
1. Argumentul terminal specificat în linia de comandă.
2. Valoarea variabilei de mediu TERM.
3. Numai pentru sistemele BSD: tipul de terminal asociat cu dispozitivul de ieșire de eroare standard din fișierul /etc/ttys; (pe sistemele UNIX de tip System-V și pe sistemele care utilizează această convenție, getty(8) face această treabă prin definirea lui TERM în funcție de tipul care i-a fost transmis prin /etc/inittab).
4. Tipul de terminal implicit, „unknown”, nu este potrivit pentru aplicațiile curses.
Dacă tipul de terminal nu a fost specificat în linia de comandă, se aplică atunci alocările opțiunii -m; a se vedea subsecțiunea „Alocarea tipului de terminal”. Apoi, dacă tipul de terminal începe cu un semn de întrebare „?”, utilizatorului i se cere confirmarea tipului de terminal. Un răspuns gol confirmă tipul sau se poate introduce un alt tip pentru a specifica un nou tip. Odată ce tipul de terminal a fost determinat, se recuperează descrierea terminalului respectiv. În cazul în care nu se găsește nicio descriere a terminalului pentru tipul respectiv, utilizatorului i se solicită un alt tip de terminal.
Odată ce descrierea terminalului este recuperată,
- •
- dacă opțiunea „-w” este activată, tset poate actualiza dimensiunea ferestrei terminalului.
- Dacă dimensiunea ferestrei nu poate fi obținută de la sistemul de operare, dar descrierea terminalului (sau mediul, de exemplu, variabilele LINES și COLUMNS specifică acest lucru), utilizează această opțiune pentru a defini noțiunea de dimensiune a ferestrei pe care o are sistemul de operare.
- dacă opțiunea „-c” este activată, sunt definite caracterele backspace, de întrerupere și de închidere a liniei (line kill), pe lângă multe altele
- cu excepția cazului în care este activată opțiunea „-I”, șirurile de inițializare a terminalului și tabulatorului sunt trimise la ieșirea de eroare standard, iar tset așteaptă o secundă (în cazul în care a fost emisă o reinițializare hardware).
- la urmă, dacă caracterele de ștergere, întrerupere și închidere a liniei (line kill) s-au modificat sau nu sunt definite la valorile lor implicite, valorile acestora sunt afișate la ieșirea de eroare standard.
reset — reinițializare¶
Atunci când este invocat ca reset, tset stabilește modurile terminalului la valorile „sănătoase”:
- stabilește modurile de pregătire și de ecou,
- dezactivează modurile cbreak și raw,
- activează conversia liniilor noi și
- restabilește toate caracterele speciale nedefinite la valorile lor implicite
înainte de a face inițializarea terminalului descrisă mai sus. De asemenea, în loc să utilizeze șirurile inițializare ale terminalului, se utilizează șirurile de restabilire (reinițializare) ale terminalului.
Comanda reset este utilă după ce un program moare lăsând un terminal într-o stare anormală:
- este posibil să trebuiască să tastați
<LF>reset<LF>(caracterul se salt de linie, „ line-feed” este în mod normal «control-J») pentru a face terminalul să funcționeze, deoarece este posibil ca funcția retur de cărucior să nu mai funcționeze în starea anormală.
- De asemenea, de multe ori, terminalul nu va transmite comanda.
Configurarea mediului¶
Adesea este de dorit să se introducă în mediul shell-ului tipul de terminal și informații despre capacitățile terminalului. Acest lucru se face cu ajutorul opțiunii -s.
Atunci când este specificată opțiunea -s, comenzile de introducere a informațiilor în mediul shell-ului sunt scrise la ieșirea standard. Dacă variabila de mediu SHELL se termină în „csh”, comenzile sunt pentru csh(1), în caz contrar, sunt pentru sh(1). Comenzile csh setează și dezactivează variabila de shell noglob, lăsând-o neschimbată. Următoarea linie din fișierele .login sau .profile va inițializa corect mediul:
eval `tset -s opțiuni ... `
Alocarea tipului de terminal¶
Atunci când terminalul nu este conectat la sistem (sau când informațiile curente ale sistemului sunt incorecte), tipul de terminal derivat din fișierul /etc/ttys sau din variabila de mediu TERM este adesea ceva generic, cum ar fi network, dialup sau unknown. Atunci când tset este utilizat într-un script de pornire, este adesea de dorit să se furnizeze informații despre tipul de terminal utilizat pe astfel de porturi.
Opțiunile -m fac corespondența între un set de condiții și un tip de terminal, adică îi spun lui tset „Dacă mă aflu în acest port la o anumită viteză, ghicește că mă aflu pe acel tip de terminal”.
Argumentul opțiunii -m constă dintr-un tip de port opțional, un operator opțional, o specificație opțională a vitezei de transmisie, un caracter opțional de două puncte „:” și un tip de terminal. Tipul de port este un șir de caractere (delimitat fie de operator, fie de caracterul două puncte). Operatorul poate fi orice combinație între „>”, „<”, „@”, și „! ”'; „>” înseamnă mai mare decât, „<” înseamnă mai mic decât, „@” înseamnă egal cu și „!” inversează sensul testului. Viteza de transmisie este specificată ca un număr și este comparată cu viteza ieșirii de eroare standard (care ar trebui să fie terminalul de control). Tipul terminalului este un șir de caractere.
Dacă tipul de terminal nu este specificat în linia de comandă, se aplică alocările -m la tipul de terminal. Dacă tipul de port și viteza de transmisie se potrivesc cu alocarea, tipul de terminal specificat în alocare înlocuiește tipul curent. Dacă sunt specificate mai multe alocări, se utilizează prima alocare aplicabilă.
De exemplu, luați în considerare următoarea alocare: dialup>9600:vt100. Tipul de port este dialup , operatorul este >, specificația vitezei de transmisie este 9600, iar tipul de terminal este vt100. Rezultatul acestei alocări este de a specifica faptul că, dacă tipul de terminal este dialup, iar rata de baud este mai mare de 9600 baud, se va utiliza un tip de terminal vt100.
Dacă nu este specificată nicio rată de transmisie, tipul de terminal se va potrivi cu orice rată de transmisie. Dacă nu este specificat niciun tip de port, tipul de terminal se va potrivi cu orice tip de port. De exemplu, -m dialup:vt100 -m :?xterm va face ca orice port dialup, indiferent de viteza de transmisie, să corespundă tipului de terminal vt100, iar orice tip de port care nu este dialup să corespundă tipului de terminal ?xterm. Rețineți că, din cauza semnului de întrebare din față, utilizatorul va fi întrebat pe un port implicit dacă utilizează de fapt un terminal xterm.
Nu sunt permise caractere de spații în alb în argumentul opțiunii -m. De asemenea, pentru a evita problemele cu metacaracterele, se sugerează ca întregul argument al opțiunii -m să fie plasat între ghilimele simple și ca utilizatorii csh să introducă un caracter de bară oblică inversă „\” înainte de orice semn de exclamare „!”.
OPȚIUNI¶
Opțiunile sunt următoarele:
- -c
- Stabilește caracterele și modurile de control.
- -e caracter
- Stabilește caracterul de ștergere la caracter.
- -I
- Nu trimite șirurile de inițializare a terminalului sau a tabulatorului către terminal.
- -i caracter
- Stabilește caracterul de întrerupere la caracter.
- -k caracter
- Stabilește caracterul de închidere a liniei (line kill) la caracter.
- -m valoare-alocare
- Specifică o alocare de la un tip de port la un terminal; a se vedea subsecțiunea „Alocarea tipului de terminal”.
- -Q
- Nu afișează nicio valoare pentru caracterele de ștergere, întrerupere și închidere a liniei (line kill). În mod normal, tset afișează valorile pentru caracterele de control care diferă de valorile implicite ale sistemului.
- -q
- Tipul terminalului este afișat la ieșirea standard, iar terminalul nu este inițializat în niciun fel. Opțiunea „-” este echivalentă, dar arhaică.
- -r
- Afișează tipul terminalului la ieșirea de eroare standard.
- -s
- Afișează secvența de comenzi de shell pentru a inițializa variabila de mediu TERM la ieșirea standard; a se vedea subsecțiunea „Configurarea mediului”.
- -V
- raportează versiunea de ncurses care a fost utilizată în acest program și iese.
- -w
- Redimensionează fereastra pentru a se potrivi cu dimensiunea dedusă prin setupterm(3NCURSES). În mod normal, acest lucru nu are niciun efect, cu excepția cazului în care setupterm nu este capabil să detecteze dimensiunea ferestrei.
Argumentele pentru opțiunile -e, -i și -k pot fi introduse fie sub formă de caractere reale, fie folosind notația „hat”, adică «control-h» poate fi specificat ca „^H” sau „^h”.
Dacă nu se indică nici -c, nici -w, se presupun ambele opțiuni.
MEDIU¶
Comanda tset utilizează aceste variabile de mediu:
- SHELL
- îi indică lui tset dacă trebuie să inițializeze TERM folosind sintaxa sh(1) sau csh(1).
- TERM
- indică tipul de terminal. Fiecare tip de terminal este distinct, deși multe sunt similare.
- TERMCAP
- poate indica locația unei baze de date termcap. Dacă nu este o rută absolută, de exemplu, nu începe cu un caracter „/”, tset elimină variabila din mediu înainte de a căuta descrierea terminalului.
FIȘIERE¶
- /etc/ttys
- numele portului de sistem în baza de date de alocare a tipului de terminal (numai pentru versiunile BSD).
- /usr/share/terminfo
- directorul bazei de date de descriere a terminalului compilat
PORTABILITATE¶
Nici IEEE Std 1003.1/The Open Group Base Specifications Issue 7 (POSIX.1-2008) și nici X/Open Curses Issue 7 nu documentează tset sau reset.
Instrumentul AT&T tput (AIX, HP-UX, Solaris) a încorporat manipularea în modul terminal, precum și caracteristicile bazate pe termcap, cum ar fi reinițializarea tabulatoarelor din tset în BSD (4.1c), probabil cu intenția de a face tset depășit. Cu toate acestea, fiecare dintre aceste sisteme oferă încă tset. De fapt, instrumentul reset utilizat în mod obișnuit este întotdeauna un alias pentru tset.
Instrumentul tset oferă compatibilitate cu mediile BSD; în majoritatea Unix-urilor moderne, /etc/inittab și getty(8) pot defini TERM în mod corespunzător pentru fiecare linie telefonică, eliminând ceea ce era cea mai importantă utilizare a lui tset. Această implementare se comportă ca și tset de pe 4.4BSD, cu câteva excepții pe care le vom analiza acum.
Câteva opțiuni sunt diferite, deoarece variabila TERMCAP nu mai este acceptată sub terminfo bazat pe ncurses:
- Opțiunea -S din BSD tset nu mai funcționează; imprimă un mesaj de eroare la ieșirea de eroare standard și moare.
- Opțiunea -s definește numai TERM, nu și TERMCAP.
A existat o caracteristică nedocumentată în 4.4BSD care prevedea că invocarea lui tset prin intermediul unei legături numite „TSET” (sau prin orice alt nume care începe cu o literă majusculă) determina terminalul să folosească numai majuscule. Această caracteristică a fost omisă.
Opțiunile -A, -E, -h, -u și -v au fost eliminate din instrumentul tset în 4.4BSD. Niciuna dintre ele nu a fost documentată în 4.3BSD și toate au o utilitate limitată, în cel mai bun caz. Opțiunile -a, -d și -p, în mod similar, nu sunt documentate sau utile, dar au fost păstrate deoarece se pare că sunt utilizate pe scară largă. Se recomandă cu tărie ca orice utilizare a acestor trei opțiuni să fie schimbată pentru a utiliza în schimb opțiunea -m. Prin urmare, opțiunile -a, -d și -p sunt omise din rezumatul de utilizare de mai sus.
Sistemele foarte vechi, de exemplu, 3BSD, foloseau un alt controlor de terminal care a fost înlocuit în 4BSD la începutul anilor 1980. Pentru a se adapta la aceste sisteme mai vechi, 4BSD tset a prevăzut o opțiune -n pentru a specifica faptul că trebuie utilizat noul controlor de terminal. Această implementare nu oferă această opțiune.
Este permisă în continuare specificarea opțiunilor -e, -i și -k fără argumente, deși se recomandă cu tărie ca o astfel de utilizare să fie fixată pentru a specifica explicit caracterul.
Începând cu 4.4BSD, executarea tset ca reset nu mai implică opțiunea -Q. De asemenea, interacțiunea dintre opțiunea „-” și argumentul terminal din unele implementări istorice ale tset a fost eliminată.
Opțiunile -c și -w nu se regăsesc în implementările anterioare. Cu toate acestea, în 4.4BSD a fost furnizată o altă funcție de schimbare a dimensiunii ferestrei.
- În 4.4BSD, tset utilizează dimensiunea ferestrei din descrierea termcap pentru a configura dimensiunea ferestrei în cazul în care tset nu poate obține dimensiunea ferestrei de la sistemul de operare.
- În ncurses, tset obține dimensiunea ferestrei folosind setupterm(3NCURSES), care poate proveni de la sistemul de operare, de la variabilele de mediu LINES și COLUMNS sau de la descrierea terminalului.
Obținerea dimensiunii ferestrei din descrierea terminalului este comună ambelor implementări, dar este considerată depășită. Singura sa utilizare practică este pentru terminalele hardware. În general, o dimensiune a ferestrei nu ar fi nefixată decât în cazul în care ar exista o problemă în obținerea valorii de la sistemul de operare (iar setupterm ar eșua în continuare). Din acest motiv, variabilele de mediu LINES și COLUMNS pot fi utile pentru a rezolva problemele legate de dimensiunea ferestrei. Acestea au dezavantajul că, dacă fereastra este redimensionată, aceste variabile trebuie recalculate și realocate. Programul resize(1) distribuit împreună cu xterm(1) vă ajută în această activitate.
ISTORIC¶
O comandă reset scrisă de Kurt Shoens a apărut în 1BSD (martie 1978). Aceasta a stabilit caracterele erase (ștergere) și kill (omorâre) la ^H (backspace) și, respectiv, @. Mark Horton a îmbunătățit această reset în 3BSD (octombrie 1979), adăugând caracterele intr, quit, start/stop și eof, precum și modificând programul pentru a evita modificarea oricăror configurări ale utilizatorului. Acea versiune de reset nu folosea termcap.
Eric Allman a scris o comandă distinctă tset pentru 1BSD, folosind un precursor al termcap numit ttycap. Comentariile lui Allman din codul sursă indică faptul că a început să lucreze în octombrie 1977, continuând dezvoltarea în următorii câțiva ani. La sfârșitul anului 1979, a migrat la termcap și a gestionat variabila TERMCAP. Comentariile ulterioare indică faptul că tset a fost modificat în septembrie 1980 pentru a utiliza logica copiată din programul 3BSD „reset” atunci când a fost invocat ca reset. Această versiune a apărut în 4.1cBSD, la sfârșitul anului 1982. Alți dezvoltatori, precum Keith Bostic și Jim Bloom, au continuat să modifice tset până la lansarea 4.4BSD în 1993.
Implementarea ncurses a fost ușor adaptată din sursele 4.4BSD pentru a utiliza API-ul terminfo de Eric S. Raymond <esr@snark.thyrsus.com>.
CONSULTAȚI ȘI¶
csh(1), sh(1), stty(1), terminfo(3NCURSES), tty(4), terminfo(5), ttys(4), environ(7)
TRADUCERE¶
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
27 aprilie 2024 | ncurses 6.5 |