【发布时间】:2016-08-17 16:09:27
【问题描述】:
我希望在golang 中实现一个远程客户端,它通过nc 连接到Linux 并启动bash。所以我需要告诉bash 我可以从它发送给我的stdout 中解析哪些功能,以及我将如何将键码和其他内容发送到它的stdin,以便它也可以解析它们。
这是通过TERM=something 环境变量完成的,我需要将其设置为某个值。如果我不设置它,那么各种程序开始抱怨:
$ mc
The TERM environment variable is unset!
我发现我可以将 TERM 设置为 dumb 来表示我的客户真的很有限。而且我似乎仍然缺少一些东西。
$ export TERM=dumb
$ mc
Your terminal lacks the ability to clear the screen or position the cursor.
从这里看起来dumb终端没有这两个能力,但它仍然期望有什么能力?有没有关于它的规范或一些事实上的标准?
【问题讨论】:
-
愚蠢就是字面意思。它只会吐出您发送的字符,并且除了回车和输出空格之外没有定位功能。没有“光标”可以移动,因此你不能在其中打印“复杂”的界面,基本上每次发生变化时都打印出整个屏幕。请注意,这不是 bash 抱怨,这是 mc。它需要一个合适的终端。尝试 vt100 或其他东西,而不是愚蠢。
-
@MarcB,哦,我肯定无法实现
vt100,我只想检查我的dumb实现在dumb终端上是否按预期工作。例如,我注意到当字符打印在最后一行的最后一列时,我在 Linux 上的标准终端不会自动滚动。 -
它会(仅)在打印一个附加字符以换行到下一行时这样做。
标签: golang linux shell go terminal