logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
atelier:chantier:terminaux-et-consoles-explications [13/06/2023 22:25]
agp91 [Tuto]
atelier:chantier:terminaux-et-consoles-explications [28/04/2024 07:10] (Version actuelle)
agp91 [Explications]
Ligne 330: Ligne 330:
 >​[[https://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​torvalds/​linux.git/​tree/​drivers/​tty/​Kconfig?​id=HEAD|(git.kernel)(en) Torvalds/​Linux/​drivers/​tty/​Kconfig]] (traduction) : La console système est le périphérique qui reçoit tous les messages du noyau et des avertissements et qui permet les connexions en mode mono-utilisateur. >​[[https://​git.kernel.org/​pub/​scm/​linux/​kernel/​git/​torvalds/​linux.git/​tree/​drivers/​tty/​Kconfig?​id=HEAD|(git.kernel)(en) Torvalds/​Linux/​drivers/​tty/​Kconfig]] (traduction) : La console système est le périphérique qui reçoit tous les messages du noyau et des avertissements et qui permet les connexions en mode mono-utilisateur.
  
-Ainsi la **console Linux** est **__la__ console** de l'​ordinateur. Elle est, ce qu'est une __console système__ ​pour l'​ordinateur central.+Ainsi la **console Linux** est **__la__ console** de l'​ordinateur. Elle est, ce qu'est une console système ​pour l'​ordinateur central.
  
-Elle n'​existe que dans le noyaumatériel et les drivers.+La console Linux **n'​existe que dans l'​espace noyau et le matériel.** 
 + 
 +<​note>​__**L'​espace ​noyau**__ fait référence aux anneaux théoriques de sécurité d'un système informatique(([[https://​fr.wikipedia.org/​wiki/​Anneau_de_protection|Anneau de protection (fr)(wikipedia)]])).\\ 
 +\\ 
 +Il y a 4 niveaux de sécurité (numérotés de 0 à 3) :\\ 
 +\\ 
 +  * Le **niveau 0** : Le noyau lui-même. 
 +  * Le **niveau 1** : Les drivers qui ordonnent le matériel
 +  * Le **niveau 2** : Les drivers qui implémentent l'​accès ​et l'​autorité aux ressources. 
 +  * Le **niveau 3** : L'​espace utilisateur. Où nous pouvons utiliser ​les ressources pour exécuter nos programmes. 
 + 
 +Depuis l'​espace utilisateur,​ nous accédons au ressources du système (détenue par le noyau), que par le niveau 2.\\ 
 +... Ainsi le noyau est protégé de tout accès direct. 
 + 
 +Pour simplifier ce schéma, **les trois premiers anneaux** (0, 1 et 2),\\ 
 +Sont regroupés en un seul, pour être **nommer** ''​l'​espace noyau''​.\\ 
 +Ainsi nous voyons le système avec  : 
 + 
 +  * L'​**espace noyau** (noyau + drivers
 +  * Et l'​**espace utilisateur**. 
 +</​note>​
  
 <file config La console Linux> <file config La console Linux>
-                 ​+------------------------Logiciel--------------------------+ +                 ​+------------------------Logiciel---------------------------------------+ 
-                 ​+---------------------Espace-noyau-------------------------+ +                 ​+---------------------Espace-noyau--------------------------------------+ 
- ​+------------Console-----------------------------------------------------+ | + ​+------------Console------------------------------------------------------------------+ ​
- | +-Matériel-+ ​ |  +-------+ ​  ​+---------+ ​   +----------+ ​   +-------+ ​ | | + ​| ​              ​| ​            ​+-------------Noyau-------------+ ​                      ​| ​
- | | +-----+ ​ |  |  |Drivers| ​  ​|         ​| ​   |          |    ​| ​      |  | | + | +-Matériel-+ ​ |  +-------+ ​ ​|  ​+---------+ ​   +----------+ ​ ​|  ​+------------------+ | | 
- | | |Ecran|<​-|--|--| vidéo |<​--|Emulateur| ​   |Discipline| ​   |Drivers|  | | + | | +-----+ ​ |  |  |Drivers| ​ ​|  ​|         ​| ​   |          |  |  ​|     ​Drivers ​     | | | 
- | | +-----+ ​ |  |  +-------+ ​  ​|   ​de ​   |<​==>​| ​         |<​==>​| ​      ​|  | | + | | |Ecran|<​-|--|--| vidéo |<-|--|Emulateur| ​   |Discipline| ​  |  ​+------------+ ​ | | | 
- | |+-------+ |  |  +-------+ ​  ​|terminal |    | de ligne |     ​TTY ​ ​| ​ | | + | | +-----+ ​ |  |  +-------+ ​ ​|  ​|   ​de ​   |<​==>​| ​   ​de ​   ​|<=|==|=>|/​dev/​console|  ​| | 
- | ||Clavier|-|--|->​|Drivers|-->​| ​        ​| ​   |          |    |       ​| ​ | | + | |+-------+ |  |  +-------+ ​ ​|  ​|terminal |    |  ligne   ​ |  |  ​+------------+ ​ | | | 
- | |+-------+ |  |  |Clavier| ​  ​+---------+ ​   +----------+ ​   +-------+ ​ | | + | ||Clavier|-|--|->​|Drivers|--|->​| ​        ​| ​   |          |  ​|  ​|       TTY        ​| | | 
- | +----------+ ​ |  +-------+ ​                                            ​| | + | |+-------+ |  |  |Clavier| ​ ​|  ​+---------+ ​   +----------+ ​ ​|  ​+------------------+ | | 
- ​+---------------|--------------------------------------------------------+ | + | +----------+ ​ |  +-------+ ​ ​+-------------------------------+ ​                      | | 
-                 ​+----------------------------------------------------------++ ​+---------------|---------------------------------------------------------------------+ | 
 +                 +-----------------------------------------------------------------------+
 </​file>​ </​file>​
  
-  * Le matériel UART et ses drivers ont disparu, laissant la place aux **drivers vidéo et clavier**. +Le matériel UART et ses drivers ont disparu, laissant la place aux **drivers vidéo et clavier**. 
-  L'**émulateur de terminal** ​est désigné ​comme **terminal physique**.+ 
 +**Le terminal ​est émulé** au sein du noyau.\\ 
 +Le noyau nous le présente donc comme **terminal physique**.\\ 
 +Son émulateur fut **nommé Linux**.\\ 
 +Ce qui donna **le type** ''​linux'',​ pour le différencier des autres types de terminaux. 
 + 
 +----
  
 Avec les systèmes GNU/Linux modernes, sur un PC et un écran moderne, la **console** est un __terminal graphique__. Avec les systèmes GNU/Linux modernes, sur un PC et un écran moderne, la **console** est un __terminal graphique__.
Ligne 389: Ligne 416:
 <file config Deux terminaux virtuels (tty1 et tty2), utilisés pour l'​exécution d'un shell chacun.> <file config Deux terminaux virtuels (tty1 et tty2), utilisés pour l'​exécution d'un shell chacun.>
                ​+-----------------------------Logiciel---------------------------------+                ​+-----------------------------Logiciel---------------------------------+
-               ​+----------------------Espace-noyau-------------------+-----Espace-----+ +               ​+----------------------Espace-noyau------------------------+--Espace---+ 
-               ​| ​                                                    |  utilisateur ​  +               ​| ​            +---------Noyau---------+ ​ +--Drivers-TTY--+ | utilisat. ​
- ​+-Matériel-+ ​ |  +-------+ ​  ​+---------+ ​  ​+---+ ​  +-------+ ​  +---------+ ​  ​+-----+ | + ​+-Matériel-+ ​ |  +-------+ ​ ​|  ​+---------+ ​  ​+---+ ​ ​| ​ |  ​+---------+ ​ | |  ​+-----+ ​ 
- | +-----+ ​ |  |  |Drivers| ​  ​|         ​| ​  ​| ​  ​| ​  ​      ​|<=>​|/​dev/​tty1|<​=>​|shell| | + | +-----+ ​ |  |  |Drivers| ​ ​|  ​|         ​| ​  ​| ​  |<=|==|=>​|/​dev/​tty1|<​=|=|=>​|shell| ​ 
- | |Ecran|<​-|--|--| vidéo |<​--|Emulateur| ​  | D |   ​|Drivers  ​+---------+ ​  ​+-----+ | + | |Ecran|<​-|--|--| vidéo |<-|--|Emulateur| ​  | D |    +---------+ ​ | |  ​+-----+ ​ 
- | +-----+ ​ |  |  +-------+ ​  ​|   ​de ​   |<=>| D |<=>      ​                      + | +-----+ ​ |  |  +-------+ ​ ​|  ​|   ​de ​   |<=>| D |   ​| ​              | |           ​
- ​|+-------+ |  |  +-------+ ​  ​|terminal |   | L |   ​|  ​TTY  |   +---------+ ​  ​+-----+ | + ​|+-------+ |  |  +-------+ ​ ​|  ​|terminal |   | L |  |  ​ ​+---------+ ​ | |  ​+-----+ ​ 
- ​||Clavier|-|--|->​|Drivers|-->​| ​        ​| ​  ​| ​  ​| ​  ​      ​|<=>​|/​dev/​tty2|<​=>​|shell| | + ​||Clavier|-|--|->​|Drivers|--|->​| ​        ​| ​  ​| ​  |<=|==|=>​|/​dev/​tty2|<​=|=|=>​|shell| ​ 
- ​|+-------+ |  |  |Clavier| ​  ​+---------+ ​  ​+---+ ​  ​+-------+ ​  ​+---------+ ​  ​+-----+ ​+ ​|+-------+ |  |  |Clavier| ​ ​|  ​+---------+ ​  ​+---+ ​ ​| ​ |  ​+---------+ ​ | |  ​+-----+ ​ | 
- +----------+ ​ ​| ​ ​+-------+ ​                                                        + +----------+ ​ ​|  ​+-------+ ​ +-----------------------+ ​ +---------------+ |           ​
-               ​+-----------------------------------------------------+----------------++               ​+----------------------------------------------------------+-----------+ 
 +Alice a ouvert deux terminaux virtuels, sur son PC, démarrant chacun un shell.
 DDL : Discipline de ligne DDL : Discipline de ligne
 </​file>​ </​file>​
Ligne 478: Ligne 506:
  
 <file config Deux terminaux fenêtre émulés par le processus xterm> <file config Deux terminaux fenêtre émulés par le processus xterm>
-               ​+--------------------------Logiciel-------------------------+ +               +---------------------------Logiciel--------------------------+ 
-               +-Espace-noyau-------------------------+-Espace-------------+ +               ​+--------------Espace-noyau--------------+-Espace-utilisateur-
-               ​| ​               +-------------+       ​       ​utilisateur | +               ​| ​               +------Drivers PTY----+ |                    | 
-               ​| ​               | Drivers PTY |       |                    | +               ​| ​               ​|  ​+-----esclave----+ | |                    | 
-               ​| ​               ​|  ​+-------+  |  +----------+ ​  ​+-----+ ​   +               ​| ​        ​+---+  ​| ​ ​| ​ +----------+ ​ | | |     +-------+ ​     
-               ​| ​                ​| ​      |<​=|=>​|/​dev/​pts/​0|<​=>​|shell| ​   +               ​| ​        ​  ​|<=|==|=>​|/​dev/​pts/​0|<​=|=|=|====>| shell |      |  
- +-Matériel-+ ​ ​| ​ +---+  +---+  |  |esclave ​|  ​+----------+ ​  ​+-----+    |  ​ +               |         ​| ​  ​| ​ |  ​| ​ +----------+  | | |     ​+-------+ ​     | 
- ​| ​+------+  ​| ​ ​| ​  |  ​|   ​| ​ |  | (PTS) |  |  +----------+ ​  ​+-----+ ​   + +-Matériel-+  |  +---+  | |  |  |  +----------+ ​ | | |     +-------+ ​     
- ​| ​|Souris|-|--|->|  | D |<=|=>|       |<=|=>​|/​dev/​pts/​1|<​=>​|shell| ​   + ​| ​+------+  ​| ​ |   |  | D |<​=|==|=>​|/​dev/​pts/​1|<​=|=|=|====>| shell |        ​ 
- ​| ​+------ |  | |  ​| D |  |  +-------+ ​ |  +----------+ ​  ​+-----+ ​   + ​| ​|Souris|-|--|->|  | |  |  |  +----------+ ​ | | |     +-------+      | 
- ​|+-------+ |  |  | I |  | |  |  +------+ ​  ​      ​|                    | + | +------+ ​|  |  | R |  |   ​|  |  ​+----------------+ ​| |                    ​
- ​||Clavier|-|--|->​| V |  |   ​|<​=|=>​|maitre| ​  ​      ​|            +-----+ | + ​|+-------+ |  |  | I |  |   ​|  |      +------+ ​      ​| |                    | 
- ​|+-------+ |  |  | E |  +---+  |  |(PTM) |<==|=======|===========>​| ​    | | + ​||Clavier|-|--|->​| V |  |   ​|<​=|=====>​|maitre| ​      ​| |            +-----+ | 
- | +-----+ ​ |  |  | R |         ​| ​ +------+ ​  ​      ​|  +-----+ ​  ​|xterm| | + ​|+-------+ |  |  | E |  +---+  |      |(PTM) |<======|=|===========>​| ​    | | 
- | |Ecran|<​-|--|--| S |         ​+-------------+ ​      ​|  |serv.|<​=>​| ​    | | + | +-----+ ​ |  |  | R |         ​| ​     +------+ ​      ​| |  +-----+ ​  ​|xterm| | 
- | +-----+ ​ |  |  |   ​|<​==============================|=>​| ​ X  |   ​+-----+ | + | |Ecran|<​-|--|--| S |         +---------------------+ |  |serv.|<​=>​| ​    | | 
- ​+----------+ ​ |  +---+                               ​|  +-----+ ​          | + | +-----+ ​ |  |  |   |<================================|=>​| ​ X  |   ​+-----+ | 
-               ​+--------------------------------------+--------------------+ + ​+----------+ ​ |  +---+                                 ​|  +-----+ ​          | 
-DDL Discipline de ligne+               +----------------------------------------+--------------------+ 
 +Alice à ouvert deux terminaux fenêtre sur son PC. 
 +DDL Discipline de ligne
 </​file>​ </​file>​
  
Ligne 538: Ligne 568:
  
 <file config Deux accès distants au shell sur un ordinateur hôte> <file config Deux accès distants au shell sur un ordinateur hôte>
-+---------------------Logiciel-------------------+ +                          Hôte 
-+--------Espace-noyau-----------+-Espace---------+ ++-----------------Logiciel-----------------------+ 
-|        +-------------+           utilisateur ​++----------Espace-noyau----------+--Espace-------+ 
-|        | Drivers PTY |        |                ​+|        +------Drivers-PTY----+ |  utilisateur ​ 
-|        |  +------+ ​  ​       |  +---------+ ​  ​+|        |  +------+ ​          ​| |  +---------+ ​ 
-|        |  |      |<==|========|=>​|sshd@pts0| ​  ​+|        |  |      |<​==========|=|=>​|sshd@pts0|<=|==//=> Alice 
-+---+  ​|  |maître| ​  ​       |  +---------+ ​  ​+       |  |maître| ​          ​| |  +---------+ ​ 
-|   ​| ​ ​| ​ |(PTM) |   ​       |  +---------+ ​  ​++---+  ​| ​ |(PTM) |           ​| |  +---------+ ​ 
-| | |<​=|=>​| ​     |<==|========|=>​|sshd@pts1| ​  ​+| |   ​|<​=|=>​| ​     |<​==========|=|=>​|sshd@pts1|<=|==//=> Bob 
-| | |  |  +------+ ​  ​       |  +---------+ ​  ​+| |   ​|  |  +------+ ​          ​| |  +---------+ ​ 
-| | |  |  +-------+  |  +----------+ ​  ​+-----+ | +| | |  |  +--Esclave-(PTS)-+ | |               | 
-| |   ​|<=|=>|       |<=|=>​|/​dev/​pts/​0|<​=>​|shell| | +| | D |  |  ​| ​ +----------+ ​ | | |    ​+-----+ ​   
-+---+  ​|  ​|esclave|  |  +----------+ ​  ​+-----+ | +| | |<​=|==|=>​|/​dev/​pts/​0|<​=|=|=|===>​|shell| ​   
-       |  ​| (PTS) |  |  +----------+ ​  ​+-----+ | +|   |  |  |  +----------+ ​ | | |    ​+-----+ ​   |  
-        ​| ​      |<​=|=>​|/​dev/​pts/​1|<​=>​|shell| | +|   |  |  |  +----------+ ​ | | |    ​+-----+ ​   
-       ​|  ​+-------+  |  +----------+ ​  ​+-----+ | +| |   ​|<=|==|=>​|/​dev/​pts/​1|<​=|=|=|===>​|shell| ​   
-|        +-------------+ ​                      +| +---+  |  +----------------+ ​| |    ​+-----+ ​   
-+-------------------------------+----------------+ +|        +---------------------+ |               ​
-DDL : Discipline++--------------------------------+---------------+ 
 +Alice et Bob se sont connectés à distance sur l'​hôte pour ouvrir un shell. 
 +DDL : Discipline ​de ligne 
 +PTM : Drivers PTY maître 
 +PTS : Drivers PTY esclave
 </​file>​ </​file>​
  
Ligne 565: Ligne 599:
  
 <file config Accès à distance via un terminal virtuel> <file config Accès à distance via un terminal virtuel>
-   PC local    ​+---------------------------Logiciel------------------------+ ​     +----------------Logiciel-----------------+            ​PC local--------------------Logiciel----------------------+ ​     ​ 
-               +---------------Espace-noyau---------------+----------------+      +-Espace----------+----Espace-noyau-------+ +               +------------------Espace-noyau--------------+-Espace--+                     PC distant 
- ​+-Matériel-+ ​ |  +---+                                   ​| ​               |      |      utilisateur| ​                      | + +-Matériel-+  |  +---+                                     | utilis. |    ​+------------- ---Logiciel----------------+ 
- | +-----+ ​ |  |  | D |   ​+---+ ​  ​+---+ ​  ​+-------+   +---------+   +---+  |       +----------+   ​| ​        +---+   +---+ | + | +-----+ ​ |  |  | D |   ​+---+ ​  ​+---+ ​ +---------------+ ​ |         ​   +-Espace---------+-----Espace-noyau-------+ 
- | |Ecran|<​-|--|--| R |   | L |   ​| ​  ​| ​  ​      ​|<=>|/dev/tty1|<=>|ssh|<​=|==//​==|=>​|sshd@pts42|<​==|========>​|PTM|<​=>​| ​  | | + | |Ecran|<​-|--|--| R |   | L |   ​| ​  ​| ​  ​Drivers TTY  ​         ​      ​utilisateur ​                       
- | +-----+ ​ |  |  | I |<--| i |   | D |   ​|Drivers| ​  +---------+ ​  ​+---+  |      |  +----------+ ​  ​        ​+---+   | D | + | +-----+ ​ |  |  | I |<--| i |   | D |   +---------+ ​ ​| ​ |  ​+---+  |    |  +----------+ ​     +-----+ ​     ​+---+ |     ​ 
- ​|+-------+ |  |  | V |   | n |<=>| D |<​=>​| ​      ​                     ​                     ​                ​| D | | + ​|+-------+ |  |  | V |   | n |<=>| D |<=|=>|/dev/tty1|<=|==|=>|ssh|<​=|=//​=|=>​|sshd@pts42|<​=|====>​| PTM |<​====>​| D | | 
- ​||Clavier|-|--|->​| E |   | u |   | L |    ​TTY ​ ​| ​       ​| ​   Espace ​    ​| ​     | +-----+ ​  ​+-----------+ ​  ​+---+   ​| | + ​||Clavier|-|--|->​| E |   | u |   | L |  |  +---------+ ​ ​| ​ |  ​+---+  |    |  +----------+ ​ ​| ​    +-----+      | | 
- ​|+-------+ |  |  | R |-->| x |   ​| ​  ​| ​  |       ​| ​       ​|               ​| ​     | |shell|<​=>​|/​dev/​pts/​42|<​=>​|PTS|<​=>​| ​  | | + ​|+-------+ |  |  | R |-->| x |   ​| ​  ​| ​ |               ​| ​         ​       +-----+ ​   ​ +----PTS----+   ​| L | | 
- ​+----------+ ​ |  | S |   ​+---+ ​  ​+---+ ​  ​+-------+ ​       |  ​utilisateur  ​     | +-----+ ​  ​+-----------+   +---+   +---+ | + ​+----------+ ​ |  | S |   ​+---+ ​  ​+---+ ​ +---------------+ ​ ​| ​        ​| ​   |     ​|shell|<​===|=>​|/​dev/​pts/​42|<​=>​| ​  | | 
-               |  ​+---+                                    |               ​| ​     |                 ​| ​                      | +               |  ​+---+                                             ​   ​| ​    +-----+ ​   ​|  ​+-----------+ ​  +---+ | 
-               +-------------------------------------------+---------------+ ​     +-----------------+-----------------------+ ​        ​ +               ​+--------------------------------------------+---------+ ​   +----------------+------------------------+ 
-Linux : Émulateur ​de terminal ​                                                                   ​PC distant+Bob utilise ssh depuis une console virtuelle, pour se connecter et ouvrir un shell distant, sur le PC d'​Alice. 
 +Linux : L'​émulateur ​de terminal ​du noyau                                                                    
 DDL : Discipline de ligne            DDL : Discipline de ligne           
 PTM : Drivers PTY maître PTM : Drivers PTY maître
 PTS : Drivers PTY esclave PTS : Drivers PTY esclave
- 
 </​file>​ </​file>​
  
Ligne 587: Ligne 621:
  
 <file config Accès à distance via un terminal fenêtre>​ <file config Accès à distance via un terminal fenêtre>​
-   PC local    ​+-----------------------Logiciel-----------------------+ ​     +------------------Logiciel-----------------+ +            ​PC local-----------------Logiciel-----------------------+ ​   +----------------Logiciel------------------+ 
-               ​+--------Espace-noyau-------------+-Espace-------------+ ​     +-Espace----------+-----Espace-noyau--------+ +               +----------Espace-noyau---------+-Espace-------------+ ​   +-Espace----------+------Espace-noyau------+ 
- ​+-Matériel-+ ​ |  +---+                          |     ​utilisateur ​   |      |      utilisateur| ​                        ​+ ​+-Matériel-+ ​ |  +---+                        |     ​utilisateur ​   |    |      utilisateur| ​                       
- | +------+ |  |  |   ​| ​ +---+   +-----+   ​+----------+   ​+---+       ​     |  +----------+ ​  ​| ​        ​+-----+ ​  ​+---+ | + | +------+ |  |  |   ​| ​ +---+   +---PTS----+  ​| ​      +---+           |  +----------+ ​  ​| ​    ​+-----+ ​     +---+ | 
- | |Souris|-|--|->​| D |  |   |<=>| PTS |<​=>​|/​dev/​pts/​0|<​=>​|ssh|<​======|==//==|=>​|sshd@pts42|<​==|========>| PTM |<​=>​| ​  ​| | + | |Souris|-|--|->​| D |  |   ​|<​=>​|/​dev/​pts/​0|<​=|======>​|ssh|<​=======|=//​=|=>​|sshd@pts42|<​==|====>​| PTM |<====>​| ​| | 
- | +------+ |  |  | R |  | D |   +-----+ ​  +----------+ ​  ​+---+       ​     |  +----------+ ​  ​| ​        ​+-----+ ​  ​| D | | + | +------+ |  |  | R |  | D |   ​+----------+ ​ ​| ​      +---+           |  +----------+ ​  ​| ​    ​+-----+ ​     | D | | 
- ​|+-------+ |  |  | I |  | D |                   ​|                    |                      ​                  ​| | + ​|+-------+ |  |  | I |  | D |                 ​|                    |        +-----+ ​     ​+----PTS----+ ​  | | 
- ​||Clavier|-|--|->​| V |  | L |   ​+-----+ ​        ​|            +-----+ |      +-----+ ​  ​+-----------+ ​  ​+-----+ ​  | | + ​||Clavier|-|--|->​| V |  | L |     ​+-----+ ​    ​|            +-----+ |        ​|shell|<​====|=>​|/​dev/​pts/​42|<​=>​| ​  | | 
- ​|+-------+ |  |  | E |  |   ​|<​=>​| PTM |<========|===========>​| ​    | |      | |shell|<​=>​|/​dev/​pts/​42|<​=>​| PTS |<​=>​| ​  ​+ ​|+-------+ |  |  | E |  |   |<===>| PTM |<​====|===========>​| ​    | |        +-----+ ​     ​+-----------+ ​  ​+---+ 
- | +-----+ ​ |  |  | R |  +---+   ​+-----+ ​        ​|  +-----+ ​  ​|xterm| |      ​| ​+-----+   +-----------+   +-----+   +---+ | + | +-----+ ​ |  |  | R |  +---+     ​+-----+ ​    ​|  +-----+ ​  ​|xterm| |    +-----------------+------------------------+ 
- | |Ecran|<​-|--|--| S |                          |  |serv.|<​=>​| ​    ​| ​|      |                 ​| ​                        + | |Ecran|<​-|--|--| S |                        |  |serv.|<​=>​| ​    | |  
- | +-----+ ​ |  |  |   |<=========================|=>​| ​ X  |   ​+-----+ |      ​+-----------------+-------------------------+ + | +-----+ ​ |  |  |   ​|<​=======================|=>​| ​ X  |   ​+-----+ |                    PC distant 
- ​+----------+ ​ |  +---+                          |  +-----+ ​          ​| ​                     PC distant + ​+----------+ ​ |  +---+                        |  +-----+ ​          | 
-               +---------------------------------+--------------------++               ​+-------------------------------+--------------------+ 
 +Bob utilise ssh depuis un terminal fenêtre, pour se connecter et ouvrir un shell distant, sur le PC d'​Alice.
 DDL : Discipline de ligne DDL : Discipline de ligne
 PTM : Drivers PTY maître PTM : Drivers PTY maître
-PTS : Drivers PTY esclave 
 </​file>​ </​file>​
 +
 +==== Les consoles graphiques ====
 +
 +Une **consoles graphique *** est une **console système graphique**.\\
 +Elle permet de communiquer avec l'​ordinateur depuis sont démarrage.\\
 +Sa sortie est un graphique.
 +
 +Les consoles graphiques qui permettent d'​utiliser les machines virtuelles (qui disposent d'un système graphique) en sont l'​exemple.
 +
 +Une telle console affiche les messages du système et permet la communication entrante, depuis le démarrage de la machine virtuelle.\\
 +Une fois démarrée, elle permet d'​utiliser le système graphique.
 +
 +Les machines virtuelles sont vues comme des machines physiques distantes.\\
 +Pour qu'une console graphique (qui est locale) puisse communiquer avec une machine (virtuelle) distante, le réseau doit être utilisé.\\
 +Des projets comme
 +**VNC**((**VNC** est une suite logiciel historique, de type client/​serveur,​ qui permet l'​usage d'une console graphique connectée à système distant. Il a alors été développé un protocole réseau, qui établit, ​ la communication entre la console et la machine distante, par un flux graphique. [[https://​fr.wikipedia.org/​wiki/​VNC|(wikipedia)(fr) Virtual_Network_Computing]]))
 +ou
 +**SPICE**((**SPICE** est projet qui fourni une console graphique permettant d'​accéder à une machine virtuelle. La communication entre la console et la machine virtuelle est réalisée par un flux vidéo. [[https://​fr.wikipedia.org/​wiki/​SPICE_(protocole)|(wikipedia)(fr) SPICE (protocol)]] - [[http://​www.spice-space.org/​|(spice-space)(en)]]))
 +ont développés des protocoles réseaux, dont la console communique graphiquement avec la machine. ​
 +
 +  * **VNC** véhicule un flux graphique.
 +  * **SPICE** véhicule un flux vidéo.
 +
 +<​note>​Qui dit vidéo, dit graphisme et audio...\\
 +\\
 +LOL Pouvons-nous voir là, une //console système graphique audio// ?</​note>​
 +
 +----
 +
 +Un autre exemple de **console graphique** est celle que nous utilisons pour communiquer avec un BIOS graphique.
  
 ==== Les terminaux X ==== ==== Les terminaux X ====
Ligne 618: Ligne 682:
  
 <file config Accès à un ordinateur via un terminal X> <file config Accès à un ordinateur via un terminal X>
-                                           +------------------Logiciel---------------------+ +                                                       ​Ordinateur distant 
-          ​Terminal X                       +-Espace utilisateur--+-------Espace noyau------+ +          Terminal X                    ​+------------------Logiciel--------------------+ 
- +-Matériel-+  ​+------Logiciel------+ ​     ​| ​                    ​| ​                        | + +-Matériel-+  ​+------Logiciel-----+ ​   +-Espace utilisateur--+-----Espace noyau-------+ 
- | +------+ |  |  +---+             ​         ​+-----+ ​  ​+-----------+ ​  +-----+   +---+ | + | +------+ |  |  +---+                          +-----+ ​ ​|  ​+----PTS----+   +---+ | 
- | |Souris|-|--|->​| D |             ​         ​|Shell|<​=>​|/​dev/​pts/​42|<=>| PTS |<=>| D | | + | |Souris|-|--|->​| D |                          |Shell|<=|=>​|/​dev/​pts/​42|<​=>​| D | | 
- | +------+ |  |  | R |             ​         ​+-----+ ​  ​+-----------+ ​  +-----+ ​  | D | | + | +------+ |  |  | R |                          +-----+ ​ ​|  ​+-----------+ ​  | D | | 
- ​|+-------+ |  |  | I |    +-----+ ​ |      |  +-----+ ​  ​+-----+ ​ |         ​+-----+ ​  ​| L | | + ​|+-------+ |  |  | I |   ​+-----+ ​ |    |  +-----+ ​  ​+-----+ ​ |     ​+-----+ ​     | L | | 
- ​||Clavier|-|--|->​| V |    |     ​| ​ |      |  |     ​|<​=>​|xterm|<​=|========>| PTM |<​=>​| ​  | | + ​||Clavier|-|--|->​| V |   ​|     ​| ​ |    |  |     ​|<​=>​|xterm|<​=|====>​| PTM |<====>​| ​  | | 
- ​|+-------+ |  |  | E |    |Serv.| ​ |      |  |Serv.| ​  ​+-----+ ​ |         ​+-----+ ​  ​+---+ | + ​|+-------+ |  |  | E |   ​|Serv.| ​ |    |  |Serv.| ​  ​+-----+ ​ |     ​+-----+ ​     +---+ | 
- | +-----+ ​ |  |  | R |<==>​| ​ X  |<=|==//==|=>​| ​ X  |   ​+------+ |                         ​+ | +-----+ ​ |  |  | R |<​=>​| ​ X  |<​=|=//​=|=>​| ​ X  |   ​+------+ |                        
- | |Ecran|<​-|--|--| S |    |     ​| ​ |      |  |     ​|<​=>​|Clt. X| |    ​Ordinateur ​          + | |Ecran|<​-|--|--| S |   ​|     ​| ​ |    |  |     ​|<​=>​|Clt. X| |                        
- | +-----+ ​ |  |  +---+    +-----+ ​ |      |  +-----+ ​  ​+------+ |                         ​+ | +-----+ ​ |  |  +---+   ​+-----+ ​ |    |  +-----+ ​  ​+------+ |                        
- ​+----------+ ​ +--------------------+ ​     +---------------------+-------------------------++ ​+----------+ ​ +-------------------+ ​   +---------------------+------------------------+ 
 +Depuis un terminal X, Alice se connecte à la machine distante, pour y exécuter un shell.
 DDL : Discipline de ligne DDL : Discipline de ligne
 PTM : Drivers PTY maître PTM : Drivers PTY maître
Ligne 653: Ligne 718:
 D'​autres permettent d'en afficher plusieurs à l'​écran ou dans une fenêtre. D'​autres permettent d'en afficher plusieurs à l'​écran ou dans une fenêtre.
  
-===== Tuto =====+===== T0 - Tutos, préparatifs ​=====
  
-Ce tuto propose un voyage initiatique dans le monde des terminaux GNU/​Linux.\\ +Voila le moment où nous devons expliquer ​par la pratique.
-Après la présentation de la variables d'​environnement **TERM** et de la commande **stty**, il mettra en évidences ​par la pratique ​la théorie donnée plus haut.+
  
-Dans ce tuto, nous utilisons les termes suivants : +==== Itinéraire ==== 
 + 
 +Cette suite de tutos propose un voyage initiatique dans le monde des terminaux GNU/​Linux. 
 + 
 +  * T0 - Tutos préparatifs 
 +    * Itinéraire :-) **nous sommes ici** 
 +    * Recommandations (conseil pour un meilleur confort) 
 +    * Conventions (qui est quoi et qui somme nous) 
 +    * **Sauvegarde du fichier** ''​~/​.bashrc''​ 
 +    * Usage de root 
 +  * [[#​t1-le-type-term|T1 - Le type $TERM]] 
 +    * Présentation de la variable d'​environnement TERM. 
 +    * Son usage dans le fichier ''​.bashrc''​ pour coloriser l'​invite de l'​interpréteur bash. 
 +  * [[#​t2-configuration-avec-stty|T2 - Configuration avec stty]] 
 +    * Manipulation de la configuration d'un terminal. 
 +  * [[#​t3-la-commande-tty|T3. La commande tty]] 
 +    * Retourne le chemin du fichier périphérique du terminal utilisé. 
 +    * **Modification du fichier** ''​~/​.bashrc''​ 
 +  * (A venir) [[#​t4-les-terminaux-virtuels|T4 - Les terminaux virtuels]] 
 +    * Premières approches 
 +    * Visualisation des processus et des fichiers périphériques,​ **Modification du fichier** ''​~/​.bashrc''​ 
 +    * Colorisation de l'​invite de bash, **Modification du fichier** ''​~/​.bashrc''​ 
 +    * Graphisme avec le framebuffer.  
 +  * (A venir) [[#​t5-les-terminaux-fenetres|T5 - Les terminaux fenêtres]] 
 +    * Visualisation des processus et des fichiers périphériques 
 +    * Redimensionnement du terminal 
 +    * Graphisme avec l’émulateur xterm. 
 +  * (A venir) [[#​t6-les-terminaux-connectes|T6 - Les terminaux connectés]] 
 +    * Visualisation des processus et des fichiers périphériques associés ;  
 +  * (A venir) [[#​t7-les_peripheriques-tty-et-tty0|T7 - Les périphériques tty et tty0]] 
 +    * Deux fichiers de périphérique spéciaux. 
 +  * (A venir) [[#​t8-Le_peripherique-console|T8 - Le périphérique console]] 
 +    * Le terminal du noyau. 
 +  * [[#​tx-retour-a-l-etat-initial|TX - Retour à l'​état initial]] 
 +    * Fin des tutos. Le système est remis à son état initial. 
 +    * **Restauration du fichier** ''​~/​.bashrc''​ 
 + 
 + 
 +==== Recommandations ==== 
 + 
 +Pour un confort pratique, nous conseillons de réaliser cette suite de tutos dans une machine virtuelle. 
 + 
 +Car nous allons utiliser des terminaux virtuels en ligne de commande.\\ 
 +Il nous sera alors pas possible de lire les instruction affichées sur cette page. 
 + 
 +Disposer d'une machine virtuelle, dont la console est affichée dans une fenêtre, pour exécuter les tutos.\\ 
 +Permet d'​avoir accoté, la fenêtre du navigateur qui affiche les instruction de cette page. 
 + 
 +Pour créer facilement (sans ligne de commande) une machine virtuelle, voir le tuto  ​[[https://​debian-facile.org/​doc:​autres:​vm:​virt-manager|Virt-manager : Un gestionnaire graphique de machine virtuelle]]. 
 + 
 +---- 
 + 
 +Vous devriez déjà avoir une sauvegarde de votre fichier ''​.bashrc''​.\\ 
 +LOL Mais, nous ne jouerons pas là dessus.\\ 
 + 
 +... Alors, nous le sauvegarderons tout même plus bas ^_^ 
 + 
 +==== Conventions ==== 
 +  
 +Dans cette suite de tutos, nous utilisons les termes suivants : 
  
 ^  Désignations ​ ^  Noms  ^  Périphériques (fichiers) ​ ^ ^  Désignations ​ ^  Noms  ^  Périphériques (fichiers) ​ ^
Ligne 668: Ligne 791:
 |Avec **N**, le numéro du terminal (un décimal entier).||| |Avec **N**, le numéro du terminal (un décimal entier).|||
  
-Nous utilisons ici un PC nommé **pc24**, ​disposant d'un système Debian GNU/linux 11 (Bullseye).\\+---- 
 + 
 +Nous utilisons ici d'un PC disposant d'un système Debian GNU/linux 11 (Bullseye).\\
 Le bureau graphique **xfce4** y a été installé. Le bureau graphique **xfce4** y a été installé.
  
Ligne 674: Ligne 799:
 Ici, nous utilisons l'​utilisateur **DF**, pour nous connecter. Ici, nous utilisons l'​utilisateur **DF**, pour nous connecter.
  
-Une fois connecté, nous sommes sous le bureau d'​**Xfce**.\\+Une fois connecté, nous sommes sous le bureau d'​**Xfce**. 
 Nous lançons une **fenêtre de terminal** (ici, **xfce4-treminal**).\\ Nous lançons une **fenêtre de terminal** (ici, **xfce4-treminal**).\\
 ... L'​interpréteur de commande **bash** y est exécuté. ... L'​interpréteur de commande **bash** y est exécuté.
  
 <​note>​ <​note>​
-Les fichiers de configuration de bash de l'​utilisateur **DF**, n'ont pas été modifiés. +Les fichiers de configuration de bash de l'​utilisateur **DF**, n'ont pas été modifiés.\\ 
- +Les fichiers **~/​.profile** et **~/​.bashrc**,​ sont les fichiers donnés par défaut par un système Debian 11 GNU/Linux.
-  * Les fichiers **~/​.profile** et **~/​.bashrc**,​ sont les fichiers donnés par défaut par un système Debian 11 GNU/Linux+
-  * Et le fichier **~/​.bash_aliases**,​ n'​existe pas.+
 </​note>​ </​note>​
  
-<note warning> +==== Sauvegarde ==== 
-Au court de ce tuto, nous modifierons ​les fichiers :\\+ 
 +Plusieurs fois, nous modifierons notre fichier ''​.bashrc''​ : 
 + 
 +  * Au tuto [[#​t3-la-commande-tty|T3 - La commande tty]], pour ajouter le nom du terminal utilisé à l'​invite (le prompt) ​de l'​interpréteur de commande (bash). 
 +  * Au tuto [[#​t4-les-terminaux-virtuels|T4 - Les terminaux virtuels]]pour forcer la colorisation de l'​invite pour les terminaux virtuels et nous y ajouterons deux alias qui nous faciliterons l'​écriture de commande.
  
-  * **~/.bashrc** afin de : +Ces modifications pourraient être réalisées en exécutant leurs commandes directement dans le terminal, sans modifier le fichier ''​.bashrc''​.\\ 
-    * Décommenter la variable de colorisation **force_color_prompt**+Mais elles seraient appliquées qu'à l'interpréteur ​de commande de ce terminal (dans l'interface où elles ont été exécutéeset ne le seraient pas pour les autres.\\ 
-    * Modifier la variable de l'interpréteur **PS1** définissant ​l'invite ​de l'interpréteur (le **prompt**). Pour y ajouter ​le nom du terminal utilisé+C'est pourquoi nous plaçons nos commandes ​dans le fichier ​''​.bashrc'', qui lui, est interprété à chaque démarrage interactif ​de bash.
-  * Nous ajouterons aussi 2 **alias** ​dans le fichier ​**~/.bash_aliases** pour nous simplifier l'écriture ​de commande.+
  
 Ainsi ces modifications seront disponibles pour tous shells bash que nous exécuterons,​ lorsque nous ouvriront un nouveau terminal. Ainsi ces modifications seront disponibles pour tous shells bash que nous exécuterons,​ lorsque nous ouvriront un nouveau terminal.
  
-Nous allons doncsauvegarder ces deux fichiers, dans le répertoire **DF-tuto**,​ que nous créons dans notre répertoire personnel. Ainsi nous pourrons les restaurer à la fin du tuto.+<​note>​Avant de modifier le fichier ''​~/​.bashrc''​nous devons en réaliser une sauvegarde.\\ 
 +Ainsi nous pourrons restaurer son état actuelà la fin de notre voyage.\\ 
 + 
 +Nous le copions simplement ​dans le répertoire **''​~/​DF-tuto''​**, que nous créons ​préalablement, ​dans le répertoire personnel ​de notre utilisateur.
 </​note>​ </​note>​
  
Ligne 704: Ligne 834:
 # Copie du fichier .bashrc dans DF-tuto # Copie du fichier .bashrc dans DF-tuto
 cp -v .bashrc DF-tuto cp -v .bashrc DF-tuto
- 
-# Si pour votre utilisateur,​ le fichier .bash_aliases existe, copie le dans DF-tuto 
-[ -f .bash_aliases ] && cp -v .bash_aliases DF-tuto 
 </​code><​code>​ </​code><​code>​
 mkdir: création du répertoire '​DF-tuto'​ mkdir: création du répertoire '​DF-tuto'​
Ligne 713: Ligne 840:
  
 Voila qui est bien fait ;-) Voila qui est bien fait ;-)
 +
 +==== Root ====
  
 Nous utiliserons l'​utilisateur **root**((L'​utilisateur **root** est l'​administrateur de tout le système. Il a tout les droits sur tout. Il est aussi l'​utilisateur qui exécute les programmes nécessaires au fondement du système.)) via la commande **su**((La commande **[[doc:​systeme:​su|su]]** permet de changer d'​utilisateur,​ si nous en connaissons le mot de passe.)) pour exécuter des commandes sous son autorité. Nous utiliserons l'​utilisateur **root**((L'​utilisateur **root** est l'​administrateur de tout le système. Il a tout les droits sur tout. Il est aussi l'​utilisateur qui exécute les programmes nécessaires au fondement du système.)) via la commande **su**((La commande **[[doc:​systeme:​su|su]]** permet de changer d'​utilisateur,​ si nous en connaissons le mot de passe.)) pour exécuter des commandes sous son autorité.
  
-Nous installerons aussi des programmes avec la commande **apt-get**((La commande **[[doc:​systeme:​apt:​apt-get|apt-get]]** permet d'​installer,​ supprimer ou mettre à jour les programmes d'un système Debian GNU/​Linux.)) pour montrer les capacités graphique des terminaux.\\ +Le mot de passe root doit donc être connu.
-Seront installés : +
- +
-  * **Fbi** un visualiseur d'​image pour terminal virtuel. +
-  * **Imagemagick** pour convertir les formats d'​images. +
-  * Et le lecteur multi-médias **mplayer**,​ pour lire des vidéos. +
- +
-Ces programmes seront supprimés à la fin du tuto. +
- +
-Pour installer correctement des programmes, il nous est recommandé, ​de mettre à jour le système. +
- +
-<code root> +
-apt-get update && apt-get upgrade +
-</​code>​+
  
-==== Le type $TERM ====+=====T1 - Le type $TERM =====
  
 La variable d'​environnement **TERM** contient le type du terminal utilisé. La variable d'​environnement **TERM** contient le type du terminal utilisé.
Ligne 739: Ligne 855:
 Le système dispose d'une base de données, constituée de fichiers binaires, pour mémoriser toutes les différences. Chaque type de terminal dispose de son fichier décrivant ses capacités. Le système dispose d'une base de données, constituée de fichiers binaires, pour mémoriser toutes les différences. Chaque type de terminal dispose de son fichier décrivant ses capacités.
  
-La première base de données (1978) fut nommés **termcap**((**Termcap** est une base de données (obsolète) des capacités des terminaux. [[https://​fr.manpages.org/​termcap/​5|(manpages.org) termcap (5)]])) ​ pour "​terminal capcities"​ (capacités des terminaux).\\+La première base de données (1978) fut nommés **termcap**((**Termcap** est une base de données (obsolète) des capacités des terminaux. [[https://​fr.manpages.org/​termcap/​5|(manpages.org)(fr) termcap (5)]])) ​ pour "​terminal capcities"​ (capacités des terminaux).\\
 **Termcap** est noté obsolète sur de nombreux système (dont Debian GNU/​Linux).\\ **Termcap** est noté obsolète sur de nombreux système (dont Debian GNU/​Linux).\\
 Elle laisse la place à **terminfo**((**Terminfo** est la  base de données des capacités des terminaux, actuellement utilisée par les système GNU/Linux. [[https://​manpages.org/​terminfo/​5|(manpages.org)(en) terminfo (5)]])). Elle laisse la place à **terminfo**((**Terminfo** est la  base de données des capacités des terminaux, actuellement utilisée par les système GNU/Linux. [[https://​manpages.org/​terminfo/​5|(manpages.org)(en) terminfo (5)]])).
Ligne 754: Ligne 870:
 </​file>​ </​file>​
  
-Ainsi, un programme peut s'il le souhaite, consulter la variable **TERM**, ​ pour connaître le type de terminal qu'il utilise. Et consulter la base de données **terminfo**,​ via la librairie **ncurses**((**Ncurses** (« New curses » : « Nouvelles malédictions ») est une bibliothèque de programmation qui offre des routines indépendantes des terminaux. Elle permet de réaliser des interfaces avec des fenêtres, de créer des menus déroulants,​ d'​utiliser des couleurs, etc, sur des terminaux texte. En affranchissant les différentes syntaxes des séquences d'​échappement. Évidement **ncurses** ne fait pas de miracle et ne peut coloriser du texte sur des terminaux nono-chrome. Ainsi **ncurses** permet d'​obtenir le meilleur rendu d'​affichage pour chaque terminal. [[https://​wiki.debian.org/​fr/​Ncurses|(wiki.debian.org) Ncurses]], [[http://​www.linuxfocus.org/​Francais//​Archives/​lf-2002_03-0233.pdf|(linuxfocus.org) Introduction à Ncurses]].)) (ou pas), afin de communiquer correctement avec le terminal. Par exemple, il est inutile d'​envoyer la séquence d'​échappement affichant le texte en rouge, sur des terminaux mono-chrome.+Ainsi, un programme peut s'il le souhaite, consulter la variable **TERM**, ​ pour connaître le type de terminal qu'il utilise. Et consulter la base de données **terminfo**,​ via la librairie **ncurses**((**Ncurses** (« New curses » : « Nouvelles malédictions ») est une bibliothèque de programmation qui offre des routines indépendantes des terminaux. Elle permet de réaliser des interfaces avec des fenêtres, de créer des menus déroulants,​ d'​utiliser des couleurs, etc, sur des terminaux texte. En affranchissant les différentes syntaxes des séquences d'​échappement. Évidement **ncurses** ne fait pas de miracle et ne peut coloriser du texte sur des terminaux nono-chrome. Ainsi **ncurses** permet d'​obtenir le meilleur rendu d'​affichage pour chaque terminal. [[https://​wiki.debian.org/​fr/​Ncurses|(wiki.debian.org)(fr) Ncurses]], [[http://​www.linuxfocus.org/​Francais//​Archives/​lf-2002_03-0233.pdf|(linuxfocus.org)(fr) Introduction à Ncurses]].)) (ou pas), afin de communiquer correctement avec le terminal. Par exemple, il est inutile d'​envoyer la séquence d'​échappement affichant le texte en rouge, sur des terminaux mono-chrome.
  
 **Terminfo** reconnaît de nombreux types de terminal.\\ **Terminfo** reconnaît de nombreux types de terminal.\\
-La commande **toe -a**(([[https://​manpages.org/​toe|(nampage.org) toe (1) : Table of terminfo entries]])) en retourne la liste.+La commande **toe -a**(([[https://​manpages.org/​toe|(nampage.org)(en) toe (1) : Table of terminfo entries]])) en retourne la liste.
  
 <​note>​ <​note>​
 Nous n'​affichons pas ici la liste des terminaux connus par **terminfo**,​ car elle est trop longue.\\ Nous n'​affichons pas ici la liste des terminaux connus par **terminfo**,​ car elle est trop longue.\\
 \\ \\
-Nous demandons donc à la commande **wc -l**(([[https://​fr.manpages.org/​wc|(manpages.org) wc (1) : Afficher le nombre de lignes, de mots et d'​octets d'un fichier]])) d'en compter le nombre (nombre de ligne retourné par la commande **toe -a**).+Nous demandons donc à la commande **wc -l**(([[https://​fr.manpages.org/​wc|(manpages.org)(fr) wc (1) : Afficher le nombre de lignes, de mots et d'​octets d'un fichier]])) d'en compter le nombre (nombre de ligne retourné par la commande **toe -a**).
 </​note>​ </​note>​
  
Ligne 815: Ligne 931:
 Elle utilise la commande **less** pour pager les pages d'un manuel.\\ Elle utilise la commande **less** pour pager les pages d'un manuel.\\
 La commande **less** utilise **terminfo** pour obtenir les capacités du terminal utilisé.\\ La commande **less** utilise **terminfo** pour obtenir les capacités du terminal utilisé.\\
-Et **terminfo** consulte la variable ​**TERM** pour connaître le type du terminal utilisé.+La variable ​**TERM** renseigne alors quel fichier de **terminfo** doit être lu.
  
 <code user> <code user>
Ligne 894: Ligne 1010:
  
 La commande **infocmp __<​type>​__** permet de retourner via **terminfo**,​ les capacités d'un terminal. La commande **infocmp __<​type>​__** permet de retourner via **terminfo**,​ les capacités d'un terminal.
 +
 +<​note>​
 +Ci-dessous, nous utilisons une boucle **for**, qui va pour chaque type de terminal listé,\\
 +\\
 +  * Mémoriser le type dans la variable **t**,
 +  * Extraire le nombre de couleur qu'il supporte, de la sortie de la commande **infocmp**,​ dans la variable **c**.
 +Puis utiliser la commande **printf** pour afficher de façon formaté le contenu des variables **t** et **c**.
 +</​note>​
  
 <code user> <code user>
Ligne 943: Ligne 1067:
 ---- ----
  
-Sur un système Debian GNU/Linux, la variable **TERM** est utilisée pour savoir si le prompt (l'​invite) de bash peut-être colorisé.\+Sur un système Debian GNU/Linux, la variable **TERM** est utilisée pour savoir si le prompt (l'​invite) de bash peut-être colorisé.\\
 Cela se passe dans le fichier **.bashrc** situé dans le répertoire de l'​utilisateur. Cela se passe dans le fichier **.bashrc** situé dans le répertoire de l'​utilisateur.
  
Ligne 967: Ligne 1091:
 Sinon, il est définit sans. Sinon, il est définit sans.
  
-==== Configuration avec stty ====+===== T2 - Configuration avec stty =====
  
 La commande **stty** (set tty) permet d'​afficher ou de modifier la configuration d'un terminal. La commande **stty** (set tty) permet d'​afficher ou de modifier la configuration d'un terminal.
Ligne 1000: Ligne 1124:
 Ainsi configuré : Ainsi configuré :
  
-    ​* <​key>​C</​key>​+<​key>​c</​key>​ permet d’arrêter l'​exécution du processus du premier plan. Ou de mettre fin à l'​écriture d'une ligne de commande, sans l'​interprétée. +  ​* <​key>​C</​key>​+<​key>​c</​key>​ permet d’arrêter l'​exécution du processus du premier plan. Ou de mettre fin à l'​écriture d'une ligne de commande, sans l'​interprétée. 
-    * <​key>​C</​key>​+<​key>​d</​key>,​ envoie le signal de fin de fichier. Il indique la fin d'un flux. S'il est utilisé à l'​invite (au prompt) et qu'​aucune saisie ne soit effectuèe, le signal est envoyé à l'​entrée du terminal. Ce qui a pour effet d'​indiquer la fin du flux de l'​entrée standard et donc de fermer le terminal. Puisque le terminal, sans son entrée n'a plus aucun intérêt. +  * <​key>​C</​key>​+<​key>​\</​key>,​ émet le signal quit. 
-    * <​key>​C</​key>​+<​key>​z</​key>,​ suspend l'​exécution du processus du premier plan, pour le placé en arrière plan.  +  ​* <​key>​C</​key>​+<​key>​d</​key>,​ envoie le signal de fin de fichier. Il indique la fin d'un flux. S'il est utilisé à l'​invite (au prompt) et qu'​aucune saisie ne soit effectuée, le signal est envoyé à l'​entrée du terminal. Ce qui a pour effet d'​indiquer la fin du flux de l'​entrée standard et donc de fermer le terminal. Puisque le terminal, sans son entrée n'a plus aucun intérêt. 
-    * <​key>​C</​key>​+<​key>?</​key>,​ efface le caractère précédent le curseur (équivalent à <​key>​← Retour Arrière</​key>​) +  * <​key>​C</​key>​+<​key>​z</​key>,​ suspend l'​exécution du processus du premier plan, pour le placé en arrière plan. 
-    * <​key>​C</​key>​+<​key>​u</​key>​ "​coupe"​ du début de la ligne, jusqu'​au curseur. (La ligne entière, si le curseur est en fin de ligne.) +  * <​key>​C</​key>​+<​key>​s</​key>,​ suspend les processus (en premier plan et en arrière plan) qui écrivent sur la sortie standard. 
-    * <​key>​C</​key>​+<​key>​w</​key>​ "​coupe"​ du début d'un mot, jusqu'​au curseur. (Le mot entier, si le curseur est à la fin du mot.) +  * <​key>​C</​key>​+<​key>​q</​key>,​ reprend l'​exécution des processus suspendus par <​key>​C</​key>​+<​key>​s</​key>​. 
-    * <​key>​C</​key>​+<​key>​r</​key>,​ effectue une recherche dans l'​historique.+  ​* <​key>​C</​key>​+<​key>?</​key>,​ efface le caractère précédent le curseur (équivalent à <​key>​← Retour Arrière</​key>​) 
 +  * <​key>​C</​key>​+<​key>​u</​key>​"​coupe"​ du début de la ligne, jusqu'​au curseur. (La ligne entière, si le curseur est en fin de ligne.) 
 +  * <​key>​C</​key>​+<​key>​w</​key>​"​coupe"​ du début d'un mot, jusqu'​au curseur. (Le mot entier, si le curseur est à la fin du mot.) 
 +  * <​key>​C</​key>​+<​key>​r</​key>,​ effectue une recherche dans l'​historique.
  
 <​note>​ <​note>​
Ligne 1033: Ligne 1160:
 ''​isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc''​. ''​isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc''​.
  
-Pour une description des paramètres,​ voir la page du manuel de la commande **stty**(([[https://​fr.manpages.org/​stty|(fr.manpages.org) stty (1) : Modifier et afficher la configuration de la ligne de terminal]])) avec la commande ''​man stty''​.+Pour une description des paramètres,​ voir la page du manuel de la commande **stty**(([[https://​fr.manpages.org/​stty|(manpages.org)(fr) stty (1) : Modifier et afficher la configuration de la ligne de terminal]])) avec la commande ''​man stty''​.
  
 ---- ----
Ligne 1054: Ligne 1181:
 ---- ----
  
-L'​option **-g** (ou **--save**) de la commande **stty** retourne la configuration actuel du terminal dans un format compréhensible par **stty**.+L'​option **-g** (ou **<​nowiki>​--save</​nowiki>​**) de la commande **stty** retourne la configuration actuel du terminal dans un format compréhensible par **stty**.
  
 <code user> <code user>
Ligne 1242: Ligne 1369:
 </​note>​ </​note>​
  
-... Cela fonction, testons en mode brut.+... Cela fonctionne, testons en mode brut.
  
 <code user> <code user>
Ligne 1270: Ligne 1397:
 unset stty # Destruction de la variable stty unset stty # Destruction de la variable stty
 </​code>​ </​code>​
 +===== T3 - La commande tty =====
  
 +Dans un système GNU/Linux, un appareil (un périphérique) est caractérisé (accessible),​ par __un fichier spécial__, aussi nommé __fichier de périphérique__ (ou plus communément,​ __périphérique__).\\
 +Ces fichiers sont placés dans le répertoire ''/​dev''​ et ses sous-répertoires (dev pour device en anglais, appareil en français).
 +
 +**__Les périphériques des terminaux virtuels__**,​\\
 +Sont nommés **tty<​n>​** (avec <n>, un entier décimal, de 1 à 63).\\
 +Ils sont situés dans le répertoire ''/​dev''​ (''/​dev/​tty<​n>''​).\\
 +Par exemples : ''/​dev/​tty1'',​ ''/​dev/​tty2'',​ etc.
 +
 +<​note>​
 +Le fichier périphérique ''/​dev/​tty0''​ est particulier,​ il caractérise toujours le terminal virtuel qui est affiché.\\
 +(Actuellement le 7em, puisque nous affichons l'​interface graphique.)\\
 +Son usage est présenté dans la section [[#​t7_-_les_peripheriques_tty_et_tty0|T7 - Les périphériques tty et tty0]].
 +</​note>​
 +
 +**__Les périphériques des terminaux fenêtre ou connecté (les pseudo-terminaux)__**\\
 +Sont nommés **pts<​n>​** (avec <n> un entier décimal).\\
 +Leurs fichiers sont numérotés dans le répertoire ''/​dev/​pts''​ (''/​dev/​pts/<​n>''​).\\
 +Par exemples : ''/​dev/​pts/​0'',​ ''/​dev/​pts/​1'',​ etc.
 +
 +__**La commande tty**__,
 +
 +Retourne le chemin du fichier périphérique du terminal utilisé par la commande.
 +
 +<​note>​
 +La commande **tty**, ne doit pas être confondue avec le périphérique ''/​dev/​tty''​.\\
 +\\
 +Le fichier périphérique ''/​dev/​tty''​ est particulier,​ il caractérise toujours le terminal utilisé, qu'il soit virtuel, fenêtre ou connecté.\\
 +Son usage est présenté dans la section [[#​t7_-_les_peripheriques_tty_et_tty0|T7 - Les périphériques tty et tty0]].\\
 +\\
 +Le chemin de la commande **tty** est ''/​usr/​bin/​tty''​.\\
 +
 +<code user>
 +which tty
 +</​code><​code>​
 +/​usr/​bin/​tty
 +</​code>​
 +</​note>​
 +
 +<code user>
 +tty
 +</​code><​code>​
 +/dev/pts/0
 +</​code>​
 +
 +La commande nous indique que le terminal que nous utilisons, est le périphérique ''/​dev/​pts/​0''​.\\
 +Le chemin retourné montre que les terminaux fenêtres sont des pseudo-terminaux.
 +
 +Nous venons de redémarrer ; Avons  ouvert qu'un seul terminal fenêtre ; Et aucun PC distant n'est connecté au notre.\\
 +Alors le système n'a créé qu'un seul pseudo-terminal (celui que notre terminal utilise). Il l'a numéroté (et nommé) 0, le premier nombre disponible.\\
 +Mais, nous y reviendrons...
 +
 +----
 +
 +<note warning>
 +Par la suite, nous allons ouvrir plusieurs terminaux.\\
 +Pour mieux nous situer, nous allons insérer dans l'​invite de notre interpréteur de commande (le prompt), le nom du périphérique utilisé.\\
 +\\
 +L'​invite (le prompt) affichée, est le retour de l'​interprétation du contenu de la variable **PS1**, définit dans le fichier ''​~/​.bashrc''​.\\
 +\\
 +Nous pourrions modifier cette variable directement dans notre terminal, mais la modification ne serait pas disponible pour les autres terminaux que nous ouvrirons.\\
 +Pour qu'​elle le soit, elle doit être écrite dans le fichier ''​~/​.bashrc''​.\\
 +\\
 +**__Rappel__ :** A la section [[#​t0-tutos-preparatifs|T0 - Tutos, préparatifs]],​ nous avons sauvegardé le fichier ''​~/​.bashrc''​ afin de pouvoir le restaurer plus tard.
 +</​note>​
 +
 +Nous n'​allons pas insérer le chemin complet du périphérique dans l'​invite,​ mais son nom simplifié :
 +
 +  - La commande **tty** permet de récupérer le chemin du périphérique.
 +  - De ce chemin (''/​dev/​tty<​n>''​ ou ''/​dev/​pts/<​n>''​),​ est formé le nom du périphérique (tty<​n>​ ou pts<​n>​).\\
 +  - Puis, le nom obtenu est passé en majuscule, en étant ajouté au début du contenu de la variable PS1.
 +
 +<​note>​
 +L'​opérateur de redirection **>>​** permet d'​ajouter la sortie standard à la fin d'un fichier.\\
 +\\
 +Placer entre guillemets, simple ou double, une chaîne de caractère peut s'​étendre sur plusieurs lignes.\\
 +\\
 +Nous utilisons ici, les guillemets simples, pour que la chaîne de caractère ne soit pas interprété par bash.
 +</​note>​
 +
 +<code user>
 +echo '
 +# Insère le nom du terminal dans PS1
 +n=$(tty) # Récupère le chemin du périphérique dans la variable n
 +n=${n#/​dev/​} #​ Supprime /dev/ du chemin
 +n=${n/​\//​} #​ Supprime le / restant (si pseudo-terminal)
 +PS1=${n^^}:​$PS1 #​ Ajoute le nom en majuscule à PS1
 +unset n # Destruction de n
 +' >> ~/.bashrc
 +</​code>​
 +
 +Pour que cette modification soit prise en compte, il est nécessaire de réinterpréter le fichier ''​~/​.bashrc'',​ avec la commande **.** (point) ou **source**.
 +
 +<​note>​
 +La commande **.** (synonyme de **source**) est une commande interne de l'​interpréteur bash.\\
 +\\
 +Elle ne doit pas être confondue avec l'​usage du point dans les chemins de systèmes de fichiers :\\
 +\\
 +  * Le point seul **.**  ou **./** en début du chemin, indiquent le répertoire courant.
 +  * Un nom de fichier (ou de dossier) débutant par un point (**.<​nom>​**) , indique que cet élément est caché (par exemple ''​.bashrc''​).
 +</​note>​
 +
 +<code user>
 +. ~/.bashrc
 +</​code><​code>​
 +PTS0:​DF@pc24:​~
 +</​code>​
 +
 +Yes ! Maintenant, nous ne pouvons plus nous perdre.\\
 Nous allons maintenant nous intéresser aux terminaux virtuels. Nous allons maintenant nous intéresser aux terminaux virtuels.
  
 +===== TX - Retour à l'​état initial =====
 +
 +... Nous arrivons à la fin de cette suite de tutos.\\
 +Nous remettons ici le système, tel qu'il était lorsque nous avons commencé notre voyage.
 +
 +Le fichier ''​~/​.bashrc''​ **doit être restauré**.
 +
 +<code user>cd
 +cp -v ~/​DF-tuto/​.bashrc .
 +</​code><​code>​
 +'​DF-tuto/​.bashrc'​ -> '​./​.bashrc'​
 +</​code>​
 +
 +Et le répertoire ''​~/​.DF-tuto''​ **supprimé**.
 +
 +<code user>rm -vrf ~/DF-tuto
 +</​code><​code>​
 +'​DF-tuto/​.bashrc'​ supprimé
 +répertoire '​DF-tuto'​ supprimé
 +</​code>​
 +
 +Voila notre voyage est terminé.\\
 +La compagnie Debian-Facile vous remercie,\\
 +Et espère que vous avez réalisé un bon voyage.
 +8-)
atelier/chantier/terminaux-et-consoles-explications.1686687938.txt.gz · Dernière modification: 13/06/2023 22:25 par agp91

Pied de page des forums

Propulsé par FluxBB