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년 전)까지는 터미널 설명에 추가되지 않았습니다.
xterm
HPUX의 터미널 설명은 몇 가지 추가 사항(주로 기능 키 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 항목에서 예상되는 것과 다릅니다.