tput - inițializează un terminal,
exercită capacitățile acestuia sau interoghează
baza de date terminfo
tput [-v] [-T tip-terminal]
{cod-capacitate [parametru ...]} ...
tput [-v] [-T tip-terminal]
[-x] clear
tput [-v] [-T tip-terminal]
init
tput [-v] [-T tip-terminal]
reset
tput [-v] [-T tip-terminal]
longname
tput [-v] -S
tput [-v] -V
tput utilizează biblioteca și baza de date
terminfo pentru a pune la dispoziția shell-ului
capacitățile și informațiile specifice
terminalului, pentru a inițializa sau reinițializa terminalul,
sau pentru a raporta o descriere a tipului de terminal curent (sau
specificat). Capacitățile terminalului sunt accesate prin
cod-capacitate.
terminfo(5) abordează pe larg
capacitățile terminalului și prezintă o
listă completă de coduri-capacități.
Când se preiau valorile capacității,
rezultatul depinde de tipul capacității.
- Boolean
- tput își stabilește starea de ieșire la
0 dacă terminalul posedă cod-capacitate
și la 1 dacă nu.
- numeric
- tput scrie valoarea zecimală a cod-capacitate
în fluxul de ieșire standard, dacă este definit
(-1 dacă nu este definit), urmată de o linie
nouă.
- șir
- tput scrie valoarea lui cod-capacitate în fluxul de
ieșire standard, dacă este definit, fără o
linie nouă la sfârșit.
Înainte de a utiliza o valoare returnată la
ieșirea standard, aplicația trebuie să testeze starea
de ieșire a tput pentru a se asigura că este 0; a se
vedea secțiunea «STARE DE IEȘIRE» de mai
jos.
În general, un operand este un cod-capacitate, un
cod de capacitate din baza de date a terminalului, sau un parametru al
acestuia. tput recunoaște în mod special alte trei:
init, reset și longname. Cu toate că
acestea seamănă cu codurile de capacitate, ele
beneficiază de fapt de un tratament special; le numim
„pseudo-capacități”.
- cod-capacitate
- indică o capacitate din baza de date a terminalului.
- Dacă cod-capacitate este de tip șir de caractere
și are parametri, tput interpretează argumentele care
urmează lui cod-capacitate ca parametri, până
la cantitatea (fixă) cerută de capacitate.
- Majoritatea parametrilor sunt numerici. Doar câteva
capacități ale terminalului necesită parametri de tip
șir de caractere; tput utilizează un tabel pentru a
decide care să fie trecuți ca șiruri de caractere.
În mod normal, tput utilizează tparm(3NCURSES)
pentru a efectua substituția. Dacă nu sunt furnizați
parametri pentru capacitate, tput scrie șirul de caractere
fără a efectua substituția.
- init
- inițializează terminalul. Dacă baza de date a
terminalului este prezentă și există o intrare pentru
tipul de terminal al utilizatorului, se întâmplă
următoarele.
- (1)
- tput preia parametrii de mod ai terminalului. Acesta
testează succesiv descriptorii de fișier
corespunzători
- fluxului de ieșire de eroare standard,
- fluxului de ieșire standard,
- fluxului de intrare standard și
- /dev/tty
- tput preia parametrii de mod ai terminalului. Acesta
testează succesiv descriptorii de fișier
corespunzători fluxului standard de eroare, fluxului standard de
ieșire, fluxului standard de intrare și X pentru a
obține parametrii terminalului. După ce i-a obținut,
tput memorează ce descriptor să utilizeze pentru
actualizările ulterioare.
- (2)
- Dacă dimensiunile terminalului nu pot fi obținute de la
sistemul de operare, dar intrarea din baza de date a mediului sau a
tipului de terminal le descrie, tput actualizează
noțiunea sistemului de operare despre acestea.
- (3)
- tput actualizează modurile terminalului.
- Orice întârzieri specificate în intrare (de exemplu,
atunci când este trimisă o linie nouă) sunt definite
în controlorul terminalului.
- Extinderea tabulatoarelor este activată sau dezactivată
conform specificațiilor din intrare,
- iar dacă tabulatoarele nu sunt extinse, sunt definite tabulatoare
standard (la fiecare 8 spații).
- (4)
- Dacă sunt prezente capacități de inițializare,
detaliate în subsecțiunea «File și
inițializare» din terminfo(5), tput le scrie
în fluxul de ieșire standard.
- (5)
- tput golește fluxul de ieșire standard.
- Dacă o intrare nu conține informațiile necesare
pentru o activitate de mai sus, activitatea respectivă este
ignorată în mod silențios.
- reset
- reinitializează terminalul. O reinițializare diferă
de inițializare în două moduri.
- (1)
- tput aduce modurile terminalului într-o stare
„corectă de funcționare”,
- activând modurile canonice pregătit „cooked”
și ecou „echo”,
- dezactivând modurile cbreak și raw,
- activând traducerea liniei noi și
- stabilind orice caractere speciale de intrare la valorile lor
implicite.
- (2)
- Dacă sunt definite capacități de
reinițializare pentru tipul de terminal, tput le scrie
în fluxul de ieșire. În caz contrar, tput
utilizează orice capacități de inițializare
definite. Capacitățile de reinițializare sunt
detaliate în subsecțiunea «File și
inițializare» din terminfo(5).
- longname
- O intrare terminfo începe cu unul sau mai multe nume prin
care o aplicație se poate referi la intrare, înainte de
lista capacităților terminalului. Numele sunt separate prin
caractere „|”. X/Open Curses numește ultimul nume
„long name - nume lung” și indică faptul
că acesta poate include spații albe.
- tic avertizează dacă ultimul nume nu include
spații albe, pentru a acomoda vechile intrări
terminfo care tratau numele lung ca o caracteristică
opțională. Numele lung este adesea denumit câmp de
descriere.
- Dacă baza de date a terminalului este prezentă și
există o intrare pentru tipul de terminal al utilizatorului,
tput raportează descrierea acestuia pe fluxul de
ieșire standard, fără o linie nouă la
sfârșit. Consultați terminfo(5).
Notă: Redirecționarea ieșirii
„tput init” sau „tput reset”
către un fișier va captura doar o parte din acțiunile
lor. Modificările modurilor terminalului nu sunt afectate de
redirecționarea descriptorului de fișier, deoarece modurile
terminalului sunt modificate prin ioctl(2).
Dacă tput este invocat prin intermediul unei
legături cu oricare dintre numele clear, init sau
reset, acesta funcționează ca și cum ar fi
executat cu operandul (pseudo-)capacității
corespunzătoare. De exemplu, executarea unei legături numite
reset care indică tput are același efect ca
și “tput reset”.
Această caracteristică a fost introdusă de
ncurses 5.2 în 2000. Este rar utilizată.
- clear
- este un program separat, care este deopotrivă mai mic și mai
frecvent executat.
- init
- are același nume ca un alt program utilizat pe scară
largă.
- reset
- este furnizat de instrumentul tset(1) (de asemenea, prin
intermediul unei legături denumite reset).
Pe lângă pseudo-capacități (precum
init), tput tratează în mod special
codurile-de-capacitate lines și cols: poate
apela setupterm(3NCURSES) pentru a obține dimensiunea
terminalului.
- În primul rând, tput încearcă să
obțină aceste capacități din baza de date a
terminalului. În general, acest lucru eșuează
în cazul emulatoarelor de terminale, care nu au o dimensiune
fixă a ferestrei și astfel omit
capacitățile.
- Apoi solicită sistemului de operare dimensiunea terminalului, ceea
ce în general funcționează, cu excepția
cazului în care conexiunea se face printr-o linie serială
care nu acceptă „NAWS”: negocieri privind dimensiunea
ferestrei.
- În cele din urmă, acesta inspectează variabilele de
mediu LINES și COLUMNS, care pot înlocui
dimensiunea terminalului.
Dacă este dată opțiunea -T,
tput ignoră variabilele de mediu prin apelarea
use_tioctl(TRUE), bazându-se pe sistemul de operare (sau,
în cele din urmă, pe baza de date a terminalului).
- -S
- recuperează mai mult de o capacitate per invocare a tput.
Capacitățile trebuie transmise către tput din
fluxul de intrare standard și nu din linia de comandă (a se
vedea secțiunea «EXEMPLE» de mai jos). Este permis un
singur cod-capacitate pe linie. Opțiunea -S
modifică semnificația stărilor de ieșire
0 și 1 (a se vedea secțiunea «STARE DE
IEȘIRE» de mai jos).
- Unele capacități utilizează parametri de tip
șir în loc de parametri numerici. tput
utilizează un tabel încorporat și prezența
parametrilor în intrarea sa pentru a decide cum să îi
interpreteze și dacă să utilizeze
tparm(3NCURSES).
- -T tip
- indică tipul terminalului. În mod normal,
această opțiune nu este necesară, deoarece o valoare
implicită este preluată de la variabila de mediu
TERM. Dacă sunt specificate, variabilele de mediu
LINES și COLUMNS sunt de asemenea ignorate.
- -v
- face ca tput să funcționeze în modul detaliat,
raportând avertismente.
- -V
- raportează versiunea de ncurses asociată cu
tput și iese cu o stare de succes.
- -x
- împiedică «tput clear» să
încerce să șteargă tamponul de derulare
înapoi.
În mod normal, stările de ieșire ale lui
tput ar trebui interpretate după cum urmează.
| Stare |
Semnificație când opțiunea „-S” nu
este specificată |
| 0 |
boolean sau șir capacitate prezent |
| 1 |
boolean sau capacitate numerică absentă |
| 2 |
eroare de utilizare sau niciun tip de terminal specificat |
| 3 |
tip de terminal nerecunoscut |
| 4 |
cod de capacitate nerecunoscut |
| >4 |
eroare de sistem (4 + errno) |
Atunci când se utilizează opțiunea -S,
unele stări își schimbă semnificația.
| Stare |
Semnificație când opțiunea „-S”
este specificată |
| 0 |
toți operanzii interpretați |
| 1 |
neutilizat |
| 4 |
unii operanzi nu sunt interpretați |
tput citește până la trei variabile de
mediu dacă opțiunea -T nu este specificată.
- COLUMNS
- specifică lățimea ecranului în caractere.
- LINES
- specifică înălțimea ecranului în
caractere.
- TERM
- indică tipul de terminal. Fiecare tip de terminal este distinct,
deși multe sunt similare.
- /usr/share/tabset
- baza de date de inițializare oprire a tabulatorului
- /etc/terminfo
- baza de date compilată pentru descrierea terminalelor
De-a lungul timpului, tput ncurses s-a
diferențiat de cel a System V în două
privințe importante, dintre care una este acum mai ales
istorică.
- •
- «tput cod-capacitate» scrie la ieșirea
standard, care nu trebuie să fie un dispozitiv terminal. Cu toate
acestea, operanzii care manipulează modurile terminal pot să
nu utilizeze ieșirea standard.
- Operanzii init și reset ai tput
System V utilizează logica din 4.1cBSD tset,
manipulând modurile terminalului. Acesta verifică
aceiași descriptori de fișiere (și /dev/tty)
pentru asocierea cu un dispozitiv terminal, așa cum face acum
ncurses și, dacă nu există niciunul, presupune
în final un terminal de 1200 baud. Atunci când
actualizează modurile terminalului, acesta ignoră
erorile.
- Până la ncurses 6.1 (a se vedea secțiunea
«ISTORIC» de mai jos), tput nu a modificat modurile
terminalelor. Acesta utilizează acum o schemă
similară cu System V, folosind funcții comune cu
tset (și în cele din urmă bazate pe
tset 4.4BSD). Dacă nu este capabil să deschidă
un terminal (de exemplu, atunci când este rulat de cron(1)),
tput iese cu o stare de eroare.
- •
- System V tput presupune că tipul unui operand
cod-capacitate este numeric dacă toate caracterele din
valoarea sa sunt numere zecimale; dacă nu sunt, tratează
cod-capacitate ca o capacitate de șir de caractere.
- Majoritatea implementărilor care oferă suport pentru
operanzi cod-capacitate utilizează funcția
tparm(3NCURSES) pentru a-și extinde parametrii.
Această funcție așteaptă un amestec de
parametri numerici și șiruri de caractere, necesitând
ca tput să știe ce tip să utilizeze.
- ncurses tput utilizează un tabel pentru a determina
tipurile de parametri pentru operanzii cod-capacitate standard
și o funcție internă pentru a analiza operanzii
cod-capacitate non-standard.
- Deși mai fiabil decât utilitarul System V,
această analiză introduce o problemă de
portabilitate. Un dezvoltator OpenBSD a adaptat funcția bibliotecii
interne din ncurses pentru a adapta tput bazat pe
termcap din NetBSD la terminfo, și a modificat-o
pentru a interpreta mai multe coduri-de-capacitate (și
parametri) din linia de comandă. Aplicațiile portabile nu
trebuie să se bazeze pe această caracteristică;
ncurses o oferă pentru a oferi suport aplicațiilor
scrise special pentru OpenBSD.
Această implementare, spre deosebire de altele,
acceptă atât termcap, cât și
terminfo cod-capacitate dacă este compilat suportul
termcap. Totuși, în acest caz, codurile predefinite
termcap și terminfo au două
ambiguități; ncurses presupune codul
terminfo.
- cod-capacitate dl înseamnă delete_line
pentru termcap, dar parm_delete_line pentru terminfo.
termcap utilizează codul DL pentru
parm_delete_line. terminfo utilizează codul
dl1 pentru delete_line.
- cod-ul-decapacitate ed înseamnă
exit_delete_mode pentru termcap, dar clr_eos pentru
terminfo. termcap utilizează codul cd pentru
clr_eos. terminfo utilizează codul rmdc pentru
exit_delete_mode.
Operandul \%longname, opțiunea -S și
caracteristicile de substituire a parametrilor utilizate în exemplul
cup de mai jos nu erau acceptate în AT&T/USL curses
înainte de SVr4 (1989). Ulterior, 4.3BSD-Reno (1990) a adăugat
suport pentru longname, iar în 1994, NetBSD a adăugat
suport pentru caracteristicile de substituire a parametrilor.
IEEE Std 1003.1/The Open Group Base Specifications Issue 7
(POSIX.1-2008) documentează numai operanzii clear, init
și reset. Din această selecție rezultă
câteva observații de interes.
- ncurses acceptă clear ca orice alt
cod-capacitate standard. Celelalte (init și
longname) nu corespund capacităților
terminalului.
- tput de pe sistemele bazate pe SVr4, cum ar fi Solaris, IRIX64
și HP-UX, precum și altele, cum ar fi AIX și Tru64,
acceptă de asemenea operanzi standard cod-capacitate.pentru
OpenBSD.
- Câteva platforme, cum ar fi FreeBSD, recunosc codurile
termcap mai degrabă decât codurile de capacitate
terminfo în comenzile lor tput respective. Din 2010,
tput de la NetBSD utilizează codurile terminfo.
Înainte de aceasta, acesta (ca și FreeBSD) recunoștea
codurile termcap.
- Începând cu 2021, FreeBSD utilizează tput
ncurses, configurat atât pentru terminfo (testat mai
întâi), cât și pentru termcap (ca
soluție de rezervă).
Deoarece (aparent) toate sistemele Unix certificate
acceptă întregul set de coduri de capacitate, motivul pentru
documentarea doar a câtorva poate să nu fie evident.
- X/Open Curses Issue 7 documentează diferit tput, cu
cod-capacitate și alte caracteristici utilizate în
această implementare.
- Adică, există două standarde pentru tput:
POSIX (un subset) și X/Open Curses (implementarea completă).
POSIX documentează un subset pentru a evita complicația
includerii X/Open Curses și a bazei de date a
capacităților terminalului.
- Deși este cu siguranță posibil să
scrieți un program tput fără a utiliza
curses, niciun sistem cu o implementare curses nu
oferă un utilitar tput care să nu accepte de asemenea
codurile-de-capacitate standard.
X/Open Curses Issue 7 (2009) este prima versiune care
documentează utilitățile. Cu toate acestea,
această parte a X/Open Curses nu respectă practicile existente
(și anume, comportamentul curses System V).
- Acesta atribuie starea de ieșire 4 la „invalid operand -
(operand nevalid(”, care poate avea același
înțeles ca „unknown capability - (capacitate
necunoscută)”. De exemplu, codul sursă pentru Solaris
xcurses utilizează termenul „invalid -
(nevalid)” în acest caz.
- Acesta atribuie starea de ieșire 255 unei variabile numerice care
nu este specificată în baza de date terminfo. Aceasta
este probabil o eroare de documentare, confundând
„-1”' scris la ieșirea standard pentru a indica o
capacitate numerică absentă sau anulată cu o stare de
ieșire (fără semn).
Diferitele implementări System V (AIX, HP-UX,
Solaris) utilizează aceleași stări de ieșire ca
ncurses.
NetBSD curses documentează stările de
ieșire care nu corespund nici ncurses, nici X/Open Curses.
Bill Joy a scris o comandă tput în timpul
dezvoltării 4BSD în octombrie 1980. Această versiune
inițială ștergea doar ecranul și nu era
livrată cu distribuțiile oficiale.
System V a dezvoltat o comandă tput
diferită.
- SVr2 (1984) a furnizat o versiune rudimentară tput care
verifica parametrul în raport cu fiecare capacitate
predefinită și returna valoarea corespunzătoare.
Această versiune a tput nu folosea tparm(3NCURSES)
pentru capacitățile parametrizate.
- SVr3 (1987) l-a înlocuit cu un program mai extins al cărui
suport pentru operanzii init și reset (mai mult de
jumătate din program) a încorporat funcția
reset din BSD tset scrisă de Eric Allman.
- SVr4 (1989) a adăugat inițializarea culorilor prin
utilizarea capacităților orig_colors (oc)
și orig_pair (op) în logica sa
init.
Keith Bostic a remodelat tput BSD pentru utilizarea
în 4.3BSD-Tahoe (1988), apoi l-a înlocuit în anul
următor cu o nouă implementare bazată pe tput
System V. Versiunea lui Bostic a acceptat în mod similar unii
parametri numiți pentru (pseudo-)capacitățile
terminfo: clear, init, longname și
reset. Cu toate acestea, deoarece a avut la dispoziție doar
termcap, a acceptat coduri termcap pentru alte
capacități. De asemenea, BSD tput al lui Bostic nu
modifica modurile terminalului așa cum făcuse tset BSD
anterior.
În același timp, Bostic a adăugat un script
shell numit „clear” care folosea tput pentru a
șterge ecranul. Ambele au apărut în 4.4BSD, devenind
implementarea BSD „modernă” a tput.
Originea programului tput ncurses se află
în afara System V și BSD, în pachetul
mytinfo al lui Ross Ridge, publicat pe comp.sources.unix
în decembrie 1992. Programul lui Ridge a făcut o utilizare mai
sofisticată a capacităților terminalului decât
programul BSD. Eric Raymond a folosit acest program tput (și
alte părți din mytinfo) în ncurses
în iunie 1995. Încorporând porțiunile
referitoare la capacitățile terminalului aproape
fără modificări, Raymond a adus
îmbunătățiri modului în care erau
gestionați parametrii liniei de comandă.
Înainte de ncurses 6.1 (2018),
utilitățile sale tset și tput erau
diferite.
- tset a fost mai eficient, reinițializând modurile
și caracterele speciale de intrare ale terminalului.
- Pe de altă parte, repertoriul tset de
capacități ale terminalului pentru reinițializarea
terminalului a fost mai limitat; a avut doar echivalenți ai
reset_1string (rs1), reset_2string (rs2)
și reset_file (rf), și nu caracteristicile de
oprire a tabulării și actualizare a marginilor ale
tput.
Programul reset este în mod tradițional un
alias pentru tset datorită capacității sale de a
reinițializa modurile și caracterele speciale de intrare ale
terminalului.
Începând cu ncurses 6.1, caracteristicile
«reset» ale celor două programe sunt (în mare
parte) aceleași. Rămân două diferențe
minore.
- Atunci când emite o reinițializare, programul tset
verifică dacă dispozitivul pare a fi un pseudoterminal
(așa cum ar putea fi utilizat de un program emulator de terminal)
și, în caz contrar, așteaptă o secundă
în cazul în care comunică cu un terminal
hardware.
- Cele două programe scriu șirurile de inițializare a
terminalului în fluxuri diferite; adică, ieșirea de
eroare standard pentru tset și ieșirea standard
pentru tput.
- tput init
- Inițializează terminalul în funcție de tipul
de terminal din variabila de mediu TERM. Dacă sistemul nu
inițializează în mod fiabil terminalul la
autentificare, această comandă poate fi inclusă
în $HOME/.profile după exportarea variabilei de mediu
TERM.
- tput -T5620
reset
- Reinițializează un terminal AT&T 5620, suprascriind
tipul de terminal din variabila de mediu TERM.
- tput cnorm
- Stabilește cursorul la vizibilitate normală.
- tput home
- Mută cursorul pe linia 0, coloana 0: colțul din
stânga sus al ecranului, cunoscut de obicei ca poziția
cursorului „home” (inițială).
- tput clear
- Șterge ecranul: scrie valoarea capacității
clear_screen în fluxul de ieșire standard.
- tput cols
- Raportează numărul de coloane utilizate de tipul de terminal
curent.
- tput -Tadm3a
cols
- Raportați numărul de coloane utilizate de un terminal
ADM-3A.
- strong=`tput smso`
normal=`tput rmso`
- Stabilește variabilele shell la valori de capacitate: strong
and normal, pentru început și sfârșit,
respectiv, modul de evidențiere pentru terminal. Acestea pot fi
utilizate pentru a prezenta un prompt.
printf "${strong}Nume-utilizator:${normal} "
- tput hc
- Indică, prin intermediul stării de ieșire,
dacă terminalul este un dispozitiv de tip „hard copy”
(care imprimă informația pe hârtie).
- tput cup 23
4
- Mută cursorul la linia 23, coloana 4.
- tput cup
- Raportează valoarea capacității cursor_address
(cup) (utilizată pentru deplasarea cursorului),
fără înlocuirea parametrilor.
- tput
longname
- Raportează descrierea din baza de date terminfo a tipului de
terminal specificat în variabila de mediu TERM.
- tput -S
- Procesarea capacităților multiple Opțiunea -S
poate fi utilizată în mod profitabil cu un shell pentru a
indica „here document” (aici document în
română, ce indică terminalului că
șirurile care urmează este un text, nu șiruri de
caractere speciale).
-
$ tput -S <<!
> clear
> cup 10 10
> bold
> !
- Aceasta șterge ecranul, mută cursorul în
poziția (10, 10) și activează modul
îngroșat (foarte luminos).
- tput clear cup 10 10
bold
- Efectuează aceleași acțiuni ca în exemplul
precedent «tput -S».
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.