#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
переменной библиотека больше не отправляет эти коды.