대부분의 질문은 제목에 있지만 조금 더 자세히 설명하자면 다음과 같습니다.
대부분의 Linux에서는 가능합니다 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
터미널 정의에서 사용되는 경로를 검색하고 직접 "찾기"를 실행할 수 있는 옵션이 있습니까 ?
답변1
terminfo를 지원하는 "모든" 시스템의 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
은 다음과 같습니다틱그리고정보 CMP(다음에 추가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
프로그램은 사용 가능한 모든 터미널 항목에 대한 보고서를 생성합니다. 사물을 결합하려면 -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
...
답변2
Solaris 10에서는 다음을 수행할 수 있습니다.
find /usr/share/lib/terminfo -type f -print
다음을 수행할 수 있어야 합니다.
find /usr -type d -name terminfo -print
디렉토리가 어디에 있는지 찾아보세요.
정확한 경로를 찾기 위해 읽을 수도 있습니다.
man terminfo
답변3
Linux에서는 를 사용 strace
하여 프로그램이 사용하는 시스템 호출을 확인할 수 있습니다. 다음은 모든 "open(2)" 시스템 호출을 나열하고 이를 필터링하여 sed
현재 터미널의 terminfo 기능을 번역하는 데 사용되는 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}
infocmp -D
마지막으로 terminfo 검색 경로 목록을 사용하거나 덤프할 수 있습니다 tic -D
. 여기에는 컴파일된 terminfo 검색 경로가 나열됩니다. 검색을 저주하는 경로와 동일한 경로입니다.
답변4
Zyxel NSA310에서도 같은 문제가 발생했습니다.
나를 위해 일한 솔루션은
export TERM=xterm
여기에 조언이 제공됩니다:
https://better-coding.com/solved-xterm-256color-unknown-terminal-type/