Intereting Posts
Установка плагина для quodlibet как патча Автоматическая генерация LDFLAGS, CPPFLAGS и других сообщений об ошибках Что такое символ или символ, и каково его значение вне форматирования кода SE? Сделать скрипт исполняемым из vi / vim SIOCSIFADDR: Файл существует после обновления ядра как настроить postgresql для входа в удаленно и локально Как использовать wget для загрузки определенных файлов из определенного каталога, когда сам каталог не имеет index.html? Как ограничить основной порт iptables и разрешить обслуживание на другом порту Без окон xterm? (Подделка терминала для процесса) Можно ли заставить okular не мигать при перезагрузке файла? Как изменить поведение управления окон GNOME? Как создать стандартную настройку dconf по умолчанию, начиная с только что созданной пользовательской конфигурации ad-hoc? Проблема с usb на CentOS Скрипт с использованием sudo работает с терминала, но не с ярлыка на рабочем столе Установка сменного ключа для изменения языкового макета в KDE

Очень странная проблема с текстовым файлом ls> при просмотре с помощью emacs

Я хочу перечислить компоненты текущего рабочего каталога в текстовом файле

ls -1 > textfile 

Выход выглядит отлично с большим количеством.

 1010661085645 1010729039145 1010747080245 1010849051345 1010859053445 1011046075845 

Однако, когда я просматриваю этот текстовый файл с помощью emacs, появляется несколько странных символов

  [0m [01;34m1010661085645 [0m [01;34m1010729039145 [0m [01;34m10107470802 45[0m [01;34m1010849051345 [0m [01;34m10108590534 45[0m [01;34m10110460758 45[0m 

Может ли кто-нибудь объяснить, что здесь происходит?

Эти «странные символы» – это 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 .

Возможно, у вас есть некорректные конфигурации в emacs, попробуйте следующее:

 Mx ansi-color-for-comint-mode-on 

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

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

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