HP-UX 명령 "less"로 인해 프롬프트가 복잡해지지 않도록 하려면 어떻게 해야 합니까?

HP-UX 명령 "less"로 인해 프롬프트가 복잡해지지 않도록 하려면 어떻게 해야 합니까?

more저는 HP-UX의 출력이 마음에 들지 않아서 less이것을 호출기로 사용합니다.

PAGER=less

출력은 괜찮지만 Linux에서는 사용 man하고 종료하면 셸로 돌아가서 표시가 그대로 표시되지만 HP-UX에서는 셸로 돌아오면 , 다음 명령으로 생성된 내용과 유사하게 프롬프트 앞에 몇 줄이 남아 있습니다.

echo -e "text \c"

이거 봐요:

  • HP-UX의 경우:

    user@hpux2:~$ man ls
    Riformattazione in corso. Attendere...user@hpux2:~$
    

(이탈리아어로 된 메시지는 "재포맷 중입니다. 잠시 기다려 주십시오"를 의미합니다.)

  • 리눅스의 경우:

    user@linux:~$ man ls
    user@linux:~$
    

이 문제를 해결하는 방법?

답변1

언급된 기능은 xterm의 것입니다.대체 화면X.V10R4(1986년 12월)에 소개되었습니다. 이 기능은 지원되었지만 X11R6(약 10년 전)까지는 터미널 설명에 추가되지 않았습니다.

xtermHPUX의 터미널 설명은 몇 가지 추가 사항(주로 기능 키 1-12)을 제외하면 X11R5와 동일 합니다 . 또한 해당 기능(펑션키)은 프로그램에서 한동안 지원되었으나 단말기 설명에는 추가되지 않았습니다.

HPUX가 보고하는 내용은 다음과 같습니다 infocmp.

#       Reconstructed via infocmp from file: /usr/share/lib/terminfo/x/xterm
xterm|vs100|xterm terminal emulator,
        am, km, xenl,
        cols#80, lines#65,
        bel=^G, blink=@, bold=\E[1m, civis=\E[?25I,
        clear=\E[H\E[2J, cnorm=\E[?25h, cr=\r,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\b,
        cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
        cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
        dl1=\E[M, ed=\E[J, el=\E[K, home=\E[1;1H, ht=\t,
        hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
        il1=\E[L, ind=\n, kbs=\177, kcub1=\EOD, kcud1=\EOB,
        kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR,
        kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
        kf8=\E[19~, kf9=\E[20~, knp=\E[6~, kpp=\E[5~, rc=\E8,
        rev=\E[7m, ri=\EM, rmkx=\E[?1l, rmso=\E[m,
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, rs2=@,
        sc=\E7,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
        sgr0=\E[m, smkx=\E[?1h, smso=\E[7m, tbc=\E[3g,

다음 링크를 참조하세요.X11R6 파일,게다가X11R3(X11R5에서는 변경되지 않음) X11R6 터미널 설명의 대체 화면 기능은 다음과 같습니다.이 라인에서 제공:

smcup=\E7\E[?47h, rmcup=\E[2J\E[?47l\E8,

ncurses(Linux 등)를 사용하면나중에 터미널 설명적용 가능한 모든 기능이 여기에 나열되어 있습니다.

HPUX의 경우 tic을 사용하여 이 기능을 추가하는 터미널 설명을 컴파일하면 이 문제를 해결할 수 있습니다. HPUX 시스템에 대한 루트 액세스 권한이 있으면 간단합니다.

infocmp >foo
vi foo (adding the `smcup` and `rmcup` line)
sudo tic foo

environment variable to your own terminfo directory, and running그렇지 않으면 컴파일된 TERMINFO tic`을 설정하여 이 문제를 해결할 수 있습니다.저것목차. 그것은 마치

TERMINFO=$HOME/myterm; export TERMINFO
mkdir -p $TERMINFO/x
tic foo

TERMINFO(또한 후속 세션을 위해 셸에서 이를 설정 해야 합니다 .)

답변2

화면 교환은 터미널 제어 코드를 통해 이루어집니다. 이러한 코드는 아래에 설명되어 있습니다 terminfo(5). 화면 저장/복원과 관련된 두 가지는 smcup일반적 으로 rmcup. 첫 번째는 터미널의 특수 커서 주소 지정 모드(sm="set mode")를 켜고, 두 번째는 이를 끕니다. 일반적으로 이 두 가지는 화면을 저장하고 복원합니다.

화면 복구가 작동하지 않으면 이러한 항목이 터미널 유형에 적합하지 않을 수 있습니다. 이 명령을 사용하여 현재 terminfo 항목의 내용을 인쇄할 수 있습니다 infocmp. 이러한 항목( smcup및 ) 을 살펴보고 rmcup이스케이프 시퀀스를 터미널 설명서와 비교하여 해당 항목이 수행하는 작업을 확인해야 합니다. 귀하의 터미널은 아마도약간terminfo 항목에서 예상되는 것과 다릅니다.

관련 정보