我正在尝试使用Renci SSHNet库创建一个供我个人使用的SSH客户端,但我完全不确定我应该如何解释终端中已执行命令的输出.
例如,如果我要输入简单的命令,如"ls -l","cd/root"或"dir",输出字符串将按预期显示在我的Windows控制台窗口中.
但是当我试图用"nano"编辑文件或者使用"top"查看cpu/memory使用情况时,基本上任何应该显示静态文本的东西,我都会从ssh主机中得到一堆这样的blob.
?[?1049h?[1;24r?(B?[m?[4l?[?7h?[?12l?[?25h?[?1h?=?[?1h?=?[?1h?=?[39;49m?[39;49m? (B?[m?[H?[2J?(B?[0;7m GNU nano 2.2.6 File: test ?[23d^G?(B?[m Get Help ?(B?[0;7m^O?(B?[m WriteOut ?(B?[0;7m^R?(B?[m Read File ?(B?[0;7m^Y?(B?[m Prev Page ?(B?[0;7m^K?(B?[m Cut Text ?(B?[0;7m^C?(B?[m Cur Po ?[24d?(B?[0;7m^X?(B?[m Exit?[14G?(B?[0;7m^J?(B?[m Justify ?(B?[0;7m^W?(B?[m Wh ere Is ?(B?[0;7m^V?(B?[m Next Page ?(B?[0;7m^U?(B?[m UnCut Text?(B?[0;7m^T?(B?[ ?[3d Spell
所以我想我的问题是我应该如何解释所有这些?我只需要有人指出我正确的方向.
您需要编写终端仿真程序.欢迎来到Unix终端的怪异.你可能想看看'man terminfo','man termcap'和'man ncurses'来介绍一些东西.
实际上,任何Unix机器上的终端窗口或控制台都可以模拟一个老式的串行终端,它本身就是电传打字机模拟的一层功能.所有这些ESC [?序列是终端请求它做事的命令.其中一些人会期望响应给出窗口大小,大写锁定状态等等.terminfo数据库记录了给定终端类型的所有转义序列(你应该从名为'xterm-color的类型开始) ").