2012-08-22 52 views
0

http://www.termsys.demon.co.uk/vtansi.htm这个链接有一堆的转义代码,我已经写了有移动光标,改变颜色的脚本 - 我很好奇如何去一个编程左右得到反应?这似乎并不为标准输出或标准错误,据我可以告诉让我很困惑如何访问终端状态响应?

例如,在ZSH我做了以下内容:

[email protected] ~ » echo "\e[6n" 

[email protected] ~ » 3;1R 

到查询的响应来通过作为下一个终端命令?我不明白为什么,Bash似乎也没有证明这种行为。

我知道还有其他方法可以做到这一点使用tput的的例子,但我想知道在一个较低的水平发生了什么,以及为什么。

回答

1

的响应来通过从所述终端(或终端仿真器)的串行口(或其它tty设备)的频道上。这是用于传输在终端键盘输入的字符的相同频道;没有带外信令。

既然你没看过发送查询后的反应,它被解释为你的shell一系列按键的。不同的炮弹对异常的键盘输入有不同的响应。

为了正确地读出的响应,则必须采取端子out基于行的(“ICANON”或“熟”)模式,并在一次读取一个字节(从tty,即可能标准输入,相同的地方你会从中读取键盘输入),直到找到终止字符。而且没有真正的方法来区分同时发生的真实按键响应。

这是一种不洁的业务,如果你想做到这一点在shell脚本中添加额外的痛苦。

+0

非常感谢你,这真的帮了我的理解。 – donatJ