우선 귀하의 질문은 bash와 관련이 없지만 터미널과 관련이 있습니다. 터미널은 프로그램의 텍스트를 표시하기 위해 응답하고 있으며 bash 자체는 일단 시작된 프로그램을 제어하지 않습니다.
터미널은 색상, 글꼴, 커서 위치 등을 제어하기위한 제어 순서를 제공합니다. 표준화 터미널 시퀀스의 목록을 살펴 가지고
http://www.termsys.demon.co.uk/vtansi.htm 당신은 예를 들어 수를
- 줄의 시작 부분에 커서를 놓습니다
- 나중에 줄을 삭제
- 새로운 줄을 쓰다
진행률 표시 줄을 만듭니다.
보다 고급의 터미널 이스케이프 시퀀스는 일반적으로 터미널에 의존합니다 (예 : Eterm 또는 xterm에서만 작동). ncurses- 터미널과 대화식 프로그램을 작성하여 이스케이프 시퀀스를 사용할 필요가없는 프로그래밍 라이브러리입니다.
터미널 시퀀스로 기존 줄을 덮어 쓰는 방법
echo long text
sleep 1
printf "\033[1A" # move cursor one line up
printf "\033[K" # delete till end of line
echo foo
터미널 시퀀스없이 기존 줄을 덮어 쓰는 방법
간단한 해결책 중 하나는 끝에 줄 바꿈을 쓰지 않고 캐리지 리턴을 쓰면 기본적으로 커서가 줄의 시작 부분으로 재설정됩니다.
echo -n first
sleep 1
echo -ne "\rsecond"
echo
\r
또는 캐리지 리턴은 줄의 시작 부분에 커서를 놓고 당신이 라인의 내용을 덮어 쓸 수있게됩니다.
less
또는 같은 버퍼 간 전환vi
동작은 less
고급 터미널 기능인 대체 화면으로 인해 발생합니다.
VT102 모드에는 대체 화면 버퍼를 활성화 및 비활성화하는 이스케이프 시퀀스가 있으며, 이는 창의 디스플레이 영역과 동일한 크기입니다. 활성화되면 현재 화면이 저장되고 대체 화면으로 바뀝니다. 일반 화면이 복원 될 때까지 창 상단에서 스크롤 된 행 저장을 사용할 수 없습니다. xterm에 대한 용어 cap (5) 항목을 사용하면 비주얼 편집기 vi (1)가 편집을 위해 대체 화면으로 전환하고 종료시 화면을 복원 할 수 있습니다. 팝업 메뉴 항목을 사용하면 잘라 내기 및 붙여 넣기를 위해 일반 화면과 대체 화면을 간단하게 전환 할 수 있습니다.
http://rosettacode.org/wiki/Terminal_control/Preserve_screen 에는 tput 또는 일부 이스케이프 시퀀스를 통해 직접 수행하는 방법의 예가 나와 있습니다 .