bash 및 ansi 이스케이프 코드

bash 및 ansi 이스케이프 코드

나는 이런 일을하고 싶다 :

user@myserver$echo -en "\rSome text to overwrite same line command is on"

문제는 내가 끝내는 결과는 다음과 같다는 것입니다.

Some text to overwrite same line command is onuser@myserver$

이렇게 하면 echo -e다음과 같은 결과를 얻습니다.

Some text to overwrite same line command is on

user@myserver$

콘솔이 스크롤된다는 점을 제외하면 괜찮습니다. 내 tmux 콘솔 창의 높이가 한 줄밖에 되지 않기 때문에 스크롤하는 것을 원하지 않습니다. 문자열의 오른쪽을 공백으로 채우려고 시도했지만 작동하지 않습니다.

답변1

$ echo -en "\rSome text"

여기서는 \r커서를 줄의 시작 부분으로 되돌리기 때문에 많은 일을 하지 않지만, 명령줄에서 Enter를 누르면 커서는 이미 프롬프트 다음 줄의 시작 부분에 있습니다. 간단한 에코와 마찬가지로 출력은 자체 라인에 있습니다.

$ echo foo
foo

따라서 동일한 명령줄을 잘 덮어쓸 수 없습니다(적어도 새 명령줄을 실행하기 전에는 불가능). 그러나 표시된 마지막 행에만 관심이 있는 경우에는 이 작업을 수행할 필요가 없습니다. 예방해야만 해다음프롬프트를 인쇄합니다. read계속하기 전에 일부 입력(Enter 누르기)을 기다릴 수 있습니다 . 커서는 _뒤에 남아 있습니다 bar.

$ echo -n foo bar ; read
foo bar_

답변2

노력하다

echo -en "\rSome text to overwrite same line command is on\n"

관련 정보