Linux作为哑终端连接服务器,linux – TERM =哑终端必须具备的功能

我希望在golang中实现一个远程客户端,它通过nc连接到Linux并启动bash.所以我需要告诉bash我可以从它发送给我的stdout中解析哪些功能,以及我将如何将密钥代码和其他内容发送到它的stdin,以便它也可以解析它们.

这是通过TERM = something环境变量来完成的,我需要将其设置为某个值.如果我没有设置它,那么各种程序开始抱怨:

$mc

The TERM environment variable is unset!

我发现我可以设置TERM愚蠢地说我的客户真的有限.而且似乎我错过了一些东西.

$export TERM=dumb

$mc

Your terminal lacks the ability to clear the screen or position the cursor.

从这里看起来像哑终端没有这两种能力,但它仍然有什么能力?有关于它的规范或事实上的标准吗?

解决方法:

去源可以帮助.终端数据库有评论.这是一个slice from that:

#### Specials

#

# Special "terminals". These are used to label tty lines when you don't

# know what kind of terminal is on it. The characteristics of an unknown

# terminal are the lowest common denominator - they look about like a ti 700.

#

dumb|80-column dumb tty,

am,

cols#80,

bel=^G, cr=^M, cud1=^J, ind=^J,

unknown|unknown terminal type,

gn, use=dumb,

假设“哑”和“未知”终端类型,但很少使用:

>“dumb”有automargins(文本在右边缘“换行”),假定有80列,ASCII BEL和回车符.由于缺少更好的东西,cud1(向下光标)是一个ASCII换行符. ind(index)值相同,这意味着当您到达屏幕底部时文本会向上滚动.

没有光标寻址(杯)或替代(例如任意沿着行或列移动).

>“unknown”添加“generic”标志,标记它不适合curses应用程序使用.把它想象成一台打印机.

至于最低要求,实际上取决于个人应用. ncurses可以设法在没有杯子的情况下在屏幕上移动.它适用于六种策略.如果您阅读mvcur的来源,您可以了解它的需求.

但是,诸如mc之类的应用程序不仅仅依赖于ncurses来决定它是否有效,因为(在这种情况下)它可能与slang链接(它不会密切检查).因此,mc会自行检查,这可能会增加限制.

在实践中,除非您选择有限的终端描述,例如“哑”,否则您可能遇到的大多数终端都可以使用.

进一步阅读:

标签:linux,shell,go,terminal,golang

来源: https://codeday.me/bug/20190828/1756660.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值