추가 읽기

추가 읽기

일반적으로 bash 명령줄은 래핑됩니다. 저는 익숙해졌고 잘 작동합니다.

[cnd@MacBook-Pro ~]$ echo abcdefgABCDEFGhijklmnopHIJKLMNOPq
rsQRStuvTuvWXYZ

(시연을 위해 창 크기를 줄였습니다)

그러나 기본 CentOS8 셸에서는 더 이상 이 작업을 수행하지 않습니다. 대신 입력 시작 부분의 대부분을 자르고(단말기 너비 끝에서 3자 이내로 들어가면) 이를 "">"로 대체하므로 더 이상 입력한 내용을 볼 수 없습니다.

[cnd@hpz ~]$ 
<EFGhijklmnopHIJKLMNOPqrsQRStuvTuvWXYZ

(실제 쉘 창에서 복사/붙여넣기)

이 성가신 행동을 멈추는 올바른 방법은 무엇입니까? 전체 명령을 확인해야 합니다. (나는 긴 Perl 문을 많이 입력합니다. 실행하기 전에 확인하는 것이 중요합니다!)

vt100 또는 xterm을 터미널로 사용하고 일부 "set" 명령 및 기타 내보내기를 사용하는 것과 같은 다양한 작업을 시도했지만 지금까지는 추측할 수 없으며 Google은 출력에 대한 답변(관련 없는 질문으로 오염됨)을 갖고 있지 않은 것 같습니다. 줄 바꿈, 원치 않는 스크롤, ansi 이스케이프 프롬프트 이스케이프 등)

답변1

이는 GNU Readline 라인 입력 편집 라이브러리의 동작이며 Bourne Again 쉘뿐만 아니라 Readline을 사용하는 모든 프로그램에서 나타납니다.

termcap/terminfo 데이터베이스의 터미널 레코드( TERM환경 변수로 표시됨)가 커서를 위로 이동하는 터미널 기능을 제공하지 않는 경우 Readline은 여러 줄 모드에서 가로로 스크롤하는 한 줄 모드로 대체됩니다(Korn 쉘 방식에서는 자체 라인 편집 라이브러리를 사용합니다).

실제로 유일한 문서는 라이브러리 소스 코드에 숨겨진 주석입니다.

horizontal-scroll-mode변수를 on으로 설정하여 Readline을 강제로 한 줄 모드로 되돌릴 수도 있습니다. 그러나 여러 줄 모드를 사용하도록 강제할 수는 없습니다.와는 별개로완전한 기능을 갖춘 termcap/terminfo 로깅을 제공합니다.

아이러니하게도 이 대체 조치는 35년 전에도 드물었던 터미널과 터미널 에뮬레이터에 매우 중요했습니다. 라인 프린터와 dumb터미널은 애초에 이러한 형태의 라인 입력 편집에 적합하지 않습니다. 그리고 거의모든최신 비디오 터미널에는 커서를 위로 이동시키는 제어 순서가 있습니다.

21세기에 더 합리적인 접근 방식은 ECMA-48 표준을 기본으로 하는 것입니다. ECMA-48 표준은 1976년 이래로 1980년대 중반부터 널리 지원 및 개발되었습니다 dumb(실제로는 1968년 TTY-37, 및 glasstty참조 ). 기본값의. 이것은 오늘날 입력 라인 편집을 수행할 수 있지만 커서 위로 이동 제어 시퀀스가 ​​없는 터미널은 말할 것도 없고 진정한 TTY-37조차 거의 만나지 않는다는 것을 인식할 것입니다.vanillatty37

GNU Readline은 아직 이 작업을 수행하지 않습니다.

추가 읽기

관련 정보