Scroll to navigation

tset(1) General Commands Manual tset(1)

NAZWA

tset, reset - inicjalizacja terminala

SKŁADNIA

tset [-IQVcqrsw] [-] [-e znak] [-i znak] [-k znak] [-m mapowanie] [terminal]
reset [-IQVcqrsw] [-] [-e znak] [-i znak] [-k znak] [-m mapowanie] [terminal]

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. Poprzez wartość zmiennej środowiskowej TERM.

3. (BSD systems only.) The terminal type associated with the standard error output device in the /etc/ttys file. (On System-V-like UNIXes and systems using that convention, getty(8) does this job by setting TERM according to the type passed to it by /etc/inittab.)

4. Poprzez wybranie domyślnego typu terminala, “unknown”.

If the terminal type was not specified on the command-line, the -m option mappings are then applied (see the section TERMINAL TYPE MAPPING for more information). Then, if the terminal type begins with a question mark (“?”), the user is prompted for confirmation of the terminal type. An empty response confirms the type, or, another type can be entered to specify a new type. Once the terminal type has been determined, the terminal description for the terminal is retrieved. If no terminal description is found for the type, the user is prompted for another terminal type.

Po pobraniu opisu terminala:

jeśli włączono opcję „-w”, tset może zaktualizować rozmiar okna terminala;
If the window size cannot be obtained from the operating system, but the terminal description (or environment, e.g., LINES and COLUMNS variables specify this), use this to set the operating system's notion of the window size.
  • 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 - reinitialization

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.

OPCJE

Dostępne są następujące opcje:

Ustawia tryby i znaki sterujące.
Ustawia znak kasowania (erase) na znak.
Nie wysyła na terminal łańcuchów inicjalizacji tab lub terminala.
Ustawia znak przerwania (interrupt) na znak.
Ustawia znak usuwania linii (line kill) na znak.
Specify a mapping from a port type to a terminal. See the section TERMINAL TYPE MAPPING for more information.
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.
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.
Wypisuje typ terminala na standardowe wyjście błędów.
Print the sequence of shell commands to initialize the environment variable TERM to the standard output. See the section SETTING THE ENVIRONMENT for details.
reports the version of ncurses which was used in this program, and exits.
Zmienia rozmiar okna do rozmiaru wydedukowanego za pomocą setupterm(3X). 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.

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.

When the -s option is specified, the commands to enter the information into the shell's environment are written to the standard output. If the SHELL environmental variable ends in “csh”, the commands are for csh, otherwise, they are for sh(1). Note, the csh commands set and unset the shell variable noglob, leaving it unset. The following line in the .login or .profile files will initialize the environment correctly:


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 (“!”).

HISTORIA

A reset command appeared in 1BSD (March 1978), written by Kurt Shoens. This program set the erase and kill characters to ^H (backspace) and @ respectively. Mark Horton improved that in 3BSD (October 1979), adding intr, quit, start/stop and eof characters as well as changing the program to avoid modifying any user settings. That version of reset did not use the termcap database.

A separate tset command was provided in 1BSD by Eric Allman, using the termcap database. Allman's comments in the source code indicate that he began work in October 1977, continuing development over the next few years.

According to comments in the source code, the tset program was modified in September 1980, to use logic copied from the 3BSD “reset” when it was invoked as reset. This version appeared in 4.1cBSD, late in 1982.

Other developers (e.g., Keith Bostic and Jim Bloom) continued to modify tset until 4.4BSD was released in 1993.

Implementacja ncurses została częściowo zaadaptowana ze źródeł 4.4BSD do środowiska terminfo przez Erica S. Raymonda <esr@snark.thyrsus.com>.

ZGODNOŚĆ

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.

The AT&T tput utility (AIX, HPUX, Solaris) incorporated the terminal-mode manipulation as well as termcap-based features such as resetting tabstops from tset in BSD (4.1c), presumably with the intention of making tset obsolete. However, each of those systems still provides tset. In fact, the commonly-used reset utility is always an alias for tset.

The tset utility provides for backward-compatibility with BSD environments (under most modern UNIXes, /etc/inittab and getty(8) can set TERM appropriately for each dial-up line; this obviates what was tset's most important use). This implementation behaves like 4.4BSD tset, with a few exceptions specified here.

A few options are different because the TERMCAP variable is no longer supported under terminfo-based ncurses:

  • Opcja -S tset z BSD już nie działa; wypisuje błąd na standardowe wyjście błędów i ginie.
  • The -s option only sets TERM, not 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.
  • In ncurses, tset obtains the window size using setupterm, which may be from the operating system, the LINES and COLUMNS environment variables or the terminal description.

Obtaining the window size from the terminal description is common to both implementations, but considered obsolescent. Its only practical use is for hardware terminals. Generally speaking, a window size would be unset only if there were some problem obtaining the value from the operating system (and setupterm would still fail). For that reason, the LINES and COLUMNS environment variables may be useful for working around window-size problems. Those have the drawback that if the window is resized, those variables must be recomputed and reassigned. To do this more easily, use the resize(1) program.

ŚRODOWISKO

Polecenie tset używa następujących zmiennych środowiskowych:

tells tset whether to initialize TERM using sh(1) or csh(1) syntax.
Wskazuje typ terminala użytkownika. Każdy typ jest odmienny, choć wiele jest podobnych.
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
baza właściwośći terminala

ZOBACZ TAKŻE

csh(1), sh(1), stty(1), terminfo(3NCURSES), tty(4), terminfo(5), ttys(4), environ(7)

Podręcznik odnosi się do wersji 6.4 ncurses (łatka 20221231).

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.