Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想了解程序如何喜欢vim或man在 shell 中工作。他们如何让用户滚动、刷新显示等等?
vim
man
它们似乎与一些控制台库交互,从而操纵我们所看到的。到底发生了什么?
终端具有所谓的终端驱动程序。这不是硬件接口意义上的驱动程序,而是解释某些字符序列,使其执行滚动、文本属性等操作。
字符序列存储在terminfo 数据库中。一个名为curses的库(或其现代等价物ncurses)读取 terminfo 数据库并根据调用的函数发出各种字符序列。
将 terminfo 数据库与终端驱动程序本身分开,允许程序支持许多终端,例如 xterm、文本控制台、网络客户端,甚至是通过串行线路连接的远程哑终端。
这是一个很好的方法:
你可能想看看第 17 章 - 使用终端。