사용 가능한 터미널 정의를 어떻게 확인할 수 있습니까? 작업을 수행

질문의 대부분은 제목이지만 조금 더 자세히 설명합니다.

대부분의 리눅스에서 나는 할 수있다 find /usr/share/terminfo -type f. 그러나 Solaris 컴퓨터에는 근처에 있습니다.이 디렉토리는 존재하지 않습니다.

터미널 목록을 반복하고 다음과 같은 작업을 수행 할 수 있습니다.

for TERM in xterm xtermc xterm-color xterm-256color screen rxvt
do
    tput cols >/dev/null 2>/dev/null && echo "$TERM available"
done

그러나 느리다. tput터미널 정의에 사용되는 경로를 발견 하고 “찾기”를 실행 하는 옵션이 있습니까?



답변

Solaris 10에서는 다음을 수행 할 수 있습니다.

find /usr/share/lib/terminfo -type f -print

다음과 같은 작업을 수행 할 수 있어야합니다.

find /usr -type d -name terminfo -print

디렉토리가있는 위치를 찾으십시오.

정확한 경로를 찾기 위해 읽을 수도 있습니다.

man terminfo


답변

terminfo를 지원하는 “any”시스템의 infocmp 프로그램은 현재 터미널에 대한 터미널 설명을 찾는 경로 이름을 표시합니다. 예를 들어 (이 경우 AIX) :

$ infocmp vt100
#       Reconstructed via infocmp from file: /usr/share/lib/terminfo/v/vt100
vt100|vt100-am|Digital VT100,
        am, msgr, xenl, xon,
        cols#80, it#8, lines#24, vt#3,
        ...

ncurses의 경우 여러 terminfo 데이터베이스를 가질 수 있고 항목이 개별 파일 일 필요가 없기 때문에 더 복잡합니다. Unix 시스템과의 호환성을 위해 단일 데이터베이스와 항목 당 하나의 파일이 기본값 입니다.

-D에 대한 옵션 경우, infocmp (추가 2011 년 후반는 ) 추가 정보를 표시 할 수있는 한 가지 방법입니다. 예를 들어, Debian7에서 다음을 볼 수 있습니다.

$ infocmp6 -D
/users/tom/.terminfo
/usr/local/ncurses/share/terminfo
/usr/share/terminfo
/lib/terminfo

FreeBSD 10 컴퓨터에서는 해시 된 데이터베이스를 사용합니다 :

$ infocmp -D
/usr/local/ncurses/share/terminfo.db
/usr/local/share/misc/terminfo
/etc/termcap

또는 toe프로그램을 사용하여 사용 가능한 모든 터미널 항목에 대한 보고서를 생성 할 수 있습니다 . 은 Using -s-a옵션하면 (자 같은 것들을 결합 할 수 있습니다 conflict프로그램) :

--> /users/tom/.terminfo
----> /usr/local/ncurses/share/terminfo
------> /usr/share/terminfo
--------> /lib/terminfo
--*-+---:       9term           Plan9 terminal emulator for X
--*---*-:       Eterm           Eterm with xterm-style color support (X Window System)
--*-*---:       Eterm-256color  Eterm with xterm 256-colors
--*-*---:       Eterm-88color   Eterm with 88 colors
--*-+---:       MtxOrb          Generic Matrix Orbital LCD display
--*-+---:       MtxOrb162       16x2 Matrix Orbital LCD display
--*-+---:       MtxOrb204       20x4 Matrix Orbital LCD display
--*-+---:       NCR260VT300WPP  NCR 2900_260 vt300 wide mode pc+  kybd
--*-+---:       aaa             ann arbor ambassador/30 lines
--*-+---:       aaa+dec         ann arbor ambassador in dec vt100 mode
--*-+---:       aaa+rv          ann arbor ambassador in reverse video
...


답변

Linux strace에서는 프로그램이 사용하는 시스템 호출을 확인할 수 있습니다 . 다음은 모든 “open (2)”시스템 호출을 나열하고이를 필터링 하여 현재 터미널의 terminfo 기능을 변환하는 sed데 사용되는 terminfo 파일을 보여줍니다 tput.

TERMINFO_FILE=$(strace -e open tput cud1 2>&1 | sed -n -e 's/^.*\(".*terminfo.*"\).*$/\1/p')
echo ${TERMINFO_FILE}

sed 표현식은 terminfo 파일이 “terminfo”패턴이있는 경로에 저장되어 있다고 가정합니다. 이것이 걱정된다면 다른 가정을 사용하고 마지막 “개방”시스템 호출을 선택할 수 있습니다.

TERMINFO_FILE=$(strace -e open tput cud1 2>&1 | grep -e "^open" | tail -n 1 | sed -n -e 's/^.*\(".*"\).*$/\1/p')
echo ${TERMINFO_FILE}

마지막으로, 당신은 사용의 terminfo 검색 경로 목록 덤프 할 수 infocmp -D또는 tic -D. 컴파일 된 terminfo 검색 경로가 나열됩니다. 이것들은 저주로 검색 한 경로와 동일합니다.


답변

Zyxel NSA310과 같은 문제에 직면했습니다.

나를 위해 일한 해결책은

export TERM=xterm

조언이 여기에 주어졌다 :

https://better-coding.com/solved-xterm-256color-unknown-terminal-type/


답변