Warum beschädigt Terminal.app meinen tcsh-Verlauf?

Ich hatte ein andauerndes Problem, das spezifisch für OS X und Terminal.app zu sein scheint: In regelmäßigen Abständen erhalte ich Datenmüll in meinem tcsh-Verlauf, der so aussieht:

^[[1m^[[4mcomputername:~/Code/emacs-source ( 1827 ) $^[[0m^[[24m logout

Irgendwie wird meine Eingabeaufforderung (einschließlich Markup-Steuerzeichen) als Teil des Befehlsverlaufs gespeichert. In meiner .history-Datei werden die beschädigten Befehle mit derselben Befehlsnummer wiederholt:

#+1391563259
[1m[4mcomputername:~/Code/emacs-source ( 1827 ) $[0m[24m
#+1391563259
Use "logout" to logout.
#+1391563259
[1m[4mcomputername:~/Code/emacs-source ( 1827 ) $[0m[24m logout 

Dies scheint ein Ergebnis des Schließens von Terminal.app-Fenstern und -Registerkarten zu sein, aber ich bin mir nicht sicher, warum. Um das Problem zu beheben – da ich das Zusammenführen des Verlaufs aktiviert habe – musste ich darauf zurückgreifen, alle tcsh-Sitzungen zu schließen und die beschädigten Befehle aus .history zu entfernen. Gibt es eine Möglichkeit, dies von vornherein zu verhindern?

Dies ist keine konkrete Lösung, aber haben Sie darüber nachgedacht, auf iTerm2 umzusteigen?

Antworten (2)

Schneiden/fügen Sie Befehle aus und nehmen versehentlich einige Ihrer Eingabeaufforderungen auf?

Es ist nicht ganz die Antwort, nach der Sie suchen, aber werfen Sie sed -i.bak -e "s/\x1b[[0-9;]{1,5}m//g" .history in Ihr .logout oder cronen Sie es und Sie sollten es nicht erneut manuell reinigen müssen.

Ich hatte dieses Problem vergessen, aber hier ist ein Update. Die Zusammenführungsfunktion von tcsh savehist ist nicht atomar, sodass das gleichzeitige Schließen mehrerer Sitzungen zu einer Beschädigung der Verlaufsdatei führen kann:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=632892

Ich weiß nicht, ob dies behoben wurde oder behoben werden wird; Ich hatte endlich genug von diesem und anderen tcsh-Problemen und wechselte zu bash.