Desactivar colores en terminal y SSH

11

Mi máquina Linux local tiene una salida de terminal de color como esta;

ingrese la descripción de la imagen aquí

Cuando uso SSH en un cuadro pfSense / BSD, cambia los colores de esta manera;

ingrese la descripción de la imagen aquí

Incluso cuando hago SSH desde una máquina que no tiene una salida de terminal local de color, y SSH desde allí a este cuadro pfSense / FreeBSD, habilita la salida de color y comienza a producir una salida de color no deseada /

¿Hay algo que pueda cambiar localmente para que cuando envíe SSH al cuadro pfSense desde mi máquina local o mediante una máquina intermediaria, mi cliente ignore la configuración de color remota? Idealmente, quiero quedarme en blanco y negro, fondo de dos tonos estándar y solo color de texto.

jwbensley
fuente
¿Qué aplicación de terminal estás usando?
gertvdijk
1
Aquí estoy ejecutando Mint Linux 13, así que es Xfce Terminal Emulator 0.4.8.
jwbensley
Sé que esto no es lo que está pidiendo, pero ¿ha considerado cambiar la configuración de su terminal a texto blanco [o gris claro] sobre un fondo negro? Ese es el esquema de color básico con el que la mayoría de las cosas están diseñadas para trabajar. O bien, puede cambiar la configuración de la solicitud en la máquina remota (probablemente en .bash_profile) para tener mejores colores o ningún color.
Random832
1
Normalmente hago algo como TERM=xterm-mono ssh user@hostobtener esa configuración en el entorno remoto.
ott--

Respuestas:

7

Los colores en su terminal aparecen porque el tty envía secuencias de control con codificación ANSI para indicarle a su terminal que cambie los colores. Algunas, si no la mayoría de las aplicaciones de terminal se pueden configurar para ignorar esto y solo mostrar todo el texto en un color.

En xterm, puedes usar la -cmopción. Para Konsole, uno puede cambiar la asignación de todos los colores a la misma. Su aplicación de terminal XFCE puede tener opciones similares.

gertvdijk
fuente
Esta respuesta puede ayudar en algunos casos, pero en realidad no es una respuesta. Como se mencionó "Los colores en su terminal aparecen porque el tty envía secuencias de control con codificación ANSI para indicarle a su terminal que cambie los colores". Como SSH puede proporcionar TTY, también debería ser posible que SSH ignore los colores. ¿Alguna idea de cómo se hace esto?
patrik
SSH no está diseñado para interferir con los datos a través del tty, realmente. SSH configura un canal en el que puede ejecutarlo, no creo que deba implicar la alteración de datos a través de ese canal. Sin embargo, proporciona contexto y metadatos, como qué variables de entorno se pasan del cliente al servidor durante el tiempo de configuración de dicho canal.
gertvdijk
7

Cambiar la TERMvariable a alguna entrada que sea compatible pero que no tenga soporte de color podría funcionar. Me gusta:

TERM=xterm-old

Básicamente, necesita un TERMconocido por la base de datos termcap o terminfo del sistema FreeBSD para el que TERM=the-term tput colorsno devuelve un número positivo, y para GNU ls, uno para el que dircolors -p | grep -x 'TERM the-term'no devuelve nada. Es posible que aún no funcione para aplicaciones que generan secuencias de escape de color, independientemente de si el terminal afirma admitirlo o no.

Alternativamente, puede usar GNU screenpara deshabilitar colores, como (sintaxis zsh):

screen -c =(printf %s\\n "termcapinfo * 'AF=\E[1m:AB=\E[7m'") ssh ...

Eso habilitaría negrita para cada intento de establecer el color de primer plano y revertir para cada intento de establecer el color de fondo.

Creo que todo se reduce al hecho de que FreeBSD asume que el fondo del terminal es negro (o al menos oscuro). Cuando utilice en xtermlugar de xfce-terminal, podría cambiar dinámicamente el color de fondo y primer plano y / o los colores individuales para establecer diferentes perfiles de color. Eso se hace a través de secuencias de escape, pero también puede usar el xtermcontrolcomando que lo hace más fácil.

Stéphane Chazelas
fuente
Intenté eso, no funciona para mí. export TERM=vt100precedente ls --colortodavía muestra salida coloreada.
gertvdijk
@gertvdijk Buen punto. Parece que hay un error en GNU ls que, por defecto, codifica vt100como un terminal con soporte de color. He cambiado esa acción xterm-oldque no tiene ese problema pero que podría no tener una entrada terminfo en FreeBSD.
Stéphane Chazelas
Bueno, tampoco impide que otros programas generen color, es decir byobu. Estoy en Ubuntu 12.04 por cierto.
gertvdijk
1
@gertvdijk. Como dije. Solo funciona para programas con buen comportamiento que usan $TERMy las bases de datos termcap / terminfo (a través de curses u otras API de terminal) en lugar de codificar las secuencias de escape.
Stéphane Chazelas
¿Qué puedo usar para eliminar todas las secuencias de escape que pueden cambiar el estado del terminal después de EOF?
Janus Troelsen
2

Escriba el siguiente comando para eliminarlo:

$ ls --color=none

o use unaliaspara eliminarlo:

$ unalias ls
Len
fuente
1
¿No es eso solo para el lscommad?
jwbensley
ls tiene el alias de "ls --color = tty"
Len
Si. Lo sé. Pero toda mi salida de terminal es salida coloreada, no solo el lscomando, así que según mi comentario anterior: ¿no va a dejar de lsproducir salida coloreada, todo lo demás seguirá siendo coloreado?
jwbensley
sí, solo la porción ls
Len
1
estás usando xterm? xterm -cm
Len
1

En caso de que no desee modificar su ~ / .bashrc que estoy seguro contiene algo como export PS2=.....+colors......:

En la consola de Linux, ya sea tratar TERM=linux-m1bo TERM=linux-m2para obtener monocromo como "Gris / Blanco / Negro y Dim" para linux-M1b o "Verde / Blanco / Negro y Azul" (vendimia!) Para Linux-m2 ...

Con Putty (hay un puerto para usuarios de Mac), use TERM=putty-m1by en su TERM=putty-m2lugar ...

Esto hará exactamente lo que necesita, pero: necesitará una base de datos terminfo reciente para eso u obtenerla de allí si es necesario: wget http://canal.chez.com/linux.ti ; tic -x linux.ti

Alex PD: xterm-mono parece que ya no existe.

Alexandre MONTARON
fuente
-1

Primero, verifique su alias predeterminado:

alias

alias ls-'ls --color=auto

Si no funciona y necesita una solución rápida. Prueba esto lsy awkpipe:

vi /usr/local/bin/list
#!/bin/bash
ls $1
exit

establecer las permanentes 744.
Un lugar seguro para esto sería /usr/local/bin Asegúrese de que su RUTA incluya /usr/local/bin.

Nuevamente use discreción.

Una cosa ... los colores están destinados a marcar directorios ... desactivando los ls="ls --color=auto"nombres de las hojas solamente ... ls -aFo ls -Fagregarán los nombres del directorio /. Por lo tanto, sugeriría que tenga en cuenta. Podrías alias ls="ls -aF"o alias ls="ls -F".

Scott
fuente
2
¿Cómo proporciona esta respuesta una respuesta a la pregunta original?
jwbensley
¡Bienvenido a Stack Overflow! Te recomiendo que hagas el recorrido .
Stephen Rauch el