C'est une situation qui m'est souvent arrivée: après avoir appuyé (avec une intention différente) Ctrl-Sdans un terminal, l'interaction (entrée ou sortie) avec celui-ci est gelée. C'est probablement une sorte de "verrou de défilement" ou autre chose.
Comment puis-je dégeler le terminal après cela?
(Cette fois, j’ai travaillé avec apt-shell
un contenu bash
interne - urxvt
je ne sais pas lequel d’entre eux est responsable du traitement spécial de Ctrl-S: j’ai parcouru l’historique des commandes avec le sens inverse C-r, comme d'habitude pour readline, mais je voulais ensuite revenir "en arrière" "transmet l'historique avec l'habituel - du moins dans Emacs - C-s( 1 , 2 , 3 ), mais cela a provoqué le blocage du terminal. Le défilement / la pagination pour afficher les éléments passés fonctionne toujours dans le terminal, mais aucune interaction avec les processus exécutés là.)
vim
et j'ai appuyé sur Ctrl-S pour enregistrer mes modifications. Uh-ohXD
Réponses:
Ctrl-Q
Pour le désactiver complètement, utilisez
stty -ixon
un script de démarrage. Pour permettre à n’importe quelle touche de faire bouger les choses, utilisezstty ixany
.ps: ce n'est ni le terminal ni le shell qui le fait, mais le pilote de terminal du système d'exploitation.
la source
Ctrl-C
; ça marche aussi? (Et à un autre endroit , ils ont suggéréCtrl-Q
, tout comme vous.)stty
.)Ctrl-S
puisCtrl-Q
de reprendre.Ctrl- Qest en effet la réponse. Je pensais avoir ajouté une petite histoire trop longue pour tenir dans les marges de la bonne réponse de ak2 .
À l’époque des ténèbres, un terminal était un gros équipement connecté à un périphérique distant (à l’origine, un autre terminal, car les télétypes étaient beaucoup plus faciles à apprendre qu’une clé de télégraphe) sur un long fil ou via des lignes téléphoniques avec modems. Au moment où Unix se développait, le code ASCII était déjà bien établi (bien que le code EBCDIC concurrent d’IBM fût toujours une force avec laquelle il fallait compter).
Les premiers terminaux gardaient un enregistrement imprimé de chaque caractère reçu. Tant que les caractères n'arrivent pas plus vite que la tête d'impression ne peut les saisir, au moins. Mais dès que les terminaux à tube cathodique ont été possibles, le problème est que seulement environ 25 lignes tiennent sur le tube cathodique, et que 25 lignes de 80 caractères représentent suffisamment de RAM pour que personne ne songe sérieusement à fournir plus de RAM aux personnages qui ont défilé du début à la fin. l'écran.
Il fallait donc une convention pour signaler que l’envoyeur devrait faire une pause pour permettre au lecteur de se rattraper.
Le code ASCII à 7 bits comporte 33 points de code consacrés aux caractères de contrôle (0 à 31 et 127). Certains d' entre eux avaient des fins très bien établies, comme
NUL
(chef blanc de bande de papier pour le filetage, les lacunes et les épissures),DEL
( « barré » caractères sur une bande de papier indiqué par poinçonnage sept trous),BEL
(ding!),CR
,LF
EtTAB
. Mais quatre ont été définis de manière explicite pour commander le dispositif terminal lui - même (DC1
àDC4
aka Ctrl + Q, Ctrl + R, S et Ctrl + Ctrl + T).Ma meilleure hypothèse est que certains ingénieurs ont pensé que (comme le disent les mnémoniques), "S" pour "Stop" et "Q" pour "Continuer" n'étaient pas si mauvais, et assignés
DC3
à signifier "s'il vous plaît, arrêtez d'envoyer" etDC1
à signifier "ok , continuez à envoyer maintenant ".Même cette convention était déjà bien établie au moment où Unix quittait son nid chez Bell Labs pour aller dans le monde.
La convention est connue sous le nom de contrôle de flux logiciel et est extrêmement courante dans les périphériques série réels. Il n'est pas facile à mettre en œuvre correctement, car cela empêche l'utilisation de l'un de ces caractères à toute autre fin dans le canal de communication, et le signal d'arrêt doit être traité avant tout caractère reçu en attente pour éviter d'envoyer davantage que le destinataire ne peut en envoyer. manipuler.
Si possible, l’utilisation de signaux supplémentaires hors bande du flux de données série pour le contrôle de flux est grandement préférable. Sur les connexions directement câblées qui peuvent se permettre les câbles de signal supplémentaires, vous découvrirez que la liaison matérielle est utilisée, ce qui libère ces caractères pour d'autres utilisations.
Bien entendu, la fenêtre de terminal actuelle n’utilise pas de port série physique, elle est dotée de barres de défilement et n’a pas vraiment besoin d’une liaison logicielle. Mais la convention persiste.
Je me souviens de l'affirmation selon laquelle Richard Stallman aurait reçu des plaintes concernant sa correspondance entre Ctrl + S et la recherche incrémentielle dans les premières versions d'Emacs, et qu'il était plutôt antipathique envers tout utilisateur qui devait dépendre d'une connexion à 7 bits à contrôle de logiciel.
la source