Terminfo

如何列出和刪除terminfo?

  • February 19, 2022

我已經terminfotic命令安裝了一些自定義。如何列出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)?他們是如何組織的?如果我將新terminfo的 withtic寫入數據庫,但名稱已存在,那麼之前的名稱會被terminfo覆蓋嗎?

這不止一個問題。所有這些都在手冊頁中。

  • 如何列出數據庫中的所有 terminfo(例如使用 infocmp)
    ncurses infocmp 程序使用編譯的終端數據庫位置列表,可以使用TERMINFO_DIRS環境變數覆蓋該列表。( ticand 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.
  • HOME當您無權在首選位置寫入時,ncurses 還使用環境變數來告訴 tic 可以在哪裡寫入終端描述。此功能存在問題(使其保持最新狀態,使其適用於可能安裝在您機器上的所有版本的 ncurses 等)。
  • 如何刪除特定
    的 terminfo 沒有用於刪除終端描述的特殊命令,因為通常將給定位置的整個終端數據庫創建為一個單元(以處理交叉引用)。通常終端數據庫是文件的集合,但可以設置為使用散列數據庫。對於前者(文件集合),您可以刪除 infocmp 在報告開頭的註釋中列印的文件。
  • 為什麼項 terminfo 組織在兩個十六進制數字目錄中(例如 31、7a)?
    一些終端描述名稱使用大寫字元,當它們用作忽略大小寫的文件系統上的文件名時,它們會與其他小寫名稱衝突。MacOS 的預設文件系統忽略大小寫。Cygwin 也是如此。當為給定係統配置 ncurses 時,配置腳本會檢查文件系統是否注意大小寫。term 手冊頁是為此閱讀的地方。

有時您會看到其他使用者(或不熟悉該主題的開發人員)的建議,建議您將已編譯的終端描述從一台機器*複製到另一台機器。*這是一個糟糕的建議,因為它沒有考慮到前面的任何資訊。

引用自:https://unix.stackexchange.com/questions/644890