Provided by: manpages-pl_4.23.1-1_all 

NAZWA
tset, reset - inicjuje lub resetuje stan terminala
SKŁADNIA
tset [-IQVcqrsw] [-] [-e znak] [-i znak] [-k znak] [-m mapowanie] [typ-terminala]
reset [-IQVcqrsw] [-] [-e znak] [-i znak] [-k znak] [-m mapowanie] [typ-terminala]
OPIS
tset — inicjalizacja
Program ten inicjuje terminale.
Na począteku tset pobiera bieżące ustawienia trybu terminala dla terminala użytkownika. Czyni to
sprawdzając kolejno
• standardowe wyjście błędów,
• standardowe wyjście,
• standardowe wejście
• i na końcu „/dev/tty/”
w celu pobrania ustawień terminala. Po uzyskaniu ustawień, tset zapamiętuje, którego deskryptora pliku
należy użyć przy aktualizowaniu ustawień.
Następnie, tset określa rodzaj używanego terminala. Robi to na podstawie poniższych danych, korzystając z
pierwszego pasującego typu terminala:
1. Argumentu typ-terminala, podanego w wierszu poleceń.
2. Wartości zmiennej środowiskowej TERM.
3. (Tylko systemy BSD.) Typu terminala, związanego poprzez plik /etc/ttys z urządzeniem stderr (na
komputerach z Systemem V i w systemach używających jego konwencji, robotę tę wykonuje getty, ustawiając
TERM zgodnie z typem, przekazanym mu przez /etc/inittab).
4. Domyślny typ terminala, „unknown”, nie jest odpowiedni dla aplikacji korzystających z curses.
Jeśli rodzaj terminala nie był podany w wierszu poleceń, to załączane są mapowania opcji -m (zob.
podrozdział „Mapowanie typu terminala”). 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. Jeśli nie ma dla niego opisu terminala,
użytkownik jest proszony o podanie innego typu terminala.
Po pobraniu opisu terminala:
• jeśli włączono opcję „-w”, tset może zaktualizować rozmiar okna terminala;
jeśli rozmiaru okna nie można uzyskać od systemu operacyjnego, lecz można z opisu terminala (lub ze
środowiska np. określają go zmienne LINES (wiersze) i COLUMNS (kolumny)), korzysta z tego do
ustawienia wyobrażenia systemu operacyjnego o rozmiarze okna;
• jeśli włączono opcję „-c”, ustawiane są m.in. znaki kasowania (erase), przerwania (interrupt) i
usunięcia linii (line kill);
• o ile nie włączono opcji „-I”, wysyła na standardowe wyjście błędów łańcuchy inicjalizacji tab lub
terminala, a tset odczekuje jedną sekundę (na wypadek, gdyby zarządzono reset sprzętowy);
• 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.
reset — ponowna inicjalizacja
Przy wywołaniu pod postacią reset, tset ustawia tryby terminala na „rozsądne” wartości:
• ustawia tryby cooked i echo,
• wyłącza tryby cbreak i raw,
• włącza tłumaczenie znaków nowego wiersza
• i przywraca wszelkim nieustawionym znakom specjalnym ich wartości domyślne
przed dokonaniem inicjalizacji terminala opisanej wyżej. Dodatkowo, zamiast korzystać z łańcuchów
inicjalizacji terminala, używa łańcuchów resetowania terminala.
Polecenie reset jest przydatne w sytuacjach, gdy jakiś program zginie, pozostawiając terminal w
niepoprawnym stanie:
• może być konieczne wpisanie
<LF>reset<LF>
(znak <LF> — line-feed to zazwyczaj control-J) aby terminal zaczął działać, gdyż znak powrotu karetki
może w stanie niepoprawnym nie działać.
• Poza tym, wpisywane znaki polecenia często mogą nie być widoczne na terminalu.
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(1), w
przeciwnym wypadku tworzone są dla sh(1). Zestaw poleceń csh ustawia, a następnie usuwa zmienną powłoki
noglob, pozostawiając ją nieustawioną. Następująca linia w .login czy .profile powinna prawidłowo
zainicjować środowisko:
eval `tset -s opcje ... `
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.
Opcja -m mapuje z pewnych warunków na typ terminala, tj. mówi 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żmy 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. Proszę zauważyć, ż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 („!”).
OPCJE
Dostępne są następujące opcje:
-c Ustawia tryby i znaki sterujące.
-e znak
Ustawia znak kasowania (erase) na znak.
-I Nie wysyła na terminal łańcuchów inicjalizacji tab lub terminala.
-i znak
Ustawia znak przerwania (interrupt) na znak.
-k znak
Ustawia znak usuwania linii (line kill) na znak.
-m mapowanie
Podaje mapowanie z typu portu na terminal; zob. podrozdział „Mapowanie typu terminala”.
-Q Nie wyświetla wartości dla znaków kasowania (erase), przerwania (interrupt) i usunięcia linii (line
kill). Zwykle tset wyświetla wartości znaków kontrolnych, które różnią się od domyślnych wartości
systemowych.
-q Typ terminala jest wyświetlany na standardowe wyjście i nie jest on w żaden sposób inicjowany. Opcja
„-” jest równoważna, lecz archaiczna.
-r Wypisuje typ terminala na standardowe wyjście błędów.
-s Wypisuje na standardowe wyjście sekwencję komend powłoki, inicjujących zmienną środowiskową TERM;
zob. podrozdział „Ustawianie środowiska”.
-V Zgłasza wersję ncurses, z której skorzystał program i wychodzi.
-w Zmienia rozmiar okna do rozmiaru wydedukowanego za pomocą setupterm(3NCURSES). Zwykle opcja ta nic
nie zmienia, chyba że setupterm nie był w stanie wykryć rozmiaru okna.
Argumenty dla -e, -i i -k mogą być wprowadzane jako normalne znaki, z użyciem notacji „kapeluszowej”, tj.
control-h może być podawany jako „^H” czy „^h”.
Jeśli nie poda się żadnej z opcji -c i -w, stosowane są obie.
ŚRODOWISKO
Polecenie tset używa następujących zmiennych środowiskowych:
SHELL
Przekazuje tset informację, czy do zainicjowania TERM użyć składni sh(1) czy csh(1).
TERM Wskazuje typ terminala użytkownika. Każdy typ jest odmienny, choć wiele jest podobnych.
TERMCAP
Może wskazywać położenie bazy danych termcap. Jeśli nie jest to ścieżka absolutna (tj. zaczynająca
się od „/”), tset usunie tę zmienną ze środowiska przed rozpoczęciem szukania opisów terminali.
PLIKI
/etc/ttys
Baza mapowań nazw portów na typy terminali (tylko wersje BSD).
/etc/terminfo
Katalog ze skompilowaną bazą danych o terminalach.
PRZENOŚNOŚĆ
Ani IEEE Std 1003.1/The Open Group Base Specifications Issue 7 (POSIX.1-2008), ani X/Open Curses Issue 7
nie dokumentują tset i reset.
Narzędzie tput AT&T (AIX, HP-UX, Solaris) dołączyło: możliwość modyfikacji trybu termianala oraz funkcje
korzystające z termcap, takie jak resetowanie tabulatorów, z tset w BSD (4.1c), prawdopodobnie z intencją
późniejszego zastąpienia tset. Jednak każdy z tych systemów wciąż zawiera tset. Co więcej, często
stosowane narzędzie reset jest zawsze aliasem tset.
Narzędzie tset zapewnia wsteczną kompatybilność ze środowiskami BSD (pod większością Uniksów /etc/inittab
i getty(1) mogą ustawiać odpowiednio TERM dla dowolnej linii dial-up, a to trywializuje to, co było
najważniejszym zastosowaniem tset). Implementacja ta zachowuje się jak tset z 4.4BSD, lecz zawiera kilka
wyjątków, do których teraz przejdziemy.
Kilka opcji jest odmiennych, ponieważ zmienna TERMCAP nie jest już obsługiwana w ncurses korzystającej z
terminfo:
• Opcja -S tset z BSD już nie działa; wypisuje błąd na standardowe wyjście błędów i ginie.
• Opcja -s ustawia jedynie TERM, lecz nie TERMCAP.
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. Opcje -a, -d i -p są z tej przyczyny
pominięte w opisie powyżej.
Bardzo stare systemy, takie jak 3BSD, korzystały z innego sterownika terminala, który zastąpiono w 4BSD,
we wczesnych latach 1980. Do obsługi tych systemów tset z 4BSD udostępniał opcję -n wskazującą, że należy
korzystać z nowego sterownika terminala. Niniejsza implementacja nie umożliwia takiego wyboru.
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.
We wcześniejszych implementacjach nie było opcji -c i -w. W 4.4BSD występowała jednak inna funkcja zmiany
wymiarów okna.
• W 4.4BSD, jeśli tset nie był w stanie uzyskać rozmiaru okna od systemu operacyjnego, w celu
ustawienia rozmiaru okna, tset używał rozmiaru okna z opisu termcap.
• W ncurses, tset uzyskuje rozmiar okna za pomocą setupterm(3NCURSES), które może pochodzić z systemu
operacyjnego; ze zmiennych środowiskowych LINES i COLUMNS; albo z opisu terminala.
Uzyskiwanie rozmiaru okna z opisu typu terminala jest powszechne w obu implementacjach, lecz jest uważane
za przestarzałe. Ma praktyczne zastosowanie jedynie w terminalach sprzętowych. Rozmiar okna pozostanie
niezainicjowany zwykle jedynie, gdy wystąpił problem w uzyskiwaniu tej wartości od systemu operacyjnego
(i wciąż zawiedzie setupterm). Zmienne środowiskowe LINES (wiersze) i COLUMNS (kolumny) mogą być zatem
przydatne przy obchodzeniu problemów z rozmiarem okna, jednak mają tę wadę, że jeśli zmieni się rozmiar
okna, wartości te muszą być przeliczone ponownie i podane na nowo. Pomaga w tym program resize(1),
dostarczany razem z xterm(1).
HISTORIA
Polecenie reset napisane przez Kurta Shoensa pojawiło się w 1BSD (marzec 1978 r.). Ustawia ono znaki
erase i kill odpowiednio na ^H (backspace) i @. Mark Horton dokonał usprawnień reset w 3BSD (październik
1979 r.), dodając znaki intr, quit, start/stop i eof oraz zmieniając program w ten sposób, aby unikać
modyfikacji ustawień użytkownika. Ta wersja reset nie korzystała z termcap.
Eric Allman napisał oddzielne polecenie tset dla 1BSD, korzystając z poprzednika termcap, zwanego ttycap.
Komentarza Allmana w kodzie źródłowym wskazują, że rozpoczął nad tym pracę w październiku 1977 r.,
kontynuując ją przez kolejne kilka lat. Pod koniec roku 1979, dokonał migracji na termcap, pojawiła się
też obsługa zmiennej TERMCAP. Kolejne komentarze wskazują, że tset został zmodyfikowany we wrześniu 1980
r. w celu używania logiki skopiowanej z programu „reset” z 3BSD, gdy był on wywoływany jako reset. Ta
wersja pojawiła się w 4.1cBSD, pod koniec 1982 r. Inni deweloperzy, tacy jak Keith Bostic i Jim Bloom
kontynuowali modyfikowanie tset do momentu wydania 4.4BSD w 1993 r.
Implementacja ncurses została częściowo zaadaptowana ze źródeł 4.4BSD do interfejsu programistycznego
terminfo przez Erica S. Raymonda <esr@snark.thyrsus.com>.
ZOBACZ TAKŻE
csh(1), sh(1), stty(1), terminfo(3NCURSES), tty(4), terminfo(5), ttys(4), environ(7)
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>,
Wojtek Kotwica <wkotwica@post.pl> i Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ
ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-
list@lists.sourceforge.net.
ncurses 6.5 27 kwietnia 2024 r. tset(1)