Удаление кодов ANSI при сохранении выходных данных скрипта

#linux #logging #command-line #terminal #ansi-escape

#linux #ведение журнала #командная строка #терминал #ansi-escape

Вопрос:

Некоторые программы создают красивые панели прогресса и прочее, используя escape-последовательности ANSI. Это мило.

Что не очень приятно, так это то, что если я помещаю выходные данные такого рода программы в файл, а затем пытаюсь просмотреть его, он заполняется странными управляющими последовательностями.

Есть ли способ удалить все коды ANSI во время входа в систему?

Обычно я регистрирую выходные данные скрипта таким образом:

 ./script >> /tmp/output.log
  

Комментарии:

1. разве вы не можете просто записать выходные данные программ в отдельные файлы журнала. Другими словами, почему вы должны использовать script? Удачи!

2. Скрипт не является сценарием ведения журнала, скрипт / программа — это то, что использует ANSI-последовательности. У него тоже нормальный вывод, и я не хочу сохранять этот обычный вывод. ansi-последовательности должны быть удалены.

3. Это следует переместить в unix.stackexchange.com .

Ответ №1:

Попробуйте:

 $ TERM=dumb ./script >> /tmp/output.log
  

Если это не работает, то это потому, что коды ANSI были жестко запрограммированы в скрипте, поэтому простого способа их удаления нет. Если это происходит, то это потому, что он делает правильные вещи, делегируя такие вещи, как pretty output в libncurses или аналогичные, так что при изменении TERM переменной библиотека больше не отправляет эти коды.