주어진 터미널 라인을 수정하는 방법은 무엇입니까?

주어진 터미널 라인을 수정하는 방법은 무엇입니까?

말 그대로 터미널에 표시된 모든 행에 인쇄하고 싶습니다. 나는 이것을 대학에서 배웠던 것을 기억하지만 그것은 오래 전 일이었습니다. 그런 명령이 있나요?

이와 같이:

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

답변1

tput cup명령을 사용하여 커서를 X, Y 좌표로 이동할 수 있습니다.

예를 들어

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이미 있는 내용을 덮어쓸 수 있도록 합니다.

답변2

존재하다xterm 제어 시퀀스tput(1)일반적으로 명령 이나 라이브러리를 통해 터미널 표시를 손상시키는 다양한 방법이 제공됩니다 curses. 또는 이식성 문제가 발생할 위험이 있으므로 이스케이프 시퀀스를 직접 내보낼 수 있습니다.

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

터미널은 원시 모드로 전환한 다음 커서 위치를 읽을 수도 있습니다.라인 노이즈 라이브러리이것이 어떻게 이루어지는지 보십시오.

관련 정보