![]() Notice they don't use \e3J, hence why clear only clears the screen, but not the scrollback.Iomenu(1) is another dmenu(1) for the terminal, but with support for categories. We can re-create the same output with printf '\e[H \e2J': $ printf '\e[H \e2J' | xxd All it seems to do is product some output, which we can inspect with xxd: $ clear | xxd These control sequences are actually how the built-in clear ( /usr/bin/clear) command works. This could have been more explicitly written as \e[1 1H A sequence such as CSI 5H is a synonym for CSI 1 5H as well as CSI 17 H is the same as CSI 17H and CSI 17 1H The values are 1-based, and default to 1 (top left corner) if omitted. This is an instance of the "CUP - Cursor Position" command, which has the form CSI n m H, The start of an escape sequence ( \e), containing a control sequence ( [) with argument H. Hence the need for the \e[2J command above. If n is 3, clear entire screen and delete all lines saved in the scrollback buffer (this feature was added for xterm and is supported by other terminal applications)."ĭespite the description on Wikipedia, it appears that this isn't actually clearing the screen in iTerm and the default Terminal, only the scrollback buffer was cleared. The n value is set to 3 in this case, which invokes the third variant: The start of an escape sequence ( \e), containing a control sequence ( [) with argument 3J If n is 2, clear entire screen (and moves cursor to upper left on DOS ANSI.SYS). The n value is set to 2 in this case, which invokes the second variant: This is an instance of the "ED – Erase in Display" command, which has the form CSI n J The start of an escape sequence ( \e), containing a control sequence ( [) with argument 2J Knowing this, we can split up the string into its 3 parts: I use the \e[ representation, because it's shorter than \x1B\x5B, and easier to read.Īs we can see, there are two ANSII escape sequences here, each of which are the "control sequence introducer" form, called with different arguments. They all start with the form ESC CSI, where ESC is the escape character just mentioned, and CSI is the value [ (or 0x5B in hex) One kind of ANSI escape sequence are the "Control Sequence Introducer" commands. printf can print an this character using \e (or by its octal value \033, or its hex value \x1B). Each ANSI escape sequence starts with the "ESC" (escape) character, it's a non-printable ASCII character (meaning it has no visual glyph representation like 1 or a). SYNCTERM SCROLLBACK BUFFER SERIESThis uses a series of ANSI escape sequences. It doesn't need the window to be in the foreground (unlike some AppleScript solutions), either. SYNCTERM SCROLLBACK BUFFER CODEHere's code that works for both macOS' Terminal, and iTerm2. If you put this in a shell script that you don’t know for certain will only ever be run with Terminal, you should check that $TERM_PROGRAM is Apple_Terminal before sending it.) (The clear command looks up the appropriate sequence for clearing the screen for the current terminal, but the “erase scroll-back” escape sequence is custom and must be hard-coded. This allows you to erase one or the other, or both by sending two escape sequences.įor example, you can clear the screen and the scroll-back with the following shell command: clear
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |