Ctrl + L no terminal

35

Eu acidentalmente digitei ctrl + L no terminal e minha janela de terminal pulou um tamanho de 'tela cheia'. Olhei para os atalhos de teclado em "Editar" - > "Atalhos de teclado" e não encontrei esse atalho.

O que ctrl + L faz e onde é definido?

    
por Parto 14.03.2014 / 16:16

4 respostas

52

ctrl + L apenas apaga a tela do terminal.

É o atalho de teclado equivalente ao comando clear .

É uma propriedade de bash , portanto você não a encontrou em atalhos de teclado no seu terminal do gnome. 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.

Veja uma lista detalhada de Atalhos de teclado Bash .

    
por souravc 14.03.2014 / 16:20
16

Se o shell que você está usando não estiver interceptando, você está digitando um caractere "Form-feed" no seu terminal. Se o aplicativo terminal não interceptar ou usar o pressionamento de tecla de alguma forma, Ctrl + Carta será traduzido para o código ASCII da letra menos 64 (1). 65 é o código ASCII de 'A', 'L' é a décima segunda letra - > código 76. Se o shell não souber o que fazer do código, ele imprime.

A impressão de um caractere FF resultou em uma nova página em uma impressora de linha e em uma tela clara no terminal (sim, usei um VT -52 então, a 300 baud).

Então, Ctrl + L é 12, que é FF. Da mesma forma, Ctrl + Eu é um TAB, e Ctrl + G toca o sino --- se o terminal ou o shell não o interceptar, como Ctrl + C por exemplo.

Aviso da outra resposta: parece que o bash do intercepta o CTRL-L e faz um clear . Bom toque que os autores de bash associaram a chave a um comando que fará mais ou menos o mesmo que o código ASCII nos terminais antigos!

Por outro lado, no meu zsh a combinação CTRL-I funciona como TAB e CTRL-H como um Backspace (2).

Old nice ASCII ... (note que a letra L está na coluna 4, linha 12, tem código ASCII 4 * 16 + 12 = 76).

Imagemoriginal aqui , de artigo da wikipedia sobre ASCII .

  Notas de rodapé:

(1) Ctrl realmente usado para limpar o bit 7.

(2) esta é a fonte da piada "não conseguir remover a palavra" que você encontra por vezes, como por exemplo "esta foi uma má idéia" ... (normalmente uma palavra mais strong do que ruim!)

    
por Rmano 14.03.2014 / 16:31
7

Control-L é interceptado e interpretado por bash (na verdade, por a biblioteca readline , que lida com edição interativa na linha de comando). Está ligado à função clear-screen , como escreveu @souravc.

Nota sobre o significado de Control-L : Ele é definido como Feed de Formulário na tabela de caracteres ASCII, mas isso não significa nada, a menos que algum programa o interprete de acordo. O terminal não limpa a tela quando vê um feed de formulário, como você pode verificar salvando um ^ L em um arquivo e imprimindo o arquivo com cat . Quando bash/readline vê o ^L , ele executa a função clear-screen . Isso envia uma sequência de caracteres que é compreendida pelo emulador de terminal (conforme descrito por termcap ou terminfo) e tem o efeito de limpar a tela.

Em impressoras muito antigas, um ^L avança o papel para começar a imprimir na folha seguinte, daí o nome "feed de formulário". Mas terminais modernos e emuladores de terminal seguem um padrão ANSI mais novo, no qual os comandos de controle são multi-caracteres "códigos de escape" que começam com ^[ (escape). Quando o bash vir seu ^L , ele provavelmente está enviando a sequência de dois comandos ESC [ H ESC [ J , que se move para o canto superior esquerdo da tela e limpa tudo abaixo dela (daí a tela inteira).

    
por alexis 15.03.2014 / 14:00
0

Como todos já explicaram muito bem o que Ctrl + L é e faz, mas ninguém explicou como "inverter" o comando, aqui alguns comandos que você pode digitar para te levar de volta ao que você estava fazendo:

history

fornecerá os últimos 20 comandos que você digitou.

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

fornecerá as últimas 20 linhas de saída de qualquer instalação de pacote que você esteja executando

    
por Fabby 03.05.2018 / 21:42