터미널의 두 위치(줄의 시작이나 끝이 아님) 사이의 문자열을 지워야 합니다. 예를 들어 tput cup 5 10
에서 까지의 모든 항목을 삭제합니다 tput cup 5 69
. 라인.
예, 공간의 전체 영역을 통과하는 것만으로도 가능 echo
하지만 더 좋은 방법이 있을까요? clear 10 69
현재 커서 줄 위치 와 유사합니다 .
답변1
당신이 찾고있는문자 삭제제어 순서.
tput cup 5 10 ; tput ech 59
이것을 혼동해서는 안 됩니다.문자 삭제.
tput cup 5 10 ; tput dch 59
지우면 공백으로 덮어쓰게 됩니다. 삭제하면 나머지 행이 왼쪽으로 이동됩니다.
답변2
앞서 언급 한 바와 같이, ech
(문자 삭제)이 작동하는 한 갈 길입니다. 이 기능은 VT102와 함께 제공되므로 사용하는 대부분의 단말기에서 제공됩니다.
ncurses의 터미널 설명에 색상 문제가 있습니다. rxvt 개발자는 1995~1996년에 배경색을 지우는 아이디어에 대해 다른 해석을 사용했으며 이를 처리하지 않았습니다(Linux 콘솔 및 xterm처럼).삭제그리고변제. 따라서 ech
삭제에는 기본 색상이 사용됩니다 ed
.디스플레이 지우기)는 현재 ANSI 색상으로 지워집니다. ech
따라서 ncurses 터미널 설명은 생략합니다. 이 소스에서 파생된 모든 프로그램에 동일한 문제가 적용됩니다.
추가 자료:
- 내 터미널에 색칠되지 않은 공간이 표시됩니다.
- terminfo - 터미널 기능 데이터베이스, 당신
tput
은cup
그리고ech
능력:
cursor_address cup cm 1행 2열로 이동 erar_chars ech ec #1 문자 지우기 (P)
답변3
sed를 사용하여 이 작업을 수행할 수 있습니다. 아래를 참조하세요.
에코 "문자열" | sed -e '/start/,/end/' |