21 linux solaris terminal ncurses console
大部分问题都在标题中,但要详细说明一下:
在大多数 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
Run Code Online (Sandbox Code Playgroud)
但它很慢。发现tput
终端定义使用的路径并自己运行“查找”的任何选项?
Tho*_*key 16
支持 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,
...
Run Code Online (Sandbox Code Playgroud)
对于ncurses,它更复杂,因为您可以有多个terminfo 数据库,并且条目不必是单个文件。单个数据库和每个条目一个文件是默认的,以便与 Unix 系统兼容。
在-D
供选择抽动和infocmp(加在2011年底)为示额外信息的一种方式。例如,在我的 Debian7 上,我可以看到:
$ infocmp6 -D
/users/tom/.terminfo
/usr/local/ncurses/share/terminfo
/usr/share/terminfo
/lib/terminfo
Run Code Online (Sandbox Code Playgroud)
在我的 FreeBSD 10 机器上,我使用散列数据库:
$ infocmp -D
/usr/local/ncurses/share/terminfo.db
/usr/local/share/misc/terminfo
/etc/termcap
Run Code Online (Sandbox Code Playgroud)
或者,可以使用该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
...
Run Code Online (Sandbox Code Playgroud)
Kar*_*son 11
在 Solaris 10 上,您可以执行以下操作:
find /usr/share/lib/terminfo -type f -print
Run Code Online (Sandbox Code Playgroud)
您应该能够执行以下操作:
find /usr -type d -name terminfo -print
Run Code Online (Sandbox Code Playgroud)
找到目录所在的位置。
您还可以阅读以找到确切路径:
man terminfo
Run Code Online (Sandbox Code Playgroud)