2016-03-29 17 views
0

Ich versuche, einige Terminalprobleme zu beheben, die ich von meinem Windows-Laptop zu einem Linux-Server mit der Git Bash-Shell verbinden. Der Bildschirm scheint nicht korrekt zu aktualisieren (clear löscht den Bildschirm nicht, nach dem Beenden von vim und man bleibt auf dem Bildschirm, usw.). Ich schaue mir die stty-Einstellungen an und vergleiche sie mit einem anderen Linux-Server, auf dem ich diese Probleme nicht habe. Eines der Dinge, die ich auf meinem funktionierenden Server sehe, ist eol = M-^?; eol2 = M-^?;. Kann mir jemand die Notation erklären? Wie kann ich diese Einstellung auf dem anderen Server replizieren?Was bedeutet M- ^? in sty output bedeuten?

+0

wild guess ... Ende der Linie erzeugt eine Kontrolle M ?? !! – SriniV

+0

Würde das dann nicht als '^ M' angezeigt? Zum Beispiel 'intr =^C;' – Archa5238

Antwort

1

stty ist auf Einzelbyte-Zeichen beschränkt.

bash verwendet die Namenskonvention (wie auch einige andere Programme) eines M- Präfix, um das Meta-Flag zu bezeichnen. Herkömmlicherweise ist ^? ASCII DEL (127 dezimal, 0x7f hex), also würde ich erwarten, dass M-^? 255 (0xff) ist.

Je nach Implementierung (Diskussion von _POSIX_VDISABLE sehen) stty diesen Wert als undef zeigen könnte:

$ stty -a 
speed 38400 baud; rows 40; columns 80; line = 0; 
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; 
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; 
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; 
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts 
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff 
-iuclc -ixany -imaxbel -iutf8 
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt 
echoctl echoke 

In Bezug auf meta hat ncurses eine Dokumentation in terminfo(5):

Wenn das Terminal hat einen "Metaschlüssel", der als eine Verschiebung Schlüssel fungiert, das 8th Bit von setzt jedes übertragene Zeichen, Diese Tatsache kann mit km angegeben werden. Andernfalls wird die Software davon ausgehen, dass das Bit 8th Parität ist, und es wird normalerweise gelöscht werden. Wenn Strings existieren diese „Meta-Modus“ auf und auszuschalten, können sie als smm und rmm gegeben werden.

und mit der keyname Funktion, es gibt Werte in dieser Form:

Werte über 128 sind entweder meta Zeichen (wenn der Bildschirm nicht initialisiert wurde, oder wenn meta mit genannt worden ist ein TRUE-Parameter), der in der Notation MX dargestellt wird oder als solche angezeigt wird. Im letzteren Fall sind die Werte möglicherweise nicht druckbar. Dies folgt der X/Open-Spezifikation.

Weiterführende Literatur:

Verwandte Themen