Почему Terminal.app портит мою историю tcsh?

4

У меня была постоянная проблема, которая, кажется, специфична для OS X и Terminal.app: периодически я получаю мусор в моей истории tcsh, который выглядит так:

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

Каким-то образом моя подсказка (включая управляющие символы разметки) сохраняется как часть истории команд. В моем файле .history поврежденные команды повторяются с тем же номером команды:

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

Похоже, это результат закрытия окон и вкладок Terminal.app, но я не уверен, почему. Чтобы это исправить - поскольку у меня включено объединение истории - мне пришлось прибегнуть к закрытию всех сеансов tcsh и удалению поврежденных команд из .history. Есть ли способ предотвратить это в первую очередь?

Ашер Л.
источник
1
это не конкретное решение, но вы рассматривали возможность перехода на iTerm2?
субботу,

Ответы:

0

Вы вырезаете / вставляете команды и случайно получаете некоторые из ваших подсказок?

Это не совсем тот ответ, который вы ищете, но добавьте sed -i.bak -e "s / \ x1b [[0-9;] {1,5} m // g" .history в свой .logout или cron it и вам не нужно снова чистить его вручную.

Джейсон С
источник
0

Я забыл об этой проблеме, но вот обновление. Функция слияния в tcsh не является атомарной, поэтому одновременное закрытие нескольких сеансов может привести к повреждению файла истории:

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

Я не знаю, было ли это исправлено или будет исправлено; Я наконец сыт по горло этим и другими проблемами tcsh и переключился на bash.

Ашер Л.
источник