我正在尝试使用Renci SSHNet库创建一个供我个人使用的SSH客户端,但我完全不确定我应该如何解释终端中已执行命令的输出。
例如,如果我要键入“ls -l”,“cd / root”或“dir”等简单命令,输出字符串将按预期显示在我的Windows控制台窗口中。
但是当我试图用“nano”编辑文件或者使用“top”查看cpu /内存使用情况时,基本上任何应该显示静态文本的东西,我都会从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
所以我想我的问题是我应该如何解释所有这些?我只需要有人指出我正确的方向。
答案 0 :(得分:5)
您需要编写终端仿真程序。欢迎来到Unix终端的怪异。你可能想看一下'man terminfo','man termcap'和'man ncurses'来介绍一些内容。
实际上,任何Unix机器上的终端窗口或控制台都可以模拟一个老式的串行终端,它本身就是电传打字机模拟的一层功能。所有这些ESC [?序列是终端请求它做事的命令。其中一些人会期望响应给出窗口大小,大写锁定状态等等。terminfo数据库记录了给定终端类型的所有转义序列(你应该从名为'xterm-color的类型开始) “)。
答案 1 :(得分:4)