Stty
| Fiche express | |
|---|---|
| Domaine | Configuration du terminal (TTY) |
| Commande | stty
|
| Contexte | Terminal "cassé" après affichage binaire, saisie masquée, taille du terminal |
| Voir aussi | Read (saisie masquée au niveau d'une commande) |
stty affiche ou modifie les paramètres de la ligne de terminal (TTY) : écho des caractères saisis, affichage des messages des tâches de fond, taille en lignes/colonnes, etc. Il agit au niveau du terminal lui-même, contrairement à des options comme read -s (voir Read) qui n'agissent qu'au niveau d'une seule commande — une distinction importante à garder en tête quand un comportement de saisie semble incohérent d'un script à l'autre.
Sans argument, stty affiche un résumé des réglages qui diffèrent des valeurs par défaut. Les réglages s'appliquent au terminal courant (celui du shell dans lequel la commande est lancée) et disparaissent à la fermeture de la session.
Afficher tous les paramètres
stty -a affiche l'intégralité des réglages actuels du terminal, pas seulement ceux qui diffèrent des valeurs par défaut :
stty -a
Utile pour comparer deux terminaux ou vérifier l'état exact avant de modifier un réglage, notamment avant de couper l'écho ou l'affichage des tâches de fond.
Ne plus afficher les messages des tâches de fond
Par défaut, quand un job en arrière-plan se termine ou change d'état, le shell affiche un message ([1]+ Done ...) qui peut interrompre une saisie en cours. stty tostop bloque l'écriture des processus en arrière-plan sur le terminal tant qu'ils ne repassent pas au premier plan :
stty tostop # coupe les messages des tâches de fond
Pour réactiver :
stty -tostop
Masquer la saisie (mot de passe)
stty -echo coupe l'affichage des caractères tapés au clavier, ce qui permet de masquer une saisie sensible :
stty -echo
Pour réactiver l'affichage :
stty echo
⚠️ Toujours réactiver l'écho après usage (y compris en cas d'erreur dans le script, avec un trap) — un terminal laissé sans écho continue d'afficher les commandes suivantes en aveugle, ce qui est déroutant pour l'utilisateur. Quand seule une commande ponctuelle a besoin d'une saisie masquée, préférer read -s (voir Read) qui restaure l'écho automatiquement à la fin de la commande, sans manipuler l'état du terminal soi-même.
Remettre le terminal à zéro (stty sane)
Après l'affichage accidentel d'un fichier binaire dans un terminal (par exemple cat sur un exécutable), le terminal peut se retrouver dans un état incohérent : caractères illisibles, plus d'écho, touches qui ne réagissent plus comme attendu. stty sane restaure un jeu de réglages par défaut raisonnable sans avoir à fermer la session :
stty sane
Le terminal étant potentiellement cassé au moment de taper la commande, il arrive qu'elle s'affiche à l'écran de façon illisible ou pas du tout — la valider quand même (au besoin en tapant à l'aveugle) suffit généralement à la faire prendre effet.
Taille du terminal
stty size affiche le nombre de lignes et de colonnes du terminal courant (dans cet ordre) :
stty size
# 40 120
Les mêmes informations sont accessibles individuellement via les variables d'environnement du shell, utiles dans un script :
echo "$LINES colonnes : $COLUMNS"
Ces valeurs sont surtout utiles pour des scripts qui ajustent leur affichage (barres de progression, tableaux) à la largeur réelle du terminal, ou pour diagnostiquer un affichage mal formaté après une connexion SSH dont la taille de fenêtre n'a pas été correctement transmise.
Voir aussi
- Read — saisie masquée au niveau d'une commande (option
-s), à préférer àstty -echopour un usage ponctuel