Provided by:
manpages-pl_20060617-1_all 
NAZWA
tset - inicjalizacja terminala
SKŁADNIA
tset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapowanie] [terminal]
reset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapowanie] [terminal]
OPIS
Tset inicjalizuje terminale. Program najpierw określa rodzaj
terminala, z którego korzystasz. Robi to w następujący sposób, szukając
pierwszego pasującego typu terminala:
1. Poprzez argument terminal, podany w linii poleceń.
2. Poprzez wartość zmiennej środowiskowej TERM.
3. (Tylko systemy BSD.) Typ terminala, związany poprzez plik /etc/ttys
z urządzeniem stderr. (Pod Linuksem i UNIX-ami w rodzaju System V,
robotę tą wykonuje getty, ustawiając TERM zgodnie z typem, przekazanym
mu przez /etc/inittab.)
4. Poprzez wybranie domyślnego typu terminala, ``unknown''.
Jeśli rodzaj terminala nie był podany w linii poleceń, to załączane są
mapowania opcji -m (zobacz niżej opis). Potem, jeśli typ terminala
zaczyna się od pytajnika (``?''), użytkownik jest pytany o
potwierdzenie. Pusta odpowiedź potwierdza typ, a niepusta wprowadza
inny. Gdy terminal zostanie już określony, odczytywany jest opis
terminala z terminfo. Jeśli nie ma dla niego opisu w terminfo,
użytkownik jest proszony o podanie innego typu terminala.
Gdy opis terminfo zostanie już pobrany, ustawiane są rozmiar okna,
znaki backspace, przerwania (interrupt) i zabicia liniii i wysyłane są
na wyjście stderr łańcuchy inicjalizacji tab i terminala. Na koniec,
jeśli znaki kasowania (erase), przerwania (interrupt) i usunięcia linii
(line kill) zmieniły się, lub nie są ustawione na wartości domyślne,
ich wartości są wyświetlane na wyjście stderr.
Po wywołaniu jako reset, tset ustawia tryby cooked i echo, wyłącza
tryby cbreak i raw, włącza tłumaczenie nowej linii i resetuje wszystkie
nieustawione znaki specjalne na wartości domyślne. Następnie zachodzi
inicjalizacja terminala, opisana wyżej. Jest to przydatne jeśli program
umrze, pozostawiając terminal w nienormalnym stanie. Zauważ, że
możliwe, że będzie trzeba wpisać
<LF>reset<LF>
(znak line-feed to zazwyczaj control-J) aby terminal zaczął działać,
gdyż CR może w stanie nienormalnym nie działać. Poza tym, terminal
często nie będzie odbijał echa komendy.
Opcje są następujące:
-q Typ terminala jest wyświetlany na standardowe wyjście i nie jest
on w żaden sposób inicjalizowany. Opcja `-' jest równoważna, lecz
archaiczna.
-e Ustaw znak kasowania (erase) na ch.
-I Nie wysyłaj na terminal łańcuchów inicjalizacji tab lub terminala.
-i Ustaw znak przerwania (interrupt) na ch.
-k Ustaw znak usuwania linii (line kill) na ch.
-m Podaj mapowanie z typu portu na terminal. Patrz niżej.
-Q Nie wyświetlaj żadnych wartości dla znaków erase, interrupt i line
kill.
-r Drukuj na stderr typ terminala.
-s Drukuj na stdout sekwencję komend powłokowych, inicjalizujących
zmienną środowiskową TERM. Zobacz też sekcję niżej o ustawianiu
środowiska.
Argumenty dla -e, -i, -k mogą być wprowadzane jako normalne znaki, z
użyciem notacji `kapeluszowej', tj. control-h może być podawany jako
``^H'' czy ``^h''.
USTAWIANIE ŚRODOWISKA
Często do środowiska powłoki przydaje się wstawić typ terminala i
informację o jego właściwościach. Dokonuje się tego przy użyciu opcji
-s.
Gdy podana jest opcja -s, komendy wymagane do wstawienia informacji do
środowiska powłoki są zapisywane na stdout. Jeśli zmienna środowiskowa
SHELL kończy się na ``csh'', komendy są preparowane dla csh, w
przeciwnym wypadku tworzone są dla sh. Następująca linia w .login czy
.profile powinna prawidłowo zainicjalizować środowisko:
eval `tset -s options ... `
MAPOWANIE TYPU TERMINALA
Gdy terminal nie jest ściśle przywiązany do systemu (lub bieżąca
informacja systemowa może nie być prawidłowa), typ terminala
wyprowadzony z pliku /etc/ttys lub ze zmiennej środowiskowej TERM może
być często czymś podstawowym, w rodzaju network, dialup czy unknown.
Gdy tset jest używany w skrypcie startowym, często dobrze jest
udostępnić informację o typie terminala używanym na takich portach.
Celem opcji -m jest mapowanie z pewnych warunków na typ terminala, tj.
mówienie tset ``Jestem na tym porcie, z taką prędkością, więc chyba
jestem na tym typie terminala''.
Argument opcji -m składa się z opcjonalnego typu portu, opcjonalnego
operatora i opcjonalnej szybkości oraz znaku dwukropka i typu
terminala. Typ portu jest łańcuchem (rozdzielanym przez operator albo
znak dwukropka). Operator może być dowolną kombinacją ``>'', ``<'',
``@'' i ``!''; ``>'' oznacza większy od, ``<'' mniejszy od, ``@''
równy, a ``!'' odwraca sens testu. Szybkość jest podawana jako liczba
i jest porównywana z szybkością wyjścia standardowego błędów (które
powinno być kontrolującym terminalem). Typ terminala jest łańcuchem.
Jeśli w linii poleceń nie podano typu terminala, do typu stosowane są
mapowania -m. Jeśli typ portu i szybkość odpowiadają mapowaniu,
terminal podany w mapowaniu podmienia typ obecny. Jeśli podanych jest
więcej niż jedno mapowanie, użyte zostanie pierwsze pasujące.
Na przykład, rozważ następujące mapowanie: dialup>9600:vt100. Typ
portu to dialup, operator to >, szybkość to 9600, a typ terminala to
vt100. Wynikiem mapowania jest określenie, że jeśli typ terminala to
dialup, szybkość jest większa niż 9600 bodów, to należy używać
terminala vt100.
Jeśli nie poda się szybkości, typ terminala będzie pasował do dowolnej
szybkości. Jeśli nie poda się typu portu, terminal będzie pasował do
dowolnego portu. Na przykład, -m dialup:vt100 -m :?xterm spowoduje, że
dowolny port dialupowy, niezależnie od szybkości będzie odpowiadał
terminalowi vt100, podczas gdy dowolny port niedialupowy będzie
traktowany jako ?xterm. Zauważ, że z uwagi na pytajnik, użytkownik
będzie zapytany o domyślnym porcie czy rzeczywiście używa terminala
xterm.
W argumencie opcji -m dozwolone są znaki białych spacji. Ponadto, aby
zapobiec problemom z metaznakami, całą opcję -m zaleca się umieszczać
wewnątrz cytatów, a użytkownikom csh umieszczanie lewych ukośników
(``\'') przed znakami wykrzykników (``!'').
HISTORIA
Komenda tset pojawiła się w BSD 3.0. Implementacja ncurses została
częściowo zaadaptowana ze źródeł 4.4BSD do środowiska terminfo przez
Erica S. Raymonda <esr@snark.thyrsus.com>.
KOMPATYBILNOŚĆ
Narzędzie tset zostało udostępnione do wstecznej kompatybilności ze
środowiskami BSD (pod większością UNIX-ów /etc/inittab i getty(1) mogą
ustawiać odpowiednio TERM dla dowolnej linii dial-up, a to trywializuje
to, co było najważniejszym zastosowanem tset). Implementacja ta
zachowuje się jak tset z 4.4BSD, lecz zawiera kilka wyjątków.
Opcja -S z BSD tset nie działa; drukuje na stderr komunikat o błędzie i
umiera. Opcja -s ustawia tylko TERM, nie TERMCAP. Obydwie te zmiany są
spowodowane tym, że zmienna TERMCAP nie jest już obsługiwana w opartych
o terminfo ncurses, co powoduje że tset -S jest bezużyteczny.
Istniała nieudokumentowana właściwość 4.4BSD, według której wywołanie
tset poprzez dowiązanie o nazwie `TSET` (lub poprzez inną nazwę,
rozpoczynającą się od dużej litery) ustawiało terminal na używanie
tylko dużych liter. Właściwość ta została pominięta.
Opcje -A, -E, -h, -u i -v skasowano z narzędzia tset w 4.4BSD. Żadne z
nich nie było udokumentowane w 4.3BSD i wszystkie miały w najlepszym
wypadku ograniczoną przydatność. Opcje -a, -d i -p są podobnie
nieopisane lub nieużyteczne, lecz zostały utrzymane, gdyż okazuje się
że są powszechnie używane. Jest mocno zalecane zmienienie
wykorzystywania tych opcji na opcję -m. Opcja -n pozostaje, lecz nie
ma żadnego efektu. Opcje -adnp są z tej przyczyny pominięte w opisie
powyżej.
Wciąż jest dozwolone podawanie opcji -e, -i i -k bez argumentów, choć
mocno jest zalecane, by zmienić to na jawne podawanie znaku.
Od 4.4BSD, wywoływanie tset jako reset nie implikuje już opcji -Q.
Poza tym, interakcja między opcją - a argumentem terminal, pochodząca z
historycznych implementacji tset została usunięta.
ŚRODOWISKO
Komenda tset używa zmiennych środowiskowych SHELL i TERM.
PLIKI
/etc/ttys
baza mapowań nazw portów na typy terminali (tylko wersje BSD).
/usr/share/terminfo
baza właściwośći terminala
ZOBACZ TAKŻE
csh(1), sh(1), stty(1), tty(4), termcap(5), ttys(5), environ(7)
tset(1)