Можно ли отключить цвета для определенной команды, например ls
, , но без использования API самой команды? Есть ли переменная env, которая отключит раскраску для команды, например, doing COLOR=off ls
? Любое решение было бы весьма признательно.
Редактировать: Мне нужно общее решение, которое будет применимо ко всем командам.COLOR=off command_name
решение1
Если вы готовы разрешить некоторые изменения в форматировании, вы можете просто передать их по каналуcat
ls | cat
Никаких цветов, но для каждой записи добавляется новая строка.
Редактировать:
Отключение цветов через настройки оболочки
Проверьте rc-файл(ы) вашей оболочки и посмотрите, где установлены цвета, затем создайте новый, .<shell>rc_mono
где эти настройки удалены, загрузите его и все готово. Например, для bash:
$cat ~/.bashrc_mono
export TERM=xterm-mono
. ~/.bashrc
alias ls='ls --color=none'
alias grep='grep --color=none'
Обратите внимание, что . ~/.bashrc
должно предшествовать новым псевдонимам для ls
и , grep
поскольку их окраска обычно устанавливается в ~/.bashrc
. Так что все, что вам нужно сделать, это
. ~/bashrc_mono ; ls
Соответственно, "переделать цвета"-rc может быть неплохим вариантом:
$cat ~/.bashrc_recolorize
export TERM=xterm-256color
. ~/.bashrc
Используйте eg htop
, и вы увидите разницу.
решение2
Одним из вариантов было бы задать TERM
для переменной тип терминала, который не поддерживает цвета.
Примеры:
TERM=dumb ls
TERM=dumb command_name
echo foo | TERM=dumb grep --color o
Если указать программам использовать «тупой терминал», это может иметь и другие (нежелательные) эффекты в зависимости от выполняемой команды, например, vi
они могут перестать распознавать клавиши управления курсором.
Как и предполагалФеликсДжНвы также можете попробовать TERM=xterm-mono
, но на моей тестовой системе (Git Bash на Windows) это не подавляет цвета в отличие от TERM=dumb
.