Дополнительные экранирующие символы из команды ls усложняют жизнь - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу выполнить простую команду ls и сохранить результаты в файле:

ls -ltr equ* > ffile

Имена файлов отображаются с добавленными дополнительными символами. Они явно отображаются в некоторых утилитах (например, vi), а не в других (например, больше). Пример:

-rw------- 1 me 9607LPET  72680 Apr 10 12:00 ^[[0m^[[00mequ_00020.dat^[[0m
-rw------- 1 me 9607LPET  72680 Apr 10 12:00 ^[[00mequ_00021.dat^[[0m
-rw------- 1 me 9607LPET 356110 Apr 10 12:00 ^[[00mequ_00065.dat^[[0m
-rw------- 1 me 9607LPET  60253 Apr 10 12:00 ^[[00mequ_00067.dat^[[0m
-rw------- 1 me 9607LPET  83656 Apr 10 12:00 ^[[00mequ_00068.dat^[[0m

В любом случае, эти символы обнаруживаются практически любым инструментом, который я мог бы использовать для обработки этого списка файлов. Они очень затрудняют обработку имен файлов. Как мне от них избавиться? Зачем они там вообще?

РЕДАКТИРОВАТЬ: Этот вопрос был помечен как дубликат другого вопроса, который также включал в себя избавление от цветов в выводе ls. Тем не менее, я утверждаю, что избавление от цветов - это единственное решение двух разных проблем . Другой вопрос, в первую очередь, о цветах. Это не так. У пользователя может быть именно та проблема, с которой я только что столкнулся, и он по-прежнему не имеет ни малейшего представления о том, что ему следует искать другие вопросы, касающиеся цвета в выводе ls. Я, конечно, был одним из таких пользователей. Поэтому я утверждаю, что это не является надлежащей копией другого вопроса, и этот вопрос следует рассматривать как уникальный вопрос об уникальной проблеме, поскольку на самом деле это так и есть.

1 Ответ

3 голосов
/ 11 апреля 2019

Это escape-последовательности ANSI, которые включают и выключают цвета. Попробуйте добавить

--color=never

до ls, чтобы отключить раскраску.

Как правило, вы должны использовать --color=auto, который должен отключать цвета, когда выходной сигнал не является терминалом.

...