
ほとんどの質問はタイトルにありますが、もう少し詳しく説明すると次のようになります。
ほとんどの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データベースを持つことができ、アイテムが別々のファイルである必要がないため、状況がより複雑になります。アイテムごとに1つのデータベースと1つのファイル基本、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/