Bash/php의 줄 바꿈 문제

Bash/php의 줄 바꿈 문제

나는 컬러 라인을 인쇄하는 프로그램을 작성하고 있는데, 이 프로그램을 더 많이 사용할수록 발생하는 줄 바꿈 문제를 해결하기 위해 더 많은 작업을 수행하게 됩니다.

이것은 PHP로 작성된 일종의 터미널입니다. 프롬프트는 다음과 같습니다.

$return = readline("\033[44m\033[1;37m{$this->text}>>\033[0m ");

기록을 스크롤하면 텍스트가 10자씩 사라지고, 21자를 입력하고 하나를 삭제하면 전체 줄이 지워지고 위 줄에서 문자가 삭제되기 시작합니다. 이것은 47열 너비의 콘솔에 있습니다.

이스케이프를 추가하려고 하면

$return = readline("\[\033[44m\033[1;37m\]{$this->text}>>\[\033[0m\] ");

이중 백슬래시를 추가하더라도 대괄호가 인쇄됩니다.

\[\][timer]>>\[\] 

에 대해서도 같은 것을 찾았습니다 echo -e. 무슨 일이 일어나고 있는지 잘 모르겠습니다.

마지막으로 PS1을 수정하면 제대로 작동합니다.

[mike@crest ~]$ export PS1="\[\033[44m\033[1;37m\][timer]>>\[\033[0m\] "
[timer]>>

내가 여기서 무엇을 놓치고 있는 걸까요?

답변1

에 따르면http://mywiki.wooledge.org/BashFAQ/053checkwinsize명령 기록을 스크롤하는 경우 이 옵션이 필요할 수 있습니다.

shopt -s checkwinsize

관련 정보