Ctrl + L dans le terminal

34

J'ai accidentellement tapé ctrl + L dans le terminal et ma fenêtre de terminal a sauté une taille "criarde". J'ai regardé les raccourcis clavier dans "Edit" - & gt; "Raccourcis clavier" et n'a pas trouvé ce raccourci.

Que fait ctrl + L et où est-il défini?

    
posée Parto 14.03.2014 - 16:16
la source

4 réponses

51

ctrl + L effacez simplement l’écran du terminal.

C'est le raccourci clavier équivalent à la commande clear .

C'est la propriété de bash , vous ne l'avez donc pas trouvé sous les raccourcis clavier dans votre gnome-terminal. De man bash :

clear-screen (C-l)
          Clear the screen leaving the current line  at  the  top  of  the
          screen.   With  an  argument,  refresh  the current line without
          clearing the screen.

Consultez la liste détaillée des raccourcis clavier Bash .

    
réponse donnée souravc 14.03.2014 - 16:20
la source
16

Si le shell que vous utilisez ne l’intercepte pas, vous tapez un caractère "Form-Feed" dans votre terminal. Si l'application du terminal n'intercepte pas ou n'utilise pas la frappe d'une manière ou d'une autre, Ctrl + Letter est traduit dans le code ASCII de la lettre moins 64 (1). 65 est le code ASCII de 'A', 'L' est la 12ème lettre - & gt; code 76. Si le shell ne sait pas quoi faire du code, il l’imprime.

L'impression d'un caractère FF a donné lieu à une nouvelle page sur une imprimante ligne et à un écran clair sur le terminal (oui, j'ai utilisé une VT -52 à l'époque, à 300 bauds).

Donc, Ctrl + L est 12 ce qui est FF. De la même manière, Ctrl + I est une tabulation et Ctrl + G sonne la cloche --- si le terminal ou le shell ne l’intercepte pas, comme Ctrl + C par exemple.

Remarquez d'après l'autre réponse: il semble que bash do intercepte CTRL-L et effectue un clear . Bon contact que les auteurs bash ont associé la clé à une commande qui fera plus ou moins la même chose que le code ASCII sur les anciens terminaux!

Par contre, dans zsh la combinaison CTRL-I fonctionne comme TAB et CTRL-H comme Backspace (2).

Ancienne belle ASCII ... (remarquez que la lettre L est à la colonne 4, rangée 12, elle a le code ASCII 4 * 16 + 12 = 76).

Image originale ici , article de Wikipedia sur ASCII .

  Notes de bas de page:

(1) Ctrl était vraiment utilisé pour effacer le bit 7.

(2) il s’agit de la source de la blague "échec pour supprimer le mot" que vous trouvez parfois comme par exemple "c’était une mauvaise ^ H ^ H ^ pas si belle idée" ... (avec normalement un mot plus fort mauvais!)

    
réponse donnée Rmano 14.03.2014 - 16:31
la source
7

Control-L est intercepté et interprété par bash (en fait par la bibliothèque readline , qui gère l'édition interactive sur la ligne de commande). Il est lié à la fonction clear-screen , comme @souravc l'a écrit.

Remarque sur la signification de Control-L : Il est défini en tant que flux de formulaire dans la table de caractères ASCII, mais cela ne signifie rien si un programme ne l’interprète pas en conséquence. Le terminal ne supprime pas l'écran lorsqu'il voit un flux de formulaire, comme vous pouvez le vérifier en enregistrant un ^ L dans un fichier et en imprimant le fichier avec cat . Lorsque bash/readline voit ^L , il exécute la fonction clear-screen . Cela envoie une séquence de caractères comprise par votre émulateur de terminal (comme décrit par termcap ou terminfo), et a pour effet d'effacer l'écran.

Dans les imprimantes très anciennes, un ^L ferait avancer l'impression du papier sur la feuille suivante, d'où le nom "form feed". Mais les terminaux modernes et les émulateurs de terminaux suivent une norme ANSI plus récente, dans laquelle les commandes de contrôle sont multi-caractères "codes d'échappement" . cela commence par ^[ (échapper). Lorsque bash voit votre ^L , il envoie probablement la séquence à deux commandes ESC [ H ESC [ J , qui se déplace en haut à gauche de l'écran et efface tout ce qui se trouve en dessous (d'où l'écran entier).

    
réponse donnée alexis 15.03.2014 - 14:00
la source
0

Comme tout le monde a déjà bien expliqué ce que Ctrl + L est et est, mais personne n’a expliqué comment "renverser" la commande, voici quelques commandes que vous pouvez taper pour vous ramener à ce que vous faisiez:

history

vous donnera les 20 dernières commandes que vous avez tapées.

tail --lines=20 /var/log/dpkg.log

vous donnera les 20 dernières lignes de sortie de toutes les installations que vous avez effectuées

    
réponse donnée Fabby 03.05.2018 - 21:42
la source

Lire d'autres questions sur les étiquettes