마지막 명령 출력이 줄 바꿈으로 끝나지 않으면 터미널 기록이 중단되거나 중단됩니다(KDE Konsole)

마지막 명령 출력이 줄 바꿈으로 끝나지 않으면 터미널 기록이 중단되거나 중단됩니다(KDE Konsole)

모든 또는 대부분의 Linux 터미널에는 오랫동안 나를 괴롭혔던 이상한 동작이 있습니다. 이것이 버그인지, 의도적인 것인지, 아니면 구성 문제인지는 확실하지 않습니다. 그럼 여기서 먼저 묻겠습니다.

재현 단계

  • 터미널을 엽니다.
  • 선택 사항: 를 실행하여 export PS1='~ \$'이 설정을 표준화합니다. 이 설정을 자유롭게 실험해 보세요.
  • 달리기 echo -n hello.
  • 이전 명령으로 이동하려면 "위로" 키를 사용하세요.
  • 빈 프롬프트로 돌아가려면 "아래쪽" 화살표 키를 사용하세요.
  • 다시 "위로"를 사용하세요.

예상되는

(이것은 내 $PS1에서 남겨진 것입니다 ~ $.)

실행 후 echo -n hello:

~ $ echo -n hello
hello~ $ 

"위쪽" 화살표 키 다음:

~ $ echo -n hello
hello~ $ echo -n hello

"아래쪽" 화살표 키 다음:

~ $ echo -n hello
hello~ $

두 번째 "위쪽" 화살표 키 다음:

~ $ echo -n hello
hello~ $ echo -n hello

실제

(이것은 내 자신의 $PS1 에서 남은 것입니다 ~ $.) (처음 두 단계는 예상대로입니다)

"아래쪽" 화살표 키 다음:

~ $ echo -n hello
hell

두 번째 "위쪽" 화살표 키 다음:

~ $ echo -n hello
hellecho -n hello

다양성

  • 다른 $PS1 값을 사용하세요.
  • 에코에 다른 길이의 문자열을 사용하십시오.
  • 역사를 추적해 보세요. 나에게 특정 역사적 가치는 다른 가치와 다른 영향을 미칩니다.

내 터미널

나는 사용하고있다

Konsole 버전 21.12.3

그런데 예전에 다른 터미널에서도 이런 일이 일어나는 걸 본 것 같아요. KDE "Konsole"이 이 동작에 책임이 있는지는 모르겠습니다.

추가 정보

(아래 댓글에 대한 답변)

물론아니요사용자 "루트"에게 발생했습니다!

처음에는 내 사용자와 사용자의 차이점을 확인했습니다 root. 하지만 이는 단지 $PS1설정의 차이 때문인 것으로 밝혀졌습니다 . 이 값을 '~ \$', 또는 로 정규화한 후 '${debian_chroot:+($debian_chroot)}\[\033[01;34m\]\w\[\033[00m\] \$ '이제 루트와 나 자신에 대해 동일한 동작이 표시됩니다.

이는 완전히 별도의 설정이 있는 도커 컨테이너 내부의 bash에서도 발생합니다.

링크

참고로 여기서 이슈를 열었습니다.https://bugs.kde.org/show_bug.cgi?id=464384

답변1

이것은 프롬프트가 현재 줄의 가장 왼쪽 위치에서 시작하고 아래쪽을 누르면 위치 5로 이동하고 줄 끝까지 지워진다고 생각하는 bash(실제로는 readline)입니다.

아래쪽 화살표를 누르면 bash는 다음을 터미널로 보냅니다.

\r\33[C\33[C\33[C\33[C\33[K

이것은 현재 라인의 가장 왼쪽 위치로 이동된 캐리지 리턴 문자입니다. 4개(프롬프트 길이)의 CUF(커서 전진) 제어 시퀀스와 1개의 EL(Erase Line) 제어 시퀀스, 매개변수 0(기본값)은 현재 커서를 위치에서 지웁니다. 줄 끝까지.

관련 정보