Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Terminal - How to overwrite many lines?

I want to overwrite the hello. But when a \n was printed i can't come back to that line. So what do applications do which overwrite many lines like the program htop.

import sys

print 'hello'
print 'huhu',
print '\r\r\rnooooo\r'
like image 783
user3680510 Avatar asked Jan 09 '15 16:01

user3680510


People also ask

How do you overwrite a line in terminal?

The \r or carriage return will put the cursor at the beginning of the line and allows you to overwrite the content of the line.

How do you write multiple lines in terminal?

Using a Backslash. The backslash (\) is an escape character that instructs the shell not to interpret the next character. If the next character is a newline, the shell will read the statement as not having reached its end. This allows a statement to span multiple lines.

How edit multiple lines in Linux?

Go to the line from which you want to start commenting. Then, press ctrl + v , this will enable the visual block mode. use the down arrow to select multiple lines that you want to comment. Now, press SHIFT + I to enable insert mode.


1 Answers

The colorama third party module has support for changing the position of the cursor, via the "\x1b[?:?H" command string. You can also clear the screen this way.

import colorama
colorama.init()
def put_cursor(x,y):
    print "\x1b[{};{}H".format(y+1,x+1)

def clear():
    print "\x1b[2J"

clear()
put_cursor(0,0)
print "hello"
print "huhu"
#return to first line
put_cursor(0,0)
print "noooooo"

The module appears to do this by importing ctypes and invoking windll.kernel32.SetConsoleCursorPosition. See win32.py, line 58.

like image 183
Kevin Avatar answered Sep 20 '22 15:09

Kevin