Provided by: manpages-pl_4.23.1-1_all bug

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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.