Регистрация входных и выходных данных без захвата всех введенных символов ввода и управления

Я пытаюсь зарегистрировать вывод из интерактивной программы командной строки; units , в частности.

Я пробовал использовать tee вот так:

 units | tee units.log 

или скрипт следующим образом:

 script -c units units.log 

но они оба регистрируют все обратные пространства и завершение вкладок в качестве специальных символов:

 You have: 55 horsepower ^G/^H^[[K^M You want: wat^Gt ^M * 41013.493^M / 2.438222e-05^M 

В manpage для script упоминается эта проблема.

 BUGS Script places everything in the log file, including linefeeds and backspaces. This is not what the naive user expects. 

Я знаю об обходе с просмотром файла, используя cat и more или для удаления escape-символов с col как указано здесь:

https://stackoverflow.com/questions/7152339/format-output-from-unix-script-command-remove-backspaces-linefeeds-and-delet

Как и скрипт perl:

http://log.guidoderosa.net/2009/05/another-old-post-which-may-be-useful.html

Но я особо не хочу исправлять существующий файл журнала: я хочу, чтобы не создавать новые файлы журналов, искаженные удаленными вводами и управляющими символами.

Мне показалось, что я исправил проблему с помощью rlwrap , но он конфликтует с функциональными возможностями readline, так что он либо не может захватить вывод, либо с помощью rlwrap -a он захватывает вывод, но отрицает способность units использовать табуляцию. rlwrap -a -N не помогает. Это хорошо документировано на странице руководства:

 BUGS and LIMITATIONS Though it is flexible, delivers the goods (readline functionality), and adheres to the Unix "many small tools" paradigm, rlwrap is a kludge. It cannot know anything about command's internal state, which makes context-sensitive completion impossible. Using the readline library from within command is still the best option. 

Есть ли способ очистить логический входной и выходной данные, которые не связаны с существующими функциями readline ?

Обновление: я был бы доволен чем-то вроде

 units | col -b | tee units.log 

но это зависает, ожидая интерактивного ввода. Можно ли это исправить?

One Solution collect form web for “Регистрация входных и выходных данных без захвата всех введенных символов ввода и управления”

Недавно GNU Units добавила эту функцию в версию 2.10.

Параметр --log позволяет сохранять результаты вычислений в файле; это может быть полезно, если вам нужна постоянная запись о вашей работе.

https://www.gnu.org/software/units/manual/units.html#Logging-Calculations

  • Найдите комбинацию клавиш терминала OS X / escape-последовательность для Ctrl-
  • Изменить терминал по умолчанию для всех файлов .desktop?
  • Как использовать ESC-последовательности, чтобы сделать область прокрутки терминала
  • Как Linux использует / dev / tty и / dev / tty0
  • полужирный текст при использовании 256 цветов
  • Желтый цвет выглядит коричневым в консоли
  • Установка только цвета фона или текста на значение по умолчанию
  • Закрывающий терминал закрывает приложение, вызванное nohup
  • Будет ли chmod 000 / dev / stdin отключить терминал навсегда?
  • screen: автоматическое создание или повторное подключение сеансов в разных конфигурациях
  • Повторяя команду вывода текстового вывода, в прокручиваемом ncurses-подобном интерфейсе?
  • stty на старой AT & T unix: как добавить End-key для «end of line»?
  • Linux и Unix - лучшая ОС в мире.