2017-01-29 6 views
0

Ich baue eine Anwendung, die pty.js verwendet, um ein Pseudoterminal auf meinem Computer zu öffnen. Ich erhalte Antworten, die wie folgt aussehen:Wie dekodiere ich Xterm-Antworten?

]0;[email protected]:~[?1034h[[email protected] ~]$ ls 
]0;[email protected]:~[[email protected] ~]$ pwd 
/home/ec2-user 

ich pty.js gehe davon wird eine spezielle Codierung zurückschicken, aber ich bin nicht sicher, was die Codierung ist und wie es zu entschlüsseln. Jede Hilfe wäre dankbar, danke.

Antwort

2

Das sind nicht Antworten (das Terminal würde reagieren), aber Kontrollsequenzen, die von einer Anwendung gesendet (nicht das Endgerät). Ich sehe ein paar Fälle (OSC als ^[] drucken könnte, und CSI als ^[[, wenn die Escape-Zeichen als ^[ gezeigt wurden):

]0;[email protected]:~ 

sieht aus wie die Steuerung für den Fenstertitel Einstellung (von xterm obwohl mehrere Programme es unterstützen),

OSC Ps ; Pt BEL 
OSC Ps ; Pt ST 
... 
      Ps = 0 -> Change Icon Name and Window Title to Pt. 

und

[?1034h 

lo aus xterm Repertoire oks wie eine andere Sequenz (durch andere Programme im Allgemeinen nicht unterstützt):

CSI ? Pm h 
      DEC Private Mode Set (DECSET). 
... 
      Ps = 1 0 3 4 -> Interpret "meta" key, sets eighth bit. 
      (enables the eightBitInput resource). 

Für das gegebene Beispiel Codierung kein Faktor ist.

Zum Erfassen der Ausgabe von Ihrer Anwendung ist das Programm script nützlich. Ich benutze ein kleines Dienstprogramm (unmap), um die resultierenden typescript Dateien in lesbare Form zu übersetzen, aber cat -v ist oft für diesen Zweck ausreichend.

Weiterführende Literatur: XTerm Control Sequences

Verwandte Themen