Ответ 1
Для полноты, файл, содержащий все эти escape-последовательности, генерируется демоном bootlogd (пакет bootlog в семействе debian), который фиксирует все раскрашенные сообщения, отправленные на консоль во время загрузки. На консоли эти сообщения сначала отображаются, как следующая строка:
[....] Starting periodic command scheduler: cron
тогда, когда служба или команда выполняется, escape-последовательность отправляется в консоль, чтобы переместить курсор в начале строки и распечатывает ok, fail, info, warn и т.д.
[ ok ] Starting periodic command scheduler: cron.
Все эти сообщения захватываются демоном bootlogd и записываются в файл со всеми его escape-последовательностями, включая репозиционирование. Нет проблем, кроме того, что ^[
должен быть заменен на восьмеричный 033
, чтобы файл был правильно отображен. Но, поскольку есть улов, демон также добавляет отметку даты перед сообщением, не меняя координаты последовательности перестановки курсора. Следовательно, сообщения ok, fail и т.д. Перезаписывают часть штампа даты. Не приятно.
Fri May 25 17:13:01 2012: [....] Starting periodic command scheduler: cron
becomes...
[ ok ay 25 17:13:01 2012: [....] Starting periodic command scheduler: cron.
Решение состоит в том, чтобы изменить последовательность позиционирования курсора. По попытке и ошибке я обнаружил, что последовательность должна быть ^[1G
. Команда sed наконец выполнит задание:
sed 's/\^\[/\o33/g;s/\[1G\[/\[27G\[/' /var/log/boot
Демон bootlogd должен очистить всю escape-последовательность перед отправкой сообщений консоли в файл. Можно ли назвать это ошибкой?
Эта "ошибка" также может присутствовать во всех наследниках Debian, таких как Ubuntu, Mint и т.д.