¿Cómo desactivar los colores para un comando específico?

¿Cómo desactivar los colores para un comando específico?

¿Es posible desactivar los colores para un comando específico como ls, pero sin utilizar la API del comando en sí? ¿Existe algún tipo de variable env que desactive el color para un comando como hacer COLOR=off ls? Cualquier solución sería muy apreciada.

Editar: quiero una solución general que sea aplicable a todos los comandos. comoCOLOR=off command_name

Respuesta1

Si está dispuesto a permitir algunos cambios en el formato, también puede simplemente canalizarlo.cat

 ls | cat

Sin colores, pero nueva línea para cada entrada.


Editar:

Desactivar colores a través de la configuración del shell

Verifique los archivos rc de su shell y vea dónde se configuran los colores, luego cree uno nuevo .<shell>rc_monodonde se eliminan estas configuraciones, consígalo y listo. Por ejemplo, para bash:

$cat ~/.bashrc_mono
export TERM=xterm-mono
. ~/.bashrc
alias ls='ls --color=none'
alias grep='grep --color=none'

Tenga en cuenta que . ~/.bashrcdeben preceder a los nuevos alias de lsy, grepya que su color suele estar establecido en ~/.bashrc. Entonces todo lo que necesitas hacer es

. ~/bashrc_mono ; ls 

En consecuencia, un rc "rehacer colores" podría ser bueno:

$cat ~/.bashrc_recolorize
export TERM=xterm-256color
. ~/.bashrc

Utilice por ejemplo htopy verá la diferencia.

Respuesta2

Una opción sería establecer la TERMvariable en un tipo de terminal que no admita colores.

Ejemplos:

TERM=dumb ls
TERM=dumb command_name
echo foo | TERM=dumb grep --color o

Decir a los programas que utilicen una terminal tonta también puede tener otros efectos (no deseados) dependiendo del comando que ejecute, por ejemplo, vies posible que ya no reconozca las teclas del cursor.

Como lo sugiereFelixJNTambién puedes intentarlo TERM=xterm-mono, pero en mi sistema de prueba (Git bash en Windows) esto no suprime los colores a diferencia de TERM=dumb.

información relacionada