Cygwin 터미널 창에서 기록을 스크롤하면 줄이 깨져 나타납니다.

Cygwin 터미널 창에서 기록을 스크롤하면 줄이 깨져 나타납니다.

저는 Windows 7에서 최신 버전인 Cygwin 64비트를 사용하고 있습니다. 터미널 창에서는 로컬 컴퓨터에서 작업하거나 SSH를 통해 다른 컴퓨터(Linux)에 연결합니다. 이제는 bash 명령 기록을 뒤로 스크롤하여 더 긴 명령을 전달할 때(특히 프롬프트가 있는 명령이 줄 끝을 지나 다음 줄로 이동하는 경우) 계속 스크롤하면 다른 명령이 인쇄됩니다. 그러나 새 명령이 더 짧다면 이전 명령의 문자 중 하나/일부를 유지하십시오. 예를 들면 다음과 같습니다.

[me@mine /some/where]$ the quick brown fox jumped over the lazy dog. the
quick brown fox jumped over the lazy dog.

[me@mine /some/where]$ another command altogether over the lazy do

[me@mine /some/where]$ yet another command jumped over the lazy do

이제 모든 문자가 보존되는 것은 아닙니다. 또한 이것이 항상 발생하는 것은 아닙니다. 정확히 무엇이 이를 유발하는지 잘 모르겠습니다.

그러나 cygwin을 통하지 않고 putty 등을 사용하여 원격 호스트에 ssh를 연결하면 이 동작이 발생하지 않으므로 이는 Cygwin 또는 해당 bash에 문제가 있는 것 같습니다.

  • 도대체 무슨 일이 일어난 걸까요?
  • 이유는 무엇입니까?
  • 문제를 해결/방지/해결할 수 있나요( clear실행 외에)?

답변1

Bash의 줄 길이와 관련된 일반적인 문제는 다음과 같습니다.빠르게(PS1), 일반적으로 색상을 사용하도록 구성됩니다. 이스케이프 시퀀스가 \[​​and 에 포함되지 않으면 \]bash는 커서 위치에 대해 잘못된 가정을 합니다. 일반적으로 다음과 같은 상황에서 보고됩니다.편집하다명령이지만스크롤역사를 살펴보면 크게 다르지 않습니다.

로컬 사용자 정의가 없는 경우PS1, 다음으로 살펴볼 곳은 터미널 설명(값TERM). Cygwin이 최근에 사용한mintty터미널 창으로. 그 후손이에요putty ...TERM=xterm그러나 행동 mintty과 행동에는 차이가 있습니다 .xterm( putty차이점과 마찬가지로). 달리기tack예를 들어 bw(backward-wrap)이 올바르지 않음을 나타냅니다. bash는 이를 직접 사용하지 않는 것 같습니다(일부 스크립트에서는 사용하지만). 앞으로 래핑( )도 am(로 수행할 수 있음)과 다릅니다.xtermvttest), 그리고 bash는 xterm의 동작에 어느 정도 의존할 수 있습니다.

Cygwin을 사용하여 Cygwin xterm과 비교 하면 mintty더 나은 비교를 얻을 수 있습니다 .

답변2

가능한 질문:

  • TTY 파이프의 일부 부분에 터미널 너비에 대한 잘못된 지식이 있음

  • 유니코드에 대한 질문은 약간 혼란스럽습니다.

  • 대체 화면에 있고 문자가 올바르게 덮어쓰여지지 않았습니다. (이 아이디어에 대한 기억이 가물가물합니다. 세부 사항이 틀렸을 수도 있습니다.)

관련 정보