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

Я пытаюсь зарегистрировать вывод из интерактивной программы командной строки; 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 

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

  • Как использовать ESC-последовательности, чтобы сделать область прокрутки терминала
  • Что хранится в файлах / dev / pts и мы можем их открыть?
  • Почему Emacs, работающий в терминале, не выделяет Ctrl +; из ";"?
  • Активация цветов в ссылках2 (текстовый режим)
  • Разве bash делает терминал переводит новую строку (\ n) на возврат каретки (\ r)?
  • Регистрация терминалов с помощью шпатлевки на AIX (включая smitty)
  • Как ssh всегда удается сбросить атрибуты терминала?
  • Будет ли chmod 000 / dev / stdin отключить терминал навсегда?
  • One Solution collect form web for “Регистрация входных и выходных данных без захвата всех введенных символов ввода и управления”

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

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

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

    Interesting Posts

    Изменение текста в текстовом файле

    Как установить процент использования каждого ядра из процессора

    Linux Mint 16: устройство Android, не указанное в lsusb

    Можно ли трубить в dirsplit?

    Как продолжить, когда мои сообщения о неправильном функционировании компонента gnome не соответствуют ответам в соответствующем списке рассылки

    Как присвоить значение переменной, когда значение содержит символ $ в ней

    Как логический адрес одного процесса отличается от логического адреса другого?

    Переформатирование большого количества XML-файлов

    Старый ноутбук HP nc4400 на Debian, вентилятор включается на 10 секунд, затем выключается на 20 секунд

    Использовать rsync только с закрытыми файлами

    Это было первое приложение для Linux для Linux?

    Как найти машину, с которой пользователь вошел в текущую машину с помощью ssh?

    Почему Metasploit не может устанавливать сеансы Meterpreter?

    Tmux: как мне привязать к C- (control-minus)?

    Получение ZFS для отображения физических дисков в zpool

    Linux и Unix - лучшая ОС в мире.