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


16

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

대부분의 리눅스에서 나는 할 수있다 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터미널 정의에 사용되는 경로를 발견 하고 "찾기"를 실행 하는 옵션이 있습니까?

답변:


9

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

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

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

find /usr -type d -name terminfo -print

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

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

man terminfo

이것은 훌륭하지만 작은 문제가 있습니다. 사람의 출력을 그리지 않고 어떻게 경로를 찾을 수 있습니까? 그것을 할 수있는 방법이 있습니까?

답을 수정했습니다.
Karlson

10

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
...

0

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 검색 경로가 나열됩니다. 이것들은 저주로 검색 한 경로와 동일합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.