Есть ли инструмент для очистки выходных данных инструмента script (1)? - PullRequest
1 голос
/ 27 мая 2009

script(1) - инструмент для ведения записи сеанса интерактивного терминала; по умолчанию записывает в файл transcript. Моя проблема в том, что я использую ksh93, который имеет функции readline, и поэтому транскрипт перепутан со всеми видами escape-последовательностей терминала, и может быть очень трудно восстановить команду, которая была фактически выполнена. Не говоря уже о беспризорных ^M и т. П.

Я ищу инструмент, который прочитает файл расшифровки, написанный script, удалит весь мусор и восстановит то, что оболочка думала, что он выполняет, поэтому у меня есть что-то, что показывает $PS1 и команды на самом деле казнены. В противном случае я ищу предложения о том, как написать такой инструмент, в идеале, используя знания из базы данных terminfo, или не получится, просто используя escape-последовательности ANSI.

Чит, который выглядит в истории оболочки, до тех пор, пока он действительно работает, также будет приемлемым.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2015

По сути, это тот же вопрос, который недавно задавали в Могу ли я программно «записать» управляющие коды ANSI в файл с помощью утилит unix? - удаление всех непечатных символов не исправит

  • встроенные escape-последовательности
  • backspace / overstriking для подчеркивания
  • использование возвратов при перегрузке
0 голосов
/ 21 июня 2012

Не работает cat / more по умолчанию для просмотра стенограммы? Намереваетесь ли вы создать скрипт из фактически выполненных команд (что по моему опыту может быть опасным)?

Во всяком случае, 3 года без ответа, поэтому я дам ему шанс с неполным решением. Если вас интересуют только введенные команды, удалите непечатаемые символы, затем замените PS1 'на что-то читаемое и уникальное, и grep для этой уникальной строки. Как это:

$ sed -i 's/[^[:print:]]//g' transcript

$ sed 's/]0;cartman@southpark: ~cartman@southpark:~/CARTMAN/g' transcript | grep CARTMAN

Объяснение: После первого sed PS1 'может быть взято из одной из первых нескольких строк файла расшифровки, как есть - PS1' отличается от PS1 - и может быть изменено уникальной читаемой строкой ("CARTMAN " Вот). Обратите внимание, что знак доллара в конце подсказки был намеренно пропущен.

В нескольких примерах, которые я пробовал, это не решало все проблемы, но решало большинство проблем.

...