
Entiendo ls
que se utiliza dircolors
para mostrar resultados en color. dircolors
tiene una base de datos predeterminada de colores asociados con extensiones de archivos, que se pueden imprimir con el comando
dircolors --print-database
Según man dir_colors
leí, la base de datos de todo el sistema debe estar ubicada en /etc/DIR_COLORS
. Pero este archivo no existe en mi sistema (Debian). ¿Cómo puedo modificar la configuración de color de todo el sistema dircolors
? ¿De dónde toma el comando dircolors --print-database
la configuración cuando no existe ningún archivo?
Soy consciente de que el usuario puede tener un archivo específico ~/.dircolors
con su configuración, pero esto no es adecuado para mí, ya que necesito cambiar la configuración para todos.
Una segunda pregunta es si es posible utilizar colores de 8 bits para dircolors. Mi terminal es xterm-256color
.
Respuesta1
ls
toma la configuración de color de la variable de entorno LS_COLORS
. dircolors
es simplemente una forma conveniente de generar esta variable de entorno. Para que esta variable de entorno surta efecto en todo el sistema, colóquela en el archivo de inicio de su shell.
Para bash
, pondrías esto en /etc/profile
:
# `dircolors` prints out `LS_COLORS='...'; export LS_COLORS`, so eval'ing
# $(dircolors) effectively sets the LS_COLORS environment variable.
eval "$(dircolors /etc/DIR_COLORS)"
Para zsh
, lo colocarías /etc/zshrc
o lo harías para zsh
que se leyera /etc/profile
al inicio. Es posible que su distribución zsh
ya lo haya hecho. Solo menciono esto para señalar que la configuración dircolors
para todos depende del shell que utilicen.
En cuanto a dircolors
de dónde obtiene su configuración, cuando no especifica un archivo, simplemente usa algunos valores predeterminados integrados.
Puedes usar xterm
los códigos de escape de 256 colores de 's en tu archivo dircolors, pero ten en cuenta que solo funcionarán para xterm
terminales compatibles. Por ejemplo, no funcionarán en la consola de texto de Linux.
El formato para códigos de escape de 256 colores es 38;5;colorN
para colores de primer plano y 48;5;colorN
colores de fondo. Así por ejemplo:
.mp3 38;5;160 # Set fg color to color 160
.flac 48;5;240 # Set bg color to color 240
.ogg 38;5;160;48;5;240 # Set fg color 160 *and* bg color 240.
.wav 01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!
Respuesta2
RESPUESTA CORTA
dircolors
(abreviatura de Directory Colors) no se puede utilizar para modificar colores globalmente. Para hacer eso, probablemente quieras ajustar la paleta de colores en tu emulador de terminal.
Por ejemplo, dircolors
no se utiliza para ajustar los colores solicitados por grep
, vi
, tmux
o man
.
dircolors
se utiliza para ajustar los colores que los comandos ls
ytree
pedidopara ser mostradoal mostrar sus nombres de archivos.
me estresosolicitud para ser mostrado, porque los colores que solicita un comando son solo los que se envían a su emulador de terminal. Su emulador de terminal puede entonces elegir mostrar colores diferentes a los solicitados. Lo que se solicita y lo que finalmente se muestra en la pantalla de su terminal que verá, pueden ser dos conjuntos de colores diferentes.
DESCRIPCIÓN GENERAL DEL PROCESO DE COLOR
1) Cualquier programa basado en texto o shell integrado, puede por diseño, salida ANSI (Instituto Nacional Estadounidense de Estándares)solicitud de colorcódigos de escape. Aquí recalco que estas son sólo solicitudes al terminal, que tiene la decisión final de cómo mostrarlas. El sistema de código de colores ANSI es un sistema muy antiguo que se originó inicialmente en terminales de hardware independientes.
Una solicitud de texto en color se parece a:
<requested-color><text-to-be-displayed-in-that-color><next-requested-color><next-text...
La parte 'color solicitado' no se muestra. Más bien, el emulador de terminal lo utiliza para que la pantalla muestre el "texto que se mostrará en ese color" en el color solicitado.
Los programas pueden llamar [ncurses][1]
para enviar códigos ANSI al emulador de terminal. Básicamente tienes 8 colores estándar y 8 colores más llamativos/brillantes que se pueden solicitar. (ncurses es la abreviatura de New Curses, donde 'curses' es un juego de palabras con Optimización del cursor o una biblioteca de software para una salida eficiente basada en texto a una pantalla de terminal).
Se pueden configurar muchos comandos comunes basados en texto para generar códigos de color ANSI enpedidoque su salida sea coloreada por el terminal. Ejemplos son: ls
, tree
, vim
, grep
, tmux
y man
.
Estos códigos de color de salida (códigos de control con prefijo de escape) solicitan que la pantalla cambie a una combinación de colores determinada (primer plano, fondo y atributos) antes de que se genere el siguiente texto. Nuevamente, estos códigos de escape en realidad no determinan los colores que ves. Más bien especifican opciones de paleta particulares.
En el pasado existía una paleta de colores estándar. Si solicitó verde, verá verde.
Pero un emulador de terminal, como GNOME Terminal
por ejemplo, puede cambiar este comportamiento. Por ejemplo, si un programa solicitaverde, a través de un código de escape verde ANSI, puede decidir que esto debería mostrarse enrojo cerezaen tu pantalla. Lo que es importante recordar es que esto significa que:todoLos verdes solicitados, en cada programa de terminal, se convertirán en rojos. En otras palabras, no puedes simplemente ajustar los colores de salida de un programa en particular, de grep
esta manera.
2A) Los comandos de directorio como ls
y tree
son algo especiales, en el sentido de que pueden ser configurados por el usuario para colorear los nombres de archivos por tipo de archivo según sus especificaciones. Esto es diferente a man
, por ejemplo, que utiliza un conjunto fijo de colores alternativos además del blanco y negro.
Por ejemplo, es posible que se solicite que las carpetas se muestren en azul marino, mientras que los enlaces se muestren en azul claro.
Puede solicitar color para formatos de terminal específicos (como ansi o PuTTY) y por tipo básico de archivo (como carpeta, bloque o adhesivo) y/o por extensión de nombre de archivo coincidente (como *.sh o *.png). Esto se hace cambiando los códigos de color de salida ANSI por tipo de nombre de archivo usando la configuración proporcionada por la variable de entorno LS_COLORS. Vea a continuación cómo hacerlo.
2B)También hay combinaciones de colores especiales envim
usando por ejemplo :colorscheme default
. (Un tema para otro día.)
3)Su terminal (Terminal GNOME en mi caso) luego interpreta cualquier código ANSI para generar los colores de pantalla reales que ve.
AJUSTANDO GLOBALMENTE LOS COLORES EN TU EMULADOR DE TERMINAL
Si ajusta la configuración de color en GNOME Terminal
(o probablemente en cualquier emulador de terminal que admita esta función), afectará los colores observables de todos y cada uno de los programas de texto que generen códigos de color ANSI. Estos cambios de color se ajustarán simultáneamente en todas las ventanas de terminal abiertas (suponiendo que esté utilizando el mismo emulador de terminal para todas las ventanas).
Si estuviera usando 2 emuladores de terminal diferentes (como ambos GNOME Terminal
y XTerm
), entonces cada uno podría ajustar los colores de salida final de manera diferente.
Con las Preferencias de Terminal de GNOME puede ajustar la 'paleta de colores' de todo el sistema (es decir, el conjunto de 16 colores disponibles para aplicaciones basadas en texto), según su propio conjunto de colores personalizado.
GNOME Terminal
Ayuda dice:
Tradicionalmente, los emuladores de terminal ofrecían una paleta de 16 colores, esto es lo que puedes modificar aquí. Terminal admite un conjunto ampliado de 256 colores, pero los 240 colores adicionales no se pueden editar aquí. El terminal incluso ofrece acceso directo a más de 16 millones de colores, esto se llama modo "color verdadero".
Si los cambios que realiza en la paleta no parecen tener efecto, probablemente el contenido que ve consiste en colores de paleta extendida o colores verdaderos, en lugar de los 16 colores base.
USO DE COLORES
Así es como funciona:
a) Run $ dircolors -p >/etc/DIR_COLORS # to produce DIR_COLORS template file
b) Hand edit /etc/DIR_COLORS to adjust ANSI color codes that will be output
for various things to display. For example, any filenames like *.png can
request a particular ANSI color combination. (ANSI color codes are escape
prefixes.)
c) Run dircolors again, this time in both
/etc/profile (for logins) and
/etc/bash.bashrc (for terminal windows)
to read DIR_COLORS and create and export the LS_COLORS
environment variable, like this:
$ eval "$(dircolors -b /etc/DIR_COLORS)"
Llamo dircolors
temprano en mi /etc/profile
donde lo uso para configurar y exportar LC_COLORS
.
# === Create DEFAULT LS_COLORS ENVIRONMENT VARIABLE ===========================
# /etc/DIR_COLORS is a data file from: $ dircolors -p > /etc/DIR_COLORS
eval "$(dircolors -b /etc/DIR_COLORS)" # This reads /etc/DIR_COLORS
# and then runs these two commands:
#
# $ LS_COLORS=... # <-- where this value is created from /etc/DIR_COLORS
# $ export LS_COLORS
$ bash --login
Como referencia , a continuación, al final de esta respuesta, se muestra cómo habilito colores en varios comandos en /etc/profile (que se lee cada vez que se inicia sesión, (incluido )).
Tenga en cuenta que hay algunas carpetas y archivos de vídeo inverso que se muestran divertidos ls
(por ejemplo, archivos de copia de seguridad de DOS). Ninguna cantidad de desorden en la Terminal GNOME (a continuación) parece afectar estos colores. Pero puedes editar DIR_COLORS usado por dircolors
(ver notas arriba) para ajustar cosas con LS_COLORS.
CONSEJOS SOBRE CÓMO AJUSTAR LOS COLORES DE SU PROPIO SISTEMA
En el menú de la Terminal GNOME, seleccione Edit
| Preferences
. En el panel izquierdo, elija el perfil que desea ajustar y en el panel derecho seleccione la Colors
pestaña.
!! ANTES DE CONTINUAR, LE SUGIERO ENCARECIDAMENTE QUE HAGA UNA COPIA DE SEGURIDAD DE SUS PREFERENCIAS EXISTENTES. Una captura de pantalla funcionará bien. Vea la captura de pantalla mía a continuación.
TL;DR- Si no desea configurar esta casilla de verificación:
para usar los valores predeterminados más básicos, pero en su lugar desea un fondo de trabajo negro con aplicaciones coloreadas bash
, vim
, grep
, ls
, ..., luego intente configurar los colores de esta manera:
Este diálogo de colores me pareció un poco confuso al principio, pero es lógico una vez que lo entiendes. El mayor problema es que todas mis aplicaciones de texto comparten la misma paleta de colores, pero la usan de manera algo diferente, especialmente ls
.
Estos son los colores exactos que estoy usando:
black aqua green orange light yellow purple blue, primary gray (X) <-- X=Don't care
#000000 #01B9E0 #389400 #FF8A00 #F4FF92 #C401C4 #005EEA #AAAAAA
0 1 2 3 4 5 6 7
------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ <-- 1st set are "normal colors"
------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ <-- 2nd set are the "brighter colors" (for check box below)
8 9 10 11 12 13 14 15
#555555 #FF5555 #55FF55 #FFFF55 #5397FE #FF55FF #55FFFF #D6D6D6
dark gray (X) red/orange lime yellow (X) blue, medium pink aqua, bright light gray (X) <-- X=Don't care
ENTENDIENDO EL DIÁLOGO 'PREFERENCIAS - PERFIL' DE GNOME TERMINAL
Las secciones superior e inferior ( Text and Background Color
y Palette
) parecen funcionar casi de forma completamente independiente, excepto que las Palette
selecciones son una capa encima (es decir, modifican aún más) la configuración superior en Text and Background Color
. (Además, incluso si Use colors from system theme
está marcado, Show bold text in bright colors
en la parte inferior sigue siendo importante, al menos para ls
.)
Primero, vamos a meternos con la Text and Background Color
configuración.
Estos determinan los colores predeterminados para colores básicos, no especiales Text
y Background
. También puede elegir modificadores opcionales para texto Bold
o Highlight
y un color de cursor fijo si lo desea, como el naranja brillante, por ejemplo, que podría hacer felices a algunas personas.
La Use colors from system theme
casilla de verificación parece decidir si desea heredar la configuración de color o definirla usted mismo. Cuando lo desmarcas, puedes elegir un esquema integrado o personalizado en el menú desplegable.
Lo que elijas se incluirá en las muestras Text
y Background
a continuación, excepto Custom
.
Tenga en cuenta que sus elecciones aquí no afectan las otras 3 casillas de verificación debajo.
También tenga en cuenta que si hace clic primero en la muestra Text
o Background
, obtendrá un selector de color y, una vez que elija Select
en él, establecerá el Built-in schemes
menú desplegable en Personalizado.
Si marca Bold color
y establece un color, el texto que un programa especifica en negrita obtiene este color anulado.
Si marca Cursor color
, podrá elegir colores fijos para su cursor. (Tenga en cuenta que tendrá que mover el cursor sobre el texto para verlo cambiar). Sin esta opción marcada, el cursor parece variar según el color del texto sobre el que se encuentra.
Si marca Highlight color
, verá el efecto de estas dos muestras, por ejemplo, en vim cuando arrastre el mouse para copiar algún texto.
Ahora es el momento de meterse con la Palette
configuración.
De manera similar a lo anterior, el menú desplegable coloca un conjunto de colores en las muestras que se encuentran debajo. Notarás que hay dos filas de 8. Estas muestras anulan los 8 colores de primer plano ANSI y los 8 de fondo establecidos por terminfo.
Lo que es importante ver es que puedes configurar estas muestras para variaciones de color sutiles.
Además, los cambios que realice aquí afectarán a todos o a la mayoría de sus programas basados en texto que tienen el color habilitado. Así que ten cuidado aquí. (No puedo decirle cómo hacer una copia de seguridad de esto primero, porque todavía no lo sé. Tome una captura de pantalla como mínimo).
Si bien no sé para qué se utilizan todas estas muestras, algunos experimentos han deducido lo siguiente.
Antes de comenzar a probar, abra algunas cosas de GNOME Terminal
: una vim
sesión de edición de código de bash
y otra c
de ls
su directorio de inicio, una tree
ejecución y una tmux
sesión. A medida que cambie las cosas a continuación, podrá ver mejor lo que está cambiando.
Intente hacer pequeños cambios al principio. Y asegúrese de hacer clic y desmarcar la casilla de verificación en la parte inferior (se explica con más detalle a continuación).
Precaución:Si configura y luego configura manualmente las 16 muestras de color como sugiero, tenga cuidado porque si vuelve a elegir algo más en , borrará su configuración anterior y, si lo desea nuevamente, Palette
tendrá que comenzar de nuevo. lo cual es un dolor. (Parece que no hay forma de guardar la configuración de color personalizada, excepto con una captura de pantalla o escribiéndolas una por una).Custom
Built-in schemes:
Palette
Custom
Built-in schemes:
Custom
-- Color palette:
ajustes
tmux status text status-backgr
tmux vi literals flow (orange) comments&fcns $names var names ?
vi C - literals types flow (brown) comments&fcns macros - ?
vi Bash - literals - flow (brown) comments&fcns Environ var names ? flow: brown (can't change with gnome)
Bash - user@dir $
Bash ls - Reverse-backg Reverse-foregr
gcc
black aqua green orange dark yellow purple blue, primary gray (X) <-- X=Don't care
#000000 #01B9E0 #389400 #FF8A00 #C6CF76 #C401C4 #005EEA #AAAAAA
0 1 2 3 4 5 6 7
------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ <-- 1st set are "normal colors"
------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ <-- 2nd set are the "brighter colors" (for check box below)
8 9 10 11 12 13 14 15
#555555 #FF5555 #55FF55 #FFFF55 #5397FE #FF55FF #55FFFF #D6D6D6
dark gray (X) red/orange lime yellow (X) blue, medium pink aqua, bright light gray (X) <-- X=Don't care
tmux ? ? ?
tmux vi ? ? ?
vi C ? ? ?
vi Bash ? ? ?
Bash ? root@dir # ? ?
Bash ls ? x.sh ? directories media files links ?
gcc ? errors ? ?
Finalmente, en la parte inferior, está la Show bold text in bright colors
casilla de verificación. La ayuda de GNOME dice:
Colores brillantes para texto en negrita
Tradicionalmente, los terminales no separaban claramente el peso de la fuente en negrita de los colores intensos; a menudo, ambos se habilitaban juntos. Las mejoras recientes, como la introducción de soporte de color verdadero y ciertos esquemas de color (por ejemplo, Solarized) hicieron deseable separar los dos conceptos, es decir, independizar el brillo del peso de la fuente.
...
Disable Show bold text in bright colors for the new default behavior, the complete separation of color intensity and font weight;
o habilite esta opción para mejorar la compatibilidad con versiones anteriores.
Cuando está marcado, toma lo que se mostró en las filas superiores y, en su lugar, muestra los colores de la fila inferior. Si marca esto, notará que algunos de los nombres ls
cambiarán un poco de color. Creo que se relaciona con las secuencias de color n.º 1 de ISO 6429, "para colores más brillantes" en $ man dir_colors
. Parece que esto afecta mayoritariamente ls
y no vim
.
¿CÓMO SE VEN LOS COLORES DE LOS ESQUEMAS INTEGRADOS?
Cuando built-in schemes
fueron probados con la utilidad de prueba de color que se describe aquíVeo los siguientes resultados (consejo para compilar y vincular con esto $ gcc -Wall -lcurses color-demo.C
):
Nota laShow bold text in bright colors
la casilla de verificación está marcada. Sin marcar, los colores de alta y baja intensidad son iguales.
Linux console
(parece ser el conjunto de colores CGI original):
xterm
:
rxvt
(fuera de orden porque esto se acerca más a los anteriores):
Tango
(fuera de servicio porque esto está más cerca de Solarizado a continuación):
Solarized
:
¿CÓMO CONFIGURO MIS COMANDOS PARA QUE SE MUESTREN EN COLOR?
En tu /etc/.bashrc.shared
(llamado por ~/.bashrc
y /root/.bashrc
), o si no lo tienes en tu ~/.bashrc
y /root/.bashrc
:
# === ADD COLOR UNLESS DUMB TERMINAL ========================================
if [ "$TERM" != "dumb" ]; then
# ENVIRONMENT:
# You can turn off these colorizing aliases in the interactive environment by invoking
# shell with TERM="dumb bash".
# Assume LS_COLORS is already set by dircolors in /etc/profile. It can be adjusted later.
# Using color to distinguish file types is disabled both by default and with --color=never.
# With --color=auto, ls emits color codes only when standard output is connected to a terminal.
export COLOR_MODE='--color=auto'
# The use of alias limits color effects to the interactive command usage.
# It has advantage over exporting environment variable "export COLOR_MODE='--color=auto'"
# since color can be seen under pager programs such as less(1). If you wish to suppress
# color when piping to other programs, use "--color=auto" instead in the above example
# for "~/.bashrc".
# !! NOTE - alias is very picky about extra spaces around = sign
# --- grep
# Surround the matched (non-empty) strings, matching lines, context lines, file names,
# line numbers, byte offsets, and separators (for fields and groups of context lines)
# with escape sequences to display them in color on the terminal.
# The colors are defined by the environment variable GREP_COLORS, (plural).
# See grep man page for GREP_COLORS instructions.
alias grep=' grep ${COLOR_MODE}'
alias egrep='egrep ${COLOR_MODE}'
alias fgrep='fgrep ${COLOR_MODE}'
alias zgrep='zgrep ${COLOR_MODE}'
# --- ls ------------------------
alias ls='ls ${COLOR_MODE}'
# These next two use the ls alias above, i.e. the first one below is really 'ls ${LS_OPTS} -l'
alias ll='ls -l' # -l = long
alias l='ls -lA' # -A = amost all (.*, but not . nor ..)
# --- tree ----------------------
alias tree='tree -C' # -C adds color to tree
# --- less ----------------------
alias less='less -R' # Output raw control chars for ANSI colors
# --- man -----------------------
# ref: http://www.tuxarena.com/2012/04/tutorial-colored-man-pages-how-it-works/
# NOTE these seem to use TERMCAP which is obsolite.
# ANSI "color" escape sequences are sequences of the form: ESC [ ... m
export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode
export LESS_TERMCAP_md=$(printf '\e[01;38;5;75m') # enter double-bright mode
export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode
export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
export LESS_TERMCAP_us=$(printf '\e[04;38;5;200m') # enter underline mode
export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
fi
Respuesta3
¿De dónde toma el comando
dircolors --print-database
la configuración cuando no existe ningún archivo?
Según elmanual, utiliza una base de datos precompilada en ausencia de un archivo.
Si se especifica un archivo, dircolors lo lee para determinar qué colores usar para qué tipos de archivos y extensiones. De lo contrario, se utiliza una base de datos precompilada. Para obtener detalles sobre el formato de estos archivos, ejecute '
dircolors --print-database
'.
Para cambiar la configuración para todos, puede crear un /etc/dircolors
archivo y agregar lo siguiente a /etc/bashrc
:
d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"
Respuesta4
Linux establece los colores de fondo de la consola con dircolors:
Su archivo dircolors controla los colores de las palabras que aparecen a través de ls en la consola. Encuentra este .dircolors
archivo para tu distribución, un enlace de ayuda:
http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html
Para mí en Fedora 17, mi archivo dircolors es:/etc/DIR_COLORS
Copie /etc/DIR_COLORS
en su /home/el/.dircolors
directorio. Créelo si no existe.
Edite /home/el/.dircolors, busque el texto "dir".
Cambia esto:
DIR 01;34 # directory
A esto:
DIR 01;36 # directory
Guarde, cierre y reinicie el shell. Los directorios van desde azul oscuro sobre negro (ilegible) hasta verde azulado brillante sobre negro (legible).