PuTTY: clear scrollback from commandline

27

15

When I connect to my server via PuTTY, I can clear the visible screen with the clear command.

However, I can still scroll backwards in PuTTY's GUI to see the old stuff. I am aware of PuTTY's Clear Scrollback feature, but that requires mouse clicking.

I'd like to perform that exact same "Clear Scrollback" operation, but from the commandline.

Is it possible?

I read this site, which seems to indicate so.

However, my experiments have failed. For instance:

printf '\033[3J'

Does nothing, for me.

I may not be understanding the meaning of CSI 3 J in that second link, though...

jwd

Posted 2013-02-22T00:31:02.347

Reputation: 2 652

What version of PuTTY are you using? The page indicates the feature works in PuTTY 0.59 and above. I have PuTTY 0.60 and it works for me. Note it only clears the scrollback buffer, it doesn't clear the screen. (If I have a scroll bar I can actually scroll, then use this sequence, I notice the scroll bar become disabled because there's suddenly nothing available to scroll to. But the currently displayed screen remains in place.) – Bavi_H – 2013-02-22T02:56:24.690

@Bavi_H: ah, thank you - I was not realizing that it won't affect the currently displayed text. I see it is working, too. The full solution I want is clear && printf '\033[3J'. If you make an answer, I'll accept it. – jwd – 2013-02-22T03:10:19.547

Answers

33

The CSI 3 J sequence to clear the scrollback buffer was added to PuTTY 0.59. (On the wish request page for this feature see the "fixed-in" line, or go to the PuTTY changes page and search for CSI 3 J.)

As jwd mentioned, you can enter printf '\033[3J' on a command line to send this sequence to the PuTTY. Be aware this only clears the scrollback buffer, it doesn't clear the screen. If you have a scroll bar you can actually scroll, then use this sequence, you'll see the scroll bar become disabled because there's suddenly nothing available to scroll to. But the currently displayed screen remains in place.

As jwd mentioned, you can clear both the screen and the scrollback buffer using clear && printf '\033[3J'

Bavi_H

Posted 2013-02-22T00:31:02.347

Reputation: 6 137

And for those seeking some light reading about control codes: https://www.xfree86.org/4.8.0/ctlseqs.html (: This one is in under CSI P s J

– jwd – 2017-10-10T14:58:51.763

11

If you're accustomed, as I am, to using Ctrl+L for the Reset terminal option available in PuTTY's system menu, then you might find it helpful to enable Configuration -> Window -> Behavior -> "System menu appears on ALT-Space".

Then when you hit Alt+Space, the option for "Clear scrollback" is triggered by L (lowercase; no Shift). Thus, reset + clear becomes the charmingly-mnemonic combination of Ctrl+L and Alt+Space L without any pesky mousing or clutter in your shell history.

ConfexianMJS

Posted 2013-02-22T00:31:02.347

Reputation: 211

Works and is easy to remember :) – Wyrmwood – 2017-04-21T19:44:02.953

Not bad, though FYI: you can also prevent cluttering your shell history by prefixing a command with a space. – jwd – 2017-12-26T22:58:36.117

6

Create a script file and place it in a path-included folder:

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

Press CTRL+d to save and exit

Change permission on file:

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

Now you can use the cmd cls :-)

MrCalvin

Posted 2013-02-22T00:31:02.347

Reputation: 180

1

The solution for me was to transmit '\033\143' characters:

printf("\033\143");

This clears the terminal screen and puts the cursor back in the upper left corner.

eschick

Posted 2013-02-22T00:31:02.347

Reputation: 11

1(1) The question asks for a command-line (i.e., shell) command.  This is not a shell command, it is a line of C code; as such, it is not an answer to this question.  (2) This post would be slightly more useful if you said what the \143 character is, and how it relates to this question, ideally with citations. – Scott – 2017-02-15T19:26:07.953

1For those wondering, this corresponds to the "full reset" escape code (ESC c). ASCII c has value 99 which is octal 143. This will do a bunch of other things in addition to clearing the scrollback, just FYI. – jwd – 2017-10-10T15:07:12.970

1

There is an option in putty where you can uncheck the default scroll back behaviour. Just uncheck the option "Push erased text into scrollback".

Putty Settings image

After this when you issue the clear command it will erase the screen and will not put the previous screen contents in the scroll back.

user3133668

Posted 2013-02-22T00:31:02.347

Reputation: 11