如何列出和删除terminfo?

如何列出和删除terminfo?

我已经安装了一些自定义terminfo命令tic。如何列出terminfo数据库中的所有内容(例如 with infocmp)以及如何删除特定内容terminfo

这是我现在的想法:

在 Linux 上,系统范围的terminfo数据库位于/lib/terminfo(Debian)、/usr/share/terminfo(Arch) 和/usr/share/lib/terminfo(Solaris);

在 macOS 上,系统范围的terminfo数据库位于/usr/share/terminfo

用户定义的terminfo数据库位于~/.terminfo.

现在我相信terminfo可以通过删除这些目录中的编译项目来更改数据库项目。所以进一步的问题是:为什么项目被terminfo组织在两个十六进制数字目录中(例如 31、7a)?他们是如何组织的?如果我将一个新的terminfowithtic写入数据库,但使用现有的名称,以前的名称是否会terminfo被覆盖?

答案1

这不仅仅是一个问题。所有这些都在手册页中。

  • 如何列出数据库中的所有 terminfo(例如使用 infocmp)
    ncurses infocmp 程序使用终端数据库的编译位置列表,可以使用TERMINFO_DIRS环境变量。这tic(和infocmp)-D选项显示列表:

     -D     tells tic to print the database locations that it  knows  about,
            and exit.  The first location shown is the one to which it would
            write compiled terminal descriptions.  If tic  is  not  able  to
            find  a  writable  database  location  according  to  the  rules
            summarized above, it will print a diagnostic and  exit  with  an
            error rather than printing a list of database locations.
    
  • ncurses 还使用HOME当您没有权限在其首选位置写入时,环境变量告诉 tic 可以在哪里写入终端描述。此功能存在问题(使其保持最新状态,使其与全部可能安装在您的计算机上的 ncurses 版本等)。

  • 如何删除特定terminfo
    没有用于删除终端描述的特殊命令,因为通常给定位置的整个终端数据库被创建为一个单元(以处理交叉引用)。通常,终端数据库是文件的集合,但可以将其设置为使用散列数据库。对于前者(文件集合),您可以删除 infocmp 在报告开头的注释中打印的文件。

  • 为什么项目 terminfo 组织在两个十六进制数字目录中(例如 31、7a)?
    某些终端描述名称使用大写字符,当它们在忽略大小写的文件系统上用作文件名时,会与其他小写名称发生冲突。 MacOS 的默认文件系统忽略大小写。 Cygwin 也是如此。当为给定系统配置 ncurses 时,配置脚本会检查文件系统是否注意大小写。这term 手册页是阅读此内容的地方。

有时您会看到其他用户(或不熟悉该主题的开发人员)的建议,建议您复制从一台机器到另一台机器的已编译终端描述。这是一个糟糕的建议,因为它没有考虑到前面的任何信息。

相关内容