Scroll to navigation

tset(1) Commandes de l'utilisateur tset(1)

NOM

tset, reset – Initialisation ou réinitialisation de l’état d’un terminal

SYNOPSIS

tset [-IQVcqrsw] [-] [-e car] [-i car] [-k car] [-m mappage] [type_terminal]
reset [-IQVcqrsw] [-] [-e car] [-i car] [-k car] [-m mappage] [type_terminal]

DESCRIPTION

tset — initialisation

Ce programme initialise les terminaux.

Tout d’abord, tset récupère les réglages actuels du mode de terminal pour votre terminal. Il le fait en testant successivement

  • la sortie d’erreur standard,
  • la sortie standard,
  • l’entrée standard,
  • /dev/tty,

pour obtenir les réglages du terminal. Une fois ces réglages récupérés, tset garde en mémoire le descripteur de fichier à utiliser lors de la mise à jour des réglages.

Ensuite, tset détermine le type de terminal en cours d’utilisation. Cette détermination est faite comme suit, en utilisant le premier type de terminal trouvé.

1. L’argument terminal spécifié sur la ligne de commande.

2. La valeur de la variable d’environnement TERM.

3. (systèmes BSD uniquement) Le type de terminal associé au périphérique de sortie standard d’erreur dans le fichier /etc/ttys (pour les hôtes System V et les systèmes utilisant cette convention, getty(8) remplit cette tâche en réglant TERM selon le type qui lui est transmis par /etc/inittab).

4. Le type de terminal par défaut, « unknown » n’est pas adapté pour les applications avec curses.

Si le type de terminal n’est pas précisé sur la ligne de commande, les mappages de l’option -m sont alors appliqués (voir la section « Mappages de type de terminal »). Puis, si le type de terminal commence par un point d’interrogation (« ? »), l’utilisateur est invité à confirmer le type de terminal. Une réponse vide confirme le type ou un autre type peut être saisi pour spécifier le nouveau type. Une fois le type de terminal déterminé, la description du terminal est récupérée. Si aucune description de terminal pour le type n’est trouvée, l’utilisateur est invité à saisir un autre type de terminal.

Une fois la description de terminal récupérée :

•
si l’option -w est activée, tset peut mettre à jour la taille de la fenêtre du terminal ;
si la taille de la fenêtre ne peut être obtenue du système d’exploitation, mais peut l’être de la description du terminal (ou de l’environnement, par exemple, des variables LINES et COLUMNS), utiliser ces valeurs pour définir la notion qu’a le système d’exploitation de la taille de la fenêtre ;
  • si l’option -c est activée, les caractères Retour, Interruption et Suppression de lignes (entre autres) sont définis ;
  • à moins que l’option I ne soit activée, les chaines initialisation de terminal et de tabulation sont envoyées sur la sortie standard d’erreur et, si le périphérique de terminal n’apparait pas être un pseudoterminal (comme celui pouvant être utilisé par un programme d’émulation de terminal), tset attend une seconde pour le cas où une réinitialisation matérielle aurait été déclenchée ;
  • finalement, si les caractères d’effacement, d’interruption et de saut de ligne ont changé, ou s’ils ne sont pas définis à leurs valeurs par défaut, leurs valeurs sont affichées sur le sortie standard d’erreur.

reset — réinitialisation

Invoqué sous la forme reset, tset définit les modes du terminal à des valeurs « raisonnables » :

  • il définit le mode canonique (« cooked ») et le mode echo,
  • il désactive les modes « cbreak » et « raw »,
  • il active la conversion de saut de ligne,
  • il redéfinit les caractères d’entrée spéciaux à leurs valeurs par défaut,

avant de réaliser l’initialisation décrite ci-avant. Aussi, plutôt que d’utiliser les chaines d’initialisation du terminal, il utilise celles de reset.

La commande reset est utile après qu’un programme a terminé en laissant le terminal dans un état anormal :

  • il peut être nécessaire de saisir


    <LF>reset<LF>

    (le caractère de nouvelle ligne est normalement Control-J) pour que le terminal fonctionne car le Retour chariot peut ne plus fonctionner dans un état anormal ;

  • de plus, le terminal ne réalisera pas l’écho de la commande.

Définition de l’environnement

Il est souvent souhaitable d’entrer le type et les informations de terminal à propos des possibilités du terminal dans l’environnement de l’interpréteur de commandes. Cela se fait avec l’option -s.

Quand l’option -s est spécifiée, les commandes pour saisir les informations dans l’environnement de l’interpréteur de commandes sont écrites sur la sortie standard. Si la variable d’environnement SHELL se termine par « csh », les commandes sont destinées à csh(1), autrement elles le sont pour sh(1). Les commandes de csh définissent ou suppriment la variable noglob d’interpréteur, la laissant non définie. La ligne suivante dans les fichiers .login ou .profile initialise correctement l’environnement :


eval `tset -s options ... `

Mappage de type de terminal

Quand le terminal n’est pas un terminal physique du système (ou quand l’information actuelle n’est pas correcte), le type de terminal déduit du fichier /etc/ttys ou la variable d’environnement TERM est souvent quelque chose de générique telle que network, dialup ou unknown. Quand tset est utilisé dans un script de démarrage, il est souvent souhaitable de fournir les informations à propos du type de terminal utilisé sur de tels ports.

L’option -m relie certain ensemble de conditions à un type de terminal, c’est-à-dire , indique à tset « Si je suis sur ce port à un débit particulier, je suis probablement sur cette sorte de terminal ».

Les arguments de l’option -m consistent en un type facultatif de port, un opérateur facultatif, une spécification facultative de débit en baud, un deux-points (« : ») facultatif, et un type de terminal. Le type de port est une chaine délimitée soit par l’opérateur ou le caractère deux-points. L’opérateur peut être toute combinaison de « > », « < », « @ » et « ! » ; « > » signifie plus grand que, « < » moins grand que, « @ » égal à, et « ! » inverse le sens du test. Le débit en baud est spécifié sous forme de nombre et est comparé avec la vitesse de la sortie standard d’erreur (qui peut être le terminal de contrôle). Le type de terminal est une chaine.

Si le type de terminal n’est pas spécifié sur la ligne de commande, les mappages de l’option -m sont appliqués au type de terminal. Si le type de port et débit en baud correspondent au mappage, le type de terminal spécifié dans le mappage remplace le type en cours. Si plus d’un mappage est spécifié, le premier applicable est utilisé.

Par exemple, en considérant le mappage suivant : dialup>9600:vt100. Le type de port est dialup, l’opérateur est >, le débit spécifié est 9600 et le type de terminal est vt100. Le résultat de ce mappage consiste à spécifier que si le type de terminal est dialup et que le débit est supérieur à 9600 bauds, un type de terminal vt100 sera utilisé.

Si aucun débit n’est spécifié, le type de terminal correspondra à n’importe quel débit. Si aucun type de port n’est spécifié, le type de terminal correspondra à n’importe quel type de port. Par exemple, -m dialup:vt100 -m :?xterm fera que n’importe quel port dialup, quel que soit le débit, correspondra au type de terminal vt100, et que les types de port non-dialup correspondront au type de terminal ?xterm. Remarquez que, à cause du point d’interrogation, l’utilisateur sera invité sur un port par défaut à indiquer s’il utilise vraiment un terminal xterm(1).

Aucun espace blanc n’est autorisé dans l’argument de l’option -m. Aussi, pour éviter des problèmes avec les métacaractères, il est suggéré de placer l’argument en entier entre des guillemets droits simples, et que les utilisateurs de csh insèrent une controblique (« \ ») avant tout point d’exclamation (« ! »).

OPTIONS

Les options sont les suivantes :

Définir les caractères de contrôle et les modes.
Définir le caractère d’effacement à car.
Ne pas envoyer les chaines d’initialisation de terminal ou de tabulation au terminal.
Définir le caractère d’interruption à car.
Définir le caractère de fin de ligne à car.
Spécifier un mappage d’un type de port à un terminal (voir la sous-section « Mappage de type de terminal »).
Ne pas afficher de valeurs pour les caractères d’effacement, d’interruption et de fin de ligne. Normalement, tset affiche les valeurs des caractères de contrôle qui diffèrent des valeurs par défaut du système.
Afficher le type de terminal sur la sortie standard sans que le terminal soit initialisé d’aucune façon. L’option « - » en elle-même est équivalente mais désuète.
Afficher le type de terminal sur la sortie standard d’erreur.
Afficher la séquence de commandes d’interpréteur pour initialiser la variable d’environnement TERM sur la sortie standard d’erreur (voir la sous-section « Définition de l’environnement »)
Afficher la version de ncurses utilisée dans ce programme et quitter.
Redimensionner la fenêtre pour correspondre à la taille déduite à l’aide de setupterm(3NCURSES). Normalement, cela n’a aucun effet à moins que setupterm ne puisse pas détecter la taille de la fenêtre.

Les arguments des options -e, -i et -k peuvent être saisis sous forme de caractères réels ou en utilisant la notation « caret » (c’est-à-dire que control-h peut être spécifié sous la forme de « ^H » ou « ^h ».

Si ni l’option -c, ni l’option -w ne sont spécifiées, les deux sont supposées actives.

ENVIRONNEMENT

La commande tset utilise les variables d’environnement suivantes :

Indication pour tset d’initialiser TERM en utilisant la syntaxe de sh(1) ou csh(1).
Indication du type de terminal. Chaque type de terminal est différent quoique beaucoup soient semblables.
Indication possible d’un emplacement de base de données termcap(5). Si ce n’est pas un chemin absolu (commençant par « / »), tset supprime la variable de l’environnement avant de rechercher une description de terminal.

FICHIERS

/etc/ttys
Base de données de mappage du nom de port système vers le type de terminal (versions BSD uniquement).
/etc/terminfo
Répertoire de la base de données compilée de description des terminaux.

PORTABILITÉ

Ni « IEEE Std 1003.1/The Open Group Base Specifications Issue 7 » (POSIX.1-2008), ni « X/Open Curses Issue 7 » ne documentent tset ou reset.

L’utilitaire d’AT&T tput (AIX, HP-UX, Solaris) intégrait la gestion du mode de terminal ainsi que des fonctionnalités basées sur termcap telles que la réinitialisation des tabulations à partir de tset sous BSD (4.1c), vraisemblablement pour rendre tset obsolète. Cependant, chacun de ces systèmes fournit toujours tset. En fait, l’utilitaire reset couramment utilisé est toujours un alias pour tset.

L’utilitaire tset fournit une rétrocompatibilité avec les environnements BSD. Pour la plupart des Unix modernes, /etc/inittab et getty(8) peuvent définir TERM de manière appropriée pour chaque ligne dial-up, en rendant inutile ce qui était l’utilisation la plus importante de tset. Cette implémentation se comporte comme la fonction tset de 4.4BSD avec quelques exceptions que nous allons examiner.

Quelques options sont différentes parce que la variable TERMCAP n’est plus prise en charge sous ncurses basé sur terminfo(5) :

  • l’option -S de tset sous BSD ne fonctionne plus ; elle affiche un message d’erreur et quitte ;
  • l’option -s définit seulement TERM, mais pas TERMCAP.

IL existait une fonctionnalité non documentée de 4.4BSD qui faisait qu’invoquer tset à travers un lien appelé « TSET » (ou à travers un autre nom commençant par une lettre capitale) indiquait au terminal de n’utiliser que des capitales. Cette fonctionnalité a été supprimée.

Les options -A, -E, -h, -u et -v ont été supprimées de l’utilitaire tset dans 4.4BSD. Aucune n’était documentée dans 4.3BSD et toutes sont au mieux d’une utilité limitée. Les options -a, -d et -p sont de la même manière non documentées ou utiles, mais ont été conservées car il est apparu qu’elles étaient largement utilisées. Il est fortement recommandé que tout emploi de ces trois options soit remplacé par l’option -m. Les options -a, -d et -p sont par conséquent absentes du synopsis d’utilisation ci-dessus.

Les très anciens systèmes, par exemple, 3BSD, utilisaient un pilote de terminal différent qui a été remplacé dans 4BSD au début des années 80. Pour adapter ces anciens systèmes, le tset de 4BSD fournissait une option -n pour spécifier que le nouveau pilote de terminal devait être utilisé. Cette implémentation ne fournit pas ce choix.

Il est toujours permis d’utiliser les options -e, -i et -k sans argument, bien qu’il soit fortement recommandé qu’un tel usage soit corrigé pour spécifier explicitement le caractère.

Depuis 4.4BSD, exécuter tset sous la forme reset n’implique plus l’option -Q. Aussi, l’interaction entre l’option « - » et l’argument terminal dans certaines mises en œuvre historiques de tset a été supprimée.

Les options -c et -w n’existent pas dans les implémentations précédentes. Cependant, une fonctionnalité de modification de taille de fenêtre était fournie dans 4.4BSD.

  • Dans 4.4BSD, tset utilise une taille de fenêtre à partir de la description de termcap(5) si tset n’est pas capable d’obtenir cette taille à partir du système d’exploitation.
  • Dans ncurses, tset obtient la taille de fenêtre en utilisant setupterm(3NCURSES), qui peut provenir du système d’exploitation, des variables d’environnement LINES et COLUMNS ou de la description du terminal.

L’obtention de la taille de la fenêtre à partir de la description du type de terminal est commune aux deux implémentations, mais est considérée comme obsolescente. Sa seule utilisation pratique est pour les terminaux physiques. Généralement, la taille de la fenêtre ne demeure initialisée que si un problème existe pour obtenir la valeur à partir du système d’exploitation (setupterm échouerait quand même). Les variables d’environnement LINES et COLUMNS peuvent alors être utiles pour contourner les problèmes de taille, mais ont l’inconvénient que, si la fenêtre est redimensionnée, leurs valeurs doivent être recalculées et réassignées. Le programme resize(1) fourni avec xterm(1) facilite cette opération.

HISTORIQUE

Une commande reset écrite par Kurt Shoens est apparue dans 1BSD (mars 1978). Elle définissait les caractères erase et kill à ^H (retour) et @ respectivement. Mark Horton a amélioré ce reset dans 3BSD (octobre 1979), ajoutant les caractères intr, quit, start/stop et eof ainsi qu’en modifiant le programme pour éviter toute modification de réglage d’utilisateur. Cette version de reset n’utilisait pas termcap(5).

Eric Allman a écrit une commande tset distincte pour 1BSD, en utilisant un précurseur de termcap(5) appelé ttycap. Les commentaires d’Allman dans le code source indiquaient qu’il avait commencé son travail en octobre 1977 et avait continué les années suivantes. Mais fin 1979, il a migré vers termcap(5) et géré la variable TERMCAP. Des commentaires postérieurs indiquent que tset a été modifié en septembre 1980 pour utiliser une logique copiée du programme « reset » de 3BSD lorsqu’il a été invoqué sous la forme reset. Cette version est apparue dans 4.1cBSD, fin 1982. D’autres développeurs tels que Keith Bostic et Jim Bloom ont continué à modifier tset jusqu’à la publication de 4.4BSD en 1993.

L’implémentation ncurses a été légèrement adaptée à partir des sources 4.4BSD pour utiliser l’API de terminfo par Eric S. Raymond <esr@snark.thyrsus.com>.

VOIR AUSSI

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

TRADUCTION

La traduction française de cette page de manuel a été créée par Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

18 janvier 2025 ncurses 6.6