Странные символы, когда вывод 'ls' перенаправляется в файл

mycommand | awk '{sub(/^\./, "", $4);print $1,tolower($3),$4}'
2
08.06.2018, 11:53
2 ответа

Те "странные символы" являются escape-последовательностями для окраски вывода.

Это распечатает то число в синем цвете:

echo -e '\033[01;34m1010729039145\033[0m'

Посмотрите man console_codes для получения дополнительной информации.


Можно сказать ls в которых случаях это должно быть цвета вывода:

   --color[=WHEN]
          colorize the output; WHEN can be 'never', 'auto', or 'always' (the default); more info below

Похож на Ваш ls на самом деле псевдоним для ls --color=always. (Введите type ls проверить.)

Обычно ls --color=auto сделает правильную вещь: Это распечатает цвета на экране, но не в файлы.


Если Вы действительно хотите цвет в своем файле, Ваш должны решить, если Вы хотите видеть фактические escape-последовательности или интерпретируемые цвета.

Например, less команда примет значение по умолчанию к печати фактических последовательностей, но можно сказать ей показывать цвета вместо этого с -R опция:

   -R or --RAW-CONTROL-CHARS
          Like -r, but only ANSI "color" escape sequences are output in "raw" form.

Попробовать less textfile по сравнению с. less -R textfile.

7
27.01.2020, 21:51

Возможно, Вы имеете некоторые неверные конфигурации в emacs, пробуете это:

M-x ansi-color-for-comint-mode-on

Или добавьте эту строку к Вашему .emacs:

(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

Вы видите это для получения дополнительной информации.

1
27.01.2020, 21:51

Теги

Похожие вопросы