Как изменить данную строку терминала?

Буквально, я хочу распечатать любую отображаемую строку на терминале. Я помню, что мы научились этому в университете, но были давным-давно. Есть ли команда для этого?

Как это:

___________ ___________ |blah | |blah | |bla | |blah | |randomtext | |blah | |xy | -----> |blah | |hjkl | |blah | |prompt> | |prompt> | |___________| |___________|

Вы можете переместить курсор на любую координату X, Y с помощью команды tput cup

например

 tput cup 10 3 

приведет вас к строке 10, колонке 3 (координаты начинаются с 0,0 в верхнем левом углу)

поэтому простой скрипт, такой как

 clear echo line 1 echo line 2 echo line 3 tput cup 1 5 echo another line tput cup 10 0 

приведет к выходу, аналогичному

 line 1 line another line line 3 $ 

(где $ – ваше приглашение).

Первая команда tput перемещает курсор назад к предыдущей строке, позволяя echo переписать то, что уже было.

Существуют управляющие последовательности xterm, которые предлагают множество способов манипулирования дисплеем терминала, как правило, через команду tput(1) или библиотеку curses . Или из-за риска проблем с переносимостью вы можете напрямую передать escape-последовательности.

 #!/usr/bin/env zsh tput sc for i in {1..10}; do echo -ne "\x1b[${i};${i}H\x1bKblah" done tput rc 

Терминал также можно поместить в необработанный режим, а затем позиция курсора читать, хорошим чтением может быть библиотека linenoise, чтобы увидеть, как это делается.