5.7 Émissions diverses
Tout ce que l'on a vu précédemment permet de s'assurer de la correction
de la ligne courante.
On peut forcer l'envoi de cette ligne à la tâche requérante grâce
au caractère J ou LF ou Line Feed.
le tampon est alors effacé et le curseur saute à la ligne suivante
au moyen de la séquence LF, CR.
Le caractère LF est lui-même transmis comme dernier caractère de la ligne
courante.
Schématiquement
---------- |
-------- |
---------- |
------- |
caractères |
état du |
caractère |
état de |
émis par |
tampon |
émis vers |
l'écran |
le clavier |
|
l'écran |
|
---------- |
-------- |
--------- ------- |
initialement |
date_ |
|
date_ |
J |
_ |
M |
date |
|
et |
J |
|
|
envoi de |
|
date |
|
dateJ |
|
_ |
Sur la plupart des claviers la grande touche à droite marquée RETURN,
RETOUR ou encore ENVOI est associée au code CR c'est-à-dire M plutôt
qu'à LF.
On peut alors programmer l'interface pour que soit converti, en entrée,
CR en LF !
stty -nl
Symétriquement en sortie, LF est converti en CR, LF.
Ainsi donc, dans ce mode qui est natif
---------- |
-------- |
---------- |
------- |
caractères |
état du |
caractère |
état de |
émis par |
tampon |
émis vers |
l'écran |
le clavier |
|
l'écran |
|
---------- |
-------- |
--------- ------- |
initialement |
date_ |
|
date_ |
M |
_ |
M |
date |
|
et |
J |
|
|
envoi de |
|
date |
|
dateJ |
|
_ |
Inversement
stty nl
où M est un caractère normal et où seul J force l'envoi d'une ligne,
conduirait au dialogue
$ whoJ
queinnec
$ whoMJ
: program not found
Les deux dernières lignes demandent explication.
CR étant un caractère normal et
whoM n'étant le nom d'aucun programme,
le message d'erreur est donc
whoM : program not found
ce qui explique la visualisation donnée plus haut, puisqu'en sortie
CR n'est pas converti en
^Mmais est interprété par l'écran comme une commande de positionnement
de curseur. UNIX nomme newline (ou NL)le caractère LF :
c'est le délimiteur de ligne dans les fichiers UNIX,
c'est aussi un séparateur syntaxique pour
sh.