Terminfo
如何列出和刪除terminfo?
我已經
terminfo
用tic
命令安裝了一些自定義。如何列出terminfo
數據庫中的所有內容(例如 withinfocmp
)以及如何刪除特定的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
環境變數覆蓋該列表。(tic
andinfocmp
)-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
手冊頁是為此閱讀的地方。有時您會看到其他使用者(或不熟悉該主題的開發人員)的建議,建議您將已編譯的終端描述從一台機器*複製到另一台機器。*這是一個糟糕的建議,因為它沒有考慮到前面的任何資訊。