web-dev-qa-db-fra.com

Ctrl + L dans le terminal

J'ai tapé accidentellement ctrl + L dans le terminal et la fenêtre de mon terminal a sauté d’une taille "écran". J'ai regardé les raccourcis clavier dans "Edition" -> "Raccourcis clavier" et je n'ai pas trouvé ce raccourci.

Qu'est-ce que ctrl + L faire et où est-il défini?

40
Parto

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

C'est l'équivalent de raccourci clavier de la commande clear -xref

C'est la propriété de bash, donc vous ne l'avez pas trouvé sous 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.

Voir une liste détaillée de Raccourcis clavier Bash .

57
souravc

Si le shell que vous utilisez ne l'intercepte pas, vous tapez un caractère "Form-feed" dans votre terminal. Si l'application de terminal n'intercepte pas ou n'utilise pas la frappe d'une manière quelconque, Ctrl+ Letter est traduit dans le code ASCII de la lettre moins 64 (1). 65 est le ASCII code de 'A', 'L' est la 12ème lettre -> 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 par ligne et à un écran clair sur le terminal (oui, j'ai utilisé un VT-52 à l'époque, à 300 bauds).

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

Remarque de l’autre réponse: il semble que bash fasse l’interception CTRL-L et faites un clear. Belle idée que les auteurs de bash aient associé la clé à une commande qui fera plus ou moins la même chose que le code ASCII sur les anciens terminaux!

D'autre part, dans mon zsh la combinaison CTRL-I travailler en tant que TAB et CTRL-H comme un Backspace(2).

Old Nice ASCII ... (remarquez que la lettre L est à la colonne 4, ligne 12, elle a ASCII code 4 * 16 + 12 = 76).

Image from Wikimedia commons

Image originale ici , de article de Wikipédia en ASCII .


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

(2) c’est la source de la blague "échec de la suppression de Word" que vous trouvez parfois, par exemple, "c’était une mauvaise idée ..."

17
Rmano

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

Remarque sur la signification de Control-L: Il est défini comme Form Feed dans la table des caractères ASCII, mais cela ne signifie rien à moins qu'un programme l'interprète en conséquence. Le terminal n'efface pas l'écran lorsqu'il voit un 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 le ^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 efface l'écran.

Dans les très anciennes imprimantes, un ^L ferait avancer l'impression sur la feuille suivante, d'où le nom "formulaire d'alimentation". Mais les terminaux modernes et les émulateurs de terminaux suivent une norme ANSI plus récente, dans laquelle les commandes de contrôle sont composées de plusieurs caractères "codes d'échappement" qui commencent par ^[ (échappement). Lorsque bash voit votre ^L, il envoie probablement la séquence de 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ù la totalité de l'écran).

7
alexis

Comme tout le monde a déjà expliqué assez bien quoi Ctrl+L est et ne fait, mais personne n’a expliqué comment "inverser" 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 toute installation de paquet que vous effectuiez

0
Fabby