Verhindern Sie ANSI-Escape-Sequenzen in der Terminalausgabe

5582
Pradyumna

Wenn ich ein "ls -l" auf meiner Linux-Box über PuTTY mache, ergibt dies eine saubere, schön farbige Ausgabe.

Wenn ich dasselbe programmgesteuert über Plink versuche, bekomme ich alle möglichen Kontrollsequenzen, die wahrscheinlich diese Farbwerte bedeuten.

Kann ich die Terminaloptionen irgendwie so einstellen, dass diese zusätzlichen Sequenzen für die Farben nicht gesendet werden und nur Text ausgegeben wird?

[00mtotal 8956 drwxr-xr-x 8 pradymn users 4096 2010-07-23 12:29 [01;34mtestsb1[00m drwxr-xr-x 5 pradymn users 4096 2010-07-24 22:49 [01;34mtest1[00m -rw-r--r-- 1 pradymn users 9143013 2010-07-24 23:03 [00;31mtest1.tar.gz[00m 
1

4 Antworten auf die Frage

4
Björn Lindqvist

Eine weitere Alternative ist die Verwendung des Dienstprogramms ansicon, das sich zwischen Konsole und Plink befindet und ANSI-Farbcodes im Handumdrehen übersetzt:

$ ansicon.exe plink.exe user@host 
1
Rob

Dies hängt wahrscheinlich damit zusammen, wie Sie Ihre Farben so einstellen, dass Farben angezeigt werden. Wenn Sie das posten können, sind wir möglicherweise hilfreicher.

Ich empfehle Folgendes in Ihrer bevorzugten Shell-Profildatei (.bashrc): alias ls="ls --color=auto"

Wenn Sie keine Farbausgabe wünschen, können Sie alternativ ls aufrufen --color=never

1
grawity

So fügen Sie Robs Antwort hinzu:

Die ANSI-Escape-Sequenzen müssen von einem Terminalemulatorprogramm (oder von einem echten Hardware-Terminal) interpretiert werden . PuTTY ist in einem Programm sowohl ein Terminalemulator als auch ein SSH-Client.

Ist plinkaber nur ein SSH-Client, der für die Übertragung binärer Rohdaten entwickelt wurde; es nicht . ANSI - Sequenzen interpretiert, übergibt sie nur an das Terminal es in läuft unter Windows ist das Terminal die Windows - Konsole - und ANSI nicht entweder unterstützen.

Wenn Sie SSH von der Befehlszeile aus verwenden möchten, probieren Sie die Cygwin-Version von OpenSSH. PuTTY kann auch von der Kommandozeile aus gestartet werden.

1
MisterZ

You could remove ANSI escape sequences with the following java regex (for exemple):

\\[..;..[m]|\\[.[m]|\\(Page \\d+\\)|\u001B\\[[K]|\u001B|\u000F