말 그대로 터미널에 표시된 모든 행에 인쇄하고 싶습니다. 나는 이것을 대학에서 배웠던 것을 기억하지만 그것은 오래 전 일이었습니다. 그런 명령이 있나요?
이와 같이:
___________ ___________ |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
터미널은 원시 모드로 전환한 다음 커서 위치를 읽을 수도 있습니다.라인 노이즈 라이브러리이것이 어떻게 이루어지는지 보십시오.