Can colorized output be captured via shell redirect? [duplicate]

72
задан billc 1 June 2016 в 20:23
поделиться

3 ответа

Один из способов получить цветной вывод - это команда script . Запуск сценария запустит сеанс bash, в котором весь необработанный вывод записывается в файл (по умолчанию с именем машинописный текст ).

52
ответ дан 24 November 2019 в 12:42
поделиться

некоторые программы удаляют раскрашивание, когда понимают, что вывод не является телетайпом (т.е. когда вы перенаправляете их в другую программу). Вы можете сказать некоторым из них, чтобы они использовали цвет принудительно и сказали пейджеру включить раскрашивание, например, используйте less -R

10
ответ дан 24 November 2019 в 12:42
поделиться

Перенаправление не удаляет цвета, но многие команды обнаруживают, когда они отправляют вывод на терминал, и не будут создавать цвета по умолчанию, если это не так. Например, в Linux ls --color = auto (который во многих местах имеет псевдоним plain ls ) не будет создавать цветовые коды при выводе в канал или файл, но ls --color будет. Многие другие инструменты имеют аналогичные флаги переопределения, чтобы заставить их сохранять раскрашенный вывод в файл, но все они специфичны для отдельного инструмента.

Даже если у вас есть цветовые коды в файле, чтобы увидеть их, вам нужно использовать инструмент, который оставляет их нетронутыми. less имеет флаг -r для отображения данных файла в «необработанном» режиме; это отображает цветовые коды. править: Немного новые версии также имеют флаг -R, который специально учитывает цветовые коды и отображает их правильно, с лучшей поддержкой таких вещей, как перенос / обрезка строк, чем в необработанном режиме, потому что меньше может сказать, какие элементы контролируются коды и символы, которые на самом деле выводятся на экран.

34
ответ дан 24 November 2019 в 12:42
поделиться