# ESCAPE SEQUENCES Contrary to popular belief, there is no issue in utilizing raw escape sequences. Using `tput` abstracts the same ANSI sequences as if printed manually. Worse still, `tput` is not actually portable. There are a number of `tput` variants each with different commands and syntaxes (*try `tput setaf 3` on a FreeBSD system*). Raw sequences are fine. ## Text Colors **NOTE:** Sequences requiring RGB values only work in True-Color Terminal Emulators. | Sequence | What does it do? | Value | | -------- | ---------------- | ----- | | `\e[38;5;m` | Set text foreground color. | `0-255` | `\e[48;5;m` | Set text background color. | `0-255` | `\e[38;2;;;m` | Set text foreground color to RGB color. | `R`, `G`, `B` | `\e[48;2;;;m` | Set text background color to RGB color. | `R`, `G`, `B` ## Text Attributes **NOTE:** Prepend 2 to any code below to turn it's effect off (examples: 21=bold text off, 22=faint text off, 23=italic text off). | Sequence | What does it do? | | -------- | ---------------- | | `\e[m` | Reset text formatting and colors. | | `\e[1m` | Bold text. | | `\e[2m` | Faint text. | | `\e[3m` | Italic text. | | `\e[4m` | Underline text. | | `\e[5m` | Blinking text. | | `\e[7m` | Highlighted text. | | `\e[8m` | Hidden text. | | `\e[9m` | Strike-through text. | ## Cursor Movement | Sequence | What does it do? | Value | | -------- | ---------------- | ----- | | `\e[;H` | Move cursor to absolute position. | `line`, `column` | `\e[H` | Move cursor to home position (`0,0`). | | `\e[A` | Move cursor up N lines. | `num` | `\e[B` | Move cursor down N lines. | `num` | `\e[C` | Move cursor right N columns. | `num` | `\e[D` | Move cursor left N columns. | `num` | `\e[s` | Save cursor position. | | `\e[u` | Restore cursor position. | ## Erasing Text | Sequence | What does it do? | | -------- | ---------------- | | `\e[K` | Erase from cursor position to end of line. | `\e[1K` | Erase from cursor position to start of line. | `\e[2K` | Erase the entire current line. | `\e[J` | Erase from the current line to the bottom of the screen. | `\e[1J` | Erase from the current line to the top of the screen. | `\e[2J` | Clear the screen. | `\e[2J\e[H` | Clear the screen and move cursor to `0,0`.