tset(1) Comenzi utilizator tset(1) NUME tset, reset - iniializeaza sau reiniializeaza 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 -- iniializare Acest program iniializeaza terminalele. Mai intai, tset recupereaza valorile curente ale modului terminalului dumneavoastra. Pentru aceasta, testeaza succesiv o ieirea de eroare standard, o ieirea standard, o intrarea standard i o in final ,,/dev/tty" pentru a obine parametrii terminalului. Dupa ce a obinut aceste valori, tset memoreaza ce descriptor de fiier trebuie sa utilizeze atunci cand actualizeaza parametrii. In continuare, tset determina tipul de terminal pe care il utilizai. Aceasta determinare se face dupa cum urmeaza, folosind primul tip de terminal gasit. 1. Argumentul terminal specificat in linia de comanda. 2. Valoarea variabilei de mediu TERM. 3. Numai pentru sistemele BSD: tipul de terminal asociat cu dispozitivul de ieire de eroare standard din fiierul /etc/ttys; (pe sistemele UNIX de tip System-V i pe sistemele care utilizeaza aceasta convenie, getty(8) face aceasta treaba prin definirea lui TERM in funcie de tipul care i-a fost transmis prin /etc/inittab). 4. Tipul de terminal implicit, ,,unknown", nu este potrivit pentru aplicaiile curses. Daca tipul de terminal nu a fost specificat in linia de comanda, se aplica atunci alocarile opiunii -m; a se vedea subseciunea ,,Alocarea tipului de terminal". Apoi, daca tipul de terminal incepe cu un semn de intrebare ,,?", utilizatorului i se cere confirmarea tipului de terminal. Un raspuns gol confirma tipul sau se poate introduce un alt tip pentru a specifica un nou tip. Odata ce tipul de terminal a fost determinat, se recupereaza descrierea terminalului respectiv. In cazul in care nu se gasete nicio descriere a terminalului pentru tipul respectiv, utilizatorului i se solicita un alt tip de terminal. Odata ce descrierea terminalului este recuperata, o daca opiunea ,,-w" este activata, tset poate actualiza dimensiunea ferestrei terminalului. Daca dimensiunea ferestrei nu poate fi obinuta de la sistemul de operare, dar descrierea terminalului (sau mediul, de exemplu, variabilele LINES i COLUMNS specifica acest lucru), utilizeaza aceasta opiune pentru a defini noiunea de dimensiune a ferestrei pe care o are sistemul de operare. o daca opiunea ,,-c" este activata, sunt definite caracterele backspace, de intrerupere i de inchidere a liniei (line kill), pe langa multe altele o cu excepia cazului in care este activata opiunea ,,-I", irurile de iniializare a terminalului i tabulatorului sunt trimise la ieirea de eroare standard, iar tset ateapta o secunda (in cazul in care a fost emisa o reiniializare hardware). o la urma, daca caracterele de tergere, intrerupere i inchidere a liniei (line kill) s-au modificat sau nu sunt definite la valorile lor implicite, valorile acestora sunt afiate la ieirea de eroare standard. reset -- reiniializare Atunci cand este invocat ca reset, tset stabilete modurile terminalului la valorile ,,sanatoase": o stabilete modurile de pregatire i de ecou, o dezactiveaza modurile cbreak i raw, o activeaza conversia liniilor noi i o restabilete toate caracterele speciale nedefinite la valorile lor implicite inainte de a face iniializarea terminalului descrisa mai sus. De asemenea, in loc sa utilizeze irurile iniializare ale terminalului, se utilizeaza irurile de restabilire (reiniializare) ale terminalului. Comanda reset este utila dupa ce un program moare lasand un terminal intr-o stare anormala: o este posibil sa trebuiasca sa tastai reset (caracterul se salt de linie, ,, line-feed" este in mod normal <>) pentru a face terminalul sa funcioneze, deoarece este posibil ca funcia retur de carucior sa nu mai funcioneze in starea anormala. o De asemenea, de multe ori, terminalul nu va transmite comanda. Configurarea mediului Adesea este de dorit sa se introduca in mediul shell-ului tipul de terminal i informaii despre capacitaile terminalului. Acest lucru se face cu ajutorul opiunii -s. Atunci cand este specificata opiunea -s, comenzile de introducere a informaiilor in mediul shell-ului sunt scrise la ieirea standard. Daca variabila de mediu SHELL se termina in ,,csh", comenzile sunt pentru csh(1), in caz contrar, sunt pentru sh(1). Comenzile csh seteaza i dezactiveaza variabila de shell noglob, lasand-o neschimbata. Urmatoarea linie din fiierele .login sau .profile va iniializa corect mediul: eval `tset -s opiuni ... ` Alocarea tipului de terminal Atunci cand terminalul nu este conectat la sistem (sau cand informaiile curente ale sistemului sunt incorecte), tipul de terminal derivat din fiierul /etc/ttys sau din variabila de mediu TERM este adesea ceva generic, cum ar fi network, dialup sau unknown. Atunci cand tset este utilizat intr-un script de pornire, este adesea de dorit sa se furnizeze informaii despre tipul de terminal utilizat pe astfel de porturi. Opiunile -m fac corespondena intre un set de condiii i un tip de terminal, adica ii spun lui tset ,,Daca ma aflu in acest port la o anumita viteza, ghicete ca ma aflu pe acel tip de terminal". Argumentul opiunii -m consta dintr-un tip de port opional, un operator opional, o specificaie opionala a vitezei de transmisie, un caracter opional de doua puncte ,,:" i un tip de terminal. Tipul de port este un ir de caractere (delimitat fie de operator, fie de caracterul doua puncte). Operatorul poate fi orice combinaie intre ,,>", ,,<", ,,@", i ,,! "'; ,,>" inseamna mai mare decat, ,,<" inseamna mai mic decat, ,,@" inseamna egal cu i ,,!" inverseaza sensul testului. Viteza de transmisie este specificata ca un numar i este comparata cu viteza ieirii de eroare standard (care ar trebui sa fie terminalul de control). Tipul terminalului este un ir de caractere. Daca tipul de terminal nu este specificat in linia de comanda, se aplica alocarile -m la tipul de terminal. Daca tipul de port i viteza de transmisie se potrivesc cu alocarea, tipul de terminal specificat in alocare inlocuiete tipul curent. Daca sunt specificate mai multe alocari, se utilizeaza prima alocare aplicabila. De exemplu, luai in considerare urmatoarea alocare: dialup>9600:vt100. Tipul de port este dialup , operatorul este >, specificaia vitezei de transmisie este 9600, iar tipul de terminal este vt100. Rezultatul acestei alocari este de a specifica faptul ca, daca tipul de terminal este dialup, iar rata de baud este mai mare de 9600 baud, se va utiliza un tip de terminal vt100. Daca nu este specificata nicio rata de transmisie, tipul de terminal se va potrivi cu orice rata de transmisie. Daca 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, sa corespunda tipului de terminal vt100, iar orice tip de port care nu este dialup sa corespunda tipului de terminal ?xterm. Reinei ca, din cauza semnului de intrebare din faa, utilizatorul va fi intrebat pe un port implicit daca utilizeaza de fapt un terminal xterm. Nu sunt permise caractere de spaii in alb in argumentul opiunii -m. De asemenea, pentru a evita problemele cu metacaracterele, se sugereaza ca intregul argument al opiunii -m sa fie plasat intre ghilimele simple i ca utilizatorii csh sa introduca un caracter de bara oblica inversa ,,\" inainte de orice semn de exclamare ,,!". OPIUNI Opiunile sunt urmatoarele: -c Stabilete caracterele i modurile de control. -e caracter Stabilete caracterul de tergere la caracter. -I Nu trimite irurile de iniializare a terminalului sau a tabulatorului catre terminal. -i caracter Stabilete caracterul de intrerupere la caracter. -k caracter Stabilete caracterul de inchidere a liniei (line kill) la caracter. -m valoare-alocare Specifica o alocare de la un tip de port la un terminal; a se vedea subseciunea ,,Alocarea tipului de terminal". -Q Nu afieaza nicio valoare pentru caracterele de tergere, intrerupere i inchidere a liniei (line kill). In mod normal, tset afieaza valorile pentru caracterele de control care difera de valorile implicite ale sistemului. -q Tipul terminalului este afiat la ieirea standard, iar terminalul nu este iniializat in niciun fel. Opiunea ,,-" este echivalenta, dar arhaica. -r Afieaza tipul terminalului la ieirea de eroare standard. -s Afieaza secvena de comenzi de shell pentru a iniializa variabila de mediu TERM la ieirea standard; a se vedea subseciunea ,,Configurarea mediului". -V raporteaza versiunea de ncurses care a fost utilizata in acest program i iese. -w Redimensioneaza fereastra pentru a corespunde dimensiunii deduse prin setupterm(3X). In mod normal, acest lucru nu are niciun efect, cu excepia cazului in care setupterm nu este capabil sa detecteze dimensiunea ferestrei. Argumentele pentru opiunile -e, -i i -k pot fi introduse fie sub forma de caractere reale, fie folosind notaia ,,hat", adica <> poate fi specificat ca ,,^H" sau ,,^h". Daca nu se indica nici -c, nici -w, se presupun ambele opiuni. MEDIU Comanda tset utilizeaza aceste variabile de mediu: SHELL ii indica lui tset daca trebuie sa iniializeze TERM folosind sintaxa sh(1) sau csh(1). TERM indica tipul de terminal. Fiecare tip de terminal este distinct, dei multe sunt similare. TERMCAP poate indica locaia unei baze de date termcap. Daca nu este o ruta absoluta, de exemplu, nu incepe cu un caracter ,,/", tset elimina variabila din mediu inainte de a cauta descrierea terminalului. FIIERE /etc/ttys numele portului de sistem in 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 documenteaza tset sau reset. Instrumentul AT&T tput (AIX, HP-UX, Solaris) a incorporat manipularea in modul terminal, precum i caracteristicile bazate pe termcap, cum ar fi reiniializarea tabulatoarelor din tset in BSD (4.1c), probabil cu intenia de a face tset depait. Cu toate acestea, fiecare dintre aceste sisteme ofera inca tset. De fapt, instrumentul reset utilizat in mod obinuit este intotdeauna un alias pentru tset. Instrumentul tset ofera compatibilitate cu mediile BSD; in majoritatea Unix-urilor moderne, /etc/inittab i getty(8) pot defini TERM in mod corespunzator pentru fiecare linie telefonica, eliminand ceea ce era cea mai importanta utilizare a lui tset. Aceasta implementare se comporta ca i tset de pe 4.4BSD, cu cateva excepii pe care le vom analiza acum. Cateva opiuni sunt diferite, deoarece variabila TERMCAP nu mai este acceptata sub terminfo bazat pe ncurses: o Opiunea -S din BSD tset nu mai funcioneaza; imprima un mesaj de eroare la ieirea de eroare standard i moare. o Opiunea -s definete numai TERM, nu i TERMCAP. A existat o caracteristica nedocumentata in 4.4BSD care prevedea ca invocarea lui tset prin intermediul unei legaturi numite ,,TSET" (sau prin orice alt nume care incepe cu o litera majuscula) determina terminalul sa foloseasca numai majuscule. Aceasta caracteristica a fost omisa. Opiunile -A, -E, -h, -u i -v au fost eliminate din instrumentul tset in 4.4BSD. Niciuna dintre ele nu a fost documentata in 4.3BSD i toate au o utilitate limitata, in cel mai bun caz. Opiunile -a, -d i -p, in mod similar, nu sunt documentate sau utile, dar au fost pastrate deoarece se pare ca sunt utilizate pe scara larga. Se recomanda cu tarie ca orice utilizare a acestor trei opiuni sa fie schimbata pentru a utiliza in schimb opiunea -m. Prin urmare, opiunile -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 inlocuit in 4BSD la inceputul anilor 1980. Pentru a se adapta la aceste sisteme mai vechi, 4BSD tset a prevazut o opiune -n pentru a specifica faptul ca trebuie utilizat noul controlor de terminal. Aceasta implementare nu ofera aceasta opiune. Este permisa in continuare specificarea opiunilor -e, -i i -k fara argumente, dei se recomanda cu tarie ca o astfel de utilizare sa fie fixata pentru a specifica explicit caracterul. Incepand cu 4.4BSD, executarea tset ca reset nu mai implica opiunea -Q. De asemenea, interaciunea dintre opiunea ,,-" i argumentul terminal din unele implementari istorice ale tset a fost eliminata. Opiunile -c i -w nu se regasesc in implementarile anterioare. Cu toate acestea, in 4.4BSD a fost furnizata o alta funcie de schimbare a dimensiunii ferestrei. o In 4.4BSD, tset utilizeaza dimensiunea ferestrei din descrierea termcap pentru a configura dimensiunea ferestrei in cazul in care tset nu poate obine dimensiunea ferestrei de la sistemul de operare. o In ncurses, tset obine dimensiunea ferestrei folosind setupterm(3X), care poate proveni de la sistemul de operare, de la variabilele de mediu LINES i COLUMNS sau de la descrierea terminalului. Obinerea dimensiunii ferestrei din descrierea terminalului este comuna ambelor implementari, dar este considerata depaita. Singura sa utilizare practica este pentru terminalele hardware. In general, o dimensiune a ferestrei nu ar fi nefixata decat in cazul in care ar exista o problema in obinerea valorii de la sistemul de operare (iar setupterm ar eua in continuare). Din acest motiv, variabilele de mediu LINES i COLUMNS pot fi utile pentru a rezolva problemele legate de dimensiunea ferestrei. Acestea au dezavantajul ca, daca fereastra este redimensionata, aceste variabile trebuie recalculate i realocate. Programul resize(1) distribuit impreuna cu xterm(1) va ajuta in aceasta activitate. ISTORIC O comanda reset scrisa de Kurt Shoens a aparut in 1BSD (martie 1978). Aceasta a stabilit caracterele erase (tergere) i kill (omorare) la ^H (backspace) i, respectiv, @. Mark Horton a imbunatait aceasta reset in 3BSD (octombrie 1979), adaugand caracterele intr, quit, start/stop i eof, precum i modificand programul pentru a evita modificarea oricaror configurari ale utilizatorului. Acea versiune de reset nu folosea termcap. Eric Allman a scris o comanda distincta tset pentru 1BSD, folosind un precursor al termcap numit ttycap. Comentariile lui Allman din codul sursa indica faptul ca a inceput sa lucreze in octombrie 1977, continuand dezvoltarea in urmatorii caiva ani. La sfaritul anului 1979, a migrat la termcap i a gestionat variabila TERMCAP. Comentariile ulterioare indica faptul ca tset a fost modificat in septembrie 1980 pentru a utiliza logica copiata din programul 3BSD ,,reset" atunci cand a fost invocat ca reset. Aceasta versiune a aparut in 4.1cBSD, la sfaritul anului 1982. Ali dezvoltatori, precum Keith Bostic i Jim Bloom, au continuat sa modifice tset pana la lansarea 4.4BSD in 1993. Implementarea ncurses a fost uor adaptata din sursele 4.4BSD pentru a utiliza API-ul terminfo de Eric S. Raymond . CONSULTAI I csh(1), sh(1), stty(1), curs_terminfo(3X), tty(4), terminfo(5), ttys(5), environ(7) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . ncurses 6.5 27 aprilie 2024 tset(1)