
Configuré el tipo de terminal en monocromático en inittab
un archivo así:
c2:... tty2 linux-m
pero cuando escribo un comando con salida en color como:
ls --color=always -l
Todavía obtengo resultados coloreados. ¿Cómo puede ser si el terminal está configurado sin color (definición de tty en el archivo inittab como arriba)?
Respuesta1
El tipo de terminal solamentedescribeuna forma particular de utilizar un terminal. No hay garantías de que un terminal realmente se comporte de esa manera, ni tampoco hay garantía de que un programa utilice otra información para manipular el terminal.
En este caso, el ls
programa utiliza su propia base de datos codificada, que dice que "linux" colorea.
Lectura adicional: Preguntas frecuentes sobre ncursesAplicaciones citadas erróneamente como usuarios de la biblioteca
Respuesta2
Como se mencionó anteriormente, es probable que esos programas generen directamenteSecuencias de escape ANSI:
A medida que las tablas de búsqueda de 256 colores se volvieron comunes en las tarjetas gráficas, se agregaron secuencias de escape para seleccionar entre un conjunto predefinido de 256 colores:
ESC[ … 38;5;<n> … m Select foreground color ESC[ … 48;5;<n> … m Select background color 0- 7: standard colors (as in ESC [ 30–37 m) 8- 15: high intensity colors (as in ESC [ 90–97 m) 16-231: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)
232-255: escala de grises del negro al blanco en 24 pasos
Este argumento también se vería reforzado por las respuestas a una pregunta similar tituladaDeshabilite los colores en la terminal y SSH en Unix SE.
En tus preguntas anteriores para este tema mencionaste que estás usando xterm. Elpágina de manual de xtermTambién enumera una -cm
opción para desactivar el reconocimiento de secuencias de escape ANSI. Esto también se menciona en las respuestas a la pregunta vinculada:
-cm
Esta opción desactiva el reconocimiento de secuencias de escape de cambio de color ANSI. Establece el recurso colorMode en "falso".
Lo que estás haciendo al configurar la información del terminal es que defines las capacidades del terminal (segúnhombre terminfo). Como tal, lo que estás haciendo equivale a decirles ls
, etc., que estás seguro de que puedes hacer ciertas cosas, pero eso no significa que tengan que respetarlo de ninguna manera.