【问题标题】:c#: transform a string targeted for the unix shell use for the windows command promptc#: 转换针对 Windows 命令提示符的 unix shell 使用的字符串
【发布时间】:2009-10-29 13:06:53
【问题描述】:

这是我从套接字流中得到的示例字符串。

\033[H\033[J\033[1;30HSUPERVISOR MAIN MENU\033[6;5H 0.  Exit         Exit\033[7;5H 1.  Help         Display help\033[8;5H 2.  Control      Calling lists and users\033[9;5H 3.  Campaign     Campaigns\033[10;5H 4.  Manage  

如果你想看到我希望打开一个 unix/linux shell 的输出,输入 echo -e 后跟一个空格,然后是上面的单引号字符串,然后按 Enter 键。输出类似于:

                     SUPERVISOR MAIN MENU


 0.  Exit         Exit
 1.  Help         Display help
 2.  Control      Calling lists and users
 3.  Campaign     Campaigns
 4.  Manage

我想要相同的输出,但它应该在内存中...我需要稍后使用它...任何想法。

【问题讨论】:

  • 只是好奇...谁的套接字流?你为什么看它?
  • 刚刚打开了一个连接到我们其中一个 unix 机器的套接字。我们只是对从中接收到的数据感兴趣……基于我们想要发出命令的内容……

标签: c# windows unix transform command-prompt


【解决方案1】:

几个小时前我问了一个几乎相同的问题:Open Source C# VT100 Server。您需要一个能够理解 vt100 转义命令的客户端库。

我搜索了一段时间,到目前为止还没有找到任何非常好的 vt100 C# 库。我已经开始使用自定义的了,因为我真的只需要解释左右箭头和退格键,所以用不了多久。

幸运的是,vt100 标准非常杂乱,并不过分复杂。我认为编写一些代码来理解示例中的转义命令不需要很长时间。此链接有一个简洁的VT100 escape sequences 列表(您需要向下滚动一点)。另一个不错的网站是vt100.net

在您的示例中,转义序列是八进制的。您的第一个转义序列是:

\033[H

翻译成下面的ASCII,用于设置光标位置。

ESC [ H

第二个是

\033[J

转换为下面的 ASCII 序列,表示清除该行到屏幕末尾。

ESC [ J 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    相关资源
    最近更新 更多