PuTTY: limpar scrollback da linha de comando

27

Quando eu me conecto ao meu servidor via PuTTY, posso limpar a tela visível com o clearcomando

No entanto, ainda posso rolar para trás na GUI do PuTTY para ver as coisas antigas. Estou ciente do recurso Clear Scrollback do PuTTY , mas isso requer clicar com o mouse.

Eu gostaria de executar exatamente a mesma operação "Clear Scrollback", mas a partir da linha de comando.

É possível?

Eu li este site , o que parece indicar isso.

No entanto, minhas experiências falharam. Por exemplo:

printf '\033[3J'

Não faz nada para mim.

Talvez eu não esteja entendendo o significado CSI 3 Jdesse segundo link ...

jwd
fonte
Qual versão do PuTTY você está usando? A página indica que o recurso funciona no PuTTY 0.59 e superior. Eu tenho PuTTY 0,60 e funciona para mim. Observe que apenas limpa o buffer de rolagem, não limpa a tela. (Se eu tiver uma barra de rolagem que eu possa realmente rolagem, em seguida, usar essa seqüência, noto a barra de rolagem tornar-se desativado porque não há de repente nada disponível para se deslocar até Mas os restos de tela atualmente exibida no lugar..)
Bavi_H
@ Bavi_H: ah, obrigado - eu não estava percebendo que isso não afetaria o texto exibido no momento. Eu vejo que está funcionando também. A solução completa que eu quero é clear && printf '\033[3J'. Se você responder, eu aceito.
jwd

Respostas:

32

A CSI 3 Jsequência para limpar o buffer de rolagem foi adicionada ao PuTTY 0.59. (Na página de solicitação de desejo para esse recurso, consulte a linha "entrada fixa" ou acesse a página de alterações do PuTTY e procure por CSI 3 J).

Como jwd mencionado, você pode entrar printf '\033[3J'em uma linha de comando para enviar essa sequência ao PuTTY. Esteja ciente de que isso apenas limpa o buffer de rolagem, não limpa a tela. Se você tiver uma barra de rolagem, poderá realmente rolar e, em seguida, usar esta sequência, verá a barra de rolagem desabilitada porque, de repente, não há nada disponível para rolagem. Mas a tela exibida atualmente permanece no lugar.

Como jwd mencionado, você pode limpar a tela e o buffer de rolagem usando clear && printf '\033[3J'

Bavi_H
fonte
E para aqueles que procuram uma leitura leve sobre os códigos de controle: xfree86.org/4.8.0/ctlseqs.html (: Este está em underCSI P s J
jwd 10/10
11

Se você está acostumado, como eu, a usar Ctrl+La Reset terminalopção disponível no menu do sistema do PuTTY, pode ser útil habilitá-lo Configuration -> Window -> Behavior -> "System menu appears on ALT-Space".

Então, quando você pressiona Alt+Space, a opção para "Clear scrollback"é acionada por L(minúsculas; sem Shift). Assim, reset + cleartorna-se a combinação charmosamente mnemônica de Ctrl+Le Alt+Space Lsem qualquer incômodo irritante ou desordem em sua história de conchas.

ConfexianMJS
fonte
Obras e é fácil de lembrar :)
Wyrmwood
Nada mal, apesar de FYI: você também pode impedir a bagunça no histórico do shell, prefixando um comando com um espaço.
jwd
6

Crie um arquivo de script e coloque-o em uma pasta incluída no caminho:

$cat > /usr/local/bin/cls
#!/bin/bash
clear
printf '\033[3J'

Pressione CTRL + d para salvar e sair

Alterar permissão no arquivo:

chmod a+x /usr/local/bin/cls

Agora você pode usar o cmd cls :-)

MrCalvin
fonte
1

A solução para mim foi transmitir caracteres '\ 033 \ 143':

printf ("\ 033 \ 143");

Isso limpa a tela do terminal e coloca o cursor de volta no canto superior esquerdo.

eschick
fonte
1
(1) A pergunta pede um comando de linha de comando (ou seja, shell). Este não é um comando shell, é uma linha de código C; como tal, não é uma resposta para esta pergunta. (2) Este post seria um pouco mais útil se você dissesse qual é o \143personagem e como ele se relaciona com essa pergunta, idealmente com citações.
Scott
1
Para quem está se perguntando, isso corresponde ao código de escape "redefinição total" ( ESC c). ASCII ctem um valor 99que é octal 143. Isso fará várias outras coisas, além de limpar a rolagem, apenas para sua informação.
jwd
1

Há uma opção na massa em que é possível desmarcar o comportamento padrão de rolagem para trás. Basta desmarcar a opção "Enviar texto apagado para rolagem".

Imagem de Configurações da massa de vidraceiro

Depois disso, quando você emitir o comando clear, ele apagará a tela e não colocará o conteúdo da tela anterior na rolagem de volta.

user3133668
fonte