domingo, 27 de octubre de 2024

Colorear las páginas man, ls y grep de linux

Configuración de colores para less

Para una lectura y visualización más fácil, vamos a colorear las páginas man, usando los siguientes colores:

  Verde , rojo , cyan , amarillo  y  azul .

 



Tenemos que crear un archivo oculto en mi home de usuario y/o de root con el siguiente nombre: ~./LESS_TERMCAP

y con el siguiente contenido:

#############################################

export MANPAGER='less -s -M +Gg'
export GROFF_NO_SGR=1 # For Konsole and Gnome-terminal

export LESS_TERMCAP_mb=$'\e[01;31m' # 31 rojo = modo parpadeo
export LESS_TERMCAP_md=$'\e[01;32m' # 32 verde = modo parpadeo

export LESS_TERMCAP_me=$'\e[0m'
export LESS_TERMCAP_se=$'\e[0m'
export LESS_TERMCAP_so=$'\e[44;33m' # 37 blanco # 44 azul 37 gris
export LESS_TERMCAP_ue=$'\e[0m'
export LESS_TERMCAP_us=$'\e[01;31m' # 31 rojo
export LESS_TERMCAP_so=$(tput bold; tput -T ansi setaf 3; tput setab 4) # amarillo fondo azul = Comenzar modo "resaltado"


#############################################

y luego en mi archivo: .bashrc añado al final del archivo, las siguientes dos lineas:

#############################################

export LESS="--RAW-CONTROL-CHARS"
[[ -f ~/.LESS_TERMCAP ]] && . ~/.LESS_TERMCAP


#############################################

MUY IMPORTANTE: Realizado este proceso, recargamos el contenido del archivo .bashrc, usando el siguiente comando: source .bashrc para que los cambios surtan efectos, al mismo momento de la actualización. Recordar que Konsole, en el momento de escribir este manual, guarda la cache un buen rato, para ello reiniciamos konsole.

Lo bueno de esto, es que vamos a tener los mismos colores tanto en el emulador de terminal llamado: konsole como en las tty 

 




Enlace al archivo
~./LESS_TERMCAP Tenemos que quitarle la extensión .txt y borrar las ultimas cuatro líneas.

 

Contenido real del archivo  ~./LESS_TERMCAP de los códigos de colores: de las páginas manpages y del contenido que se tiene que añadir al final del archivo: .bashrc






Antes y después








 Mostrar salidas de comandos coloreadas cuando se utilizan tuberías en la shell bash 

En el archivo .bashrc que se encuentra en nuestra carpeta personal, tenemos que buscar la linea:

# force_color_prompt=yes

y le borramos el símbolo de la almohadilla del principio, quedando así:

force_color_prompt=yes

A partir de ahora la salida de todos los comandos será en color, en algunos casos tenemos que configurar el color de algunos de ellos, como se ve en la siguientes opciones. Para la salida 
coloreada del comando ls, descomentamos en el archivo .bashrc y cambiamos auto por always

 

  alias ls='ls --color=auto'             
  alias dir='dir --color=auto'          
 
alias vdir='vdir --color=auto'      
 
alias grep='grep --color=auto'    
 
alias grep='fgrep --color=auto'   
 
alias grep='egrep --color=auto'  


Cambiamos auto por always

 

  alias ls='ls --color=always'             
 
alias dir='dir --color=always'          
  alias vdir='vdir --color=always'      
  alias grep='grep --color=always'    
  alias grep='fgrep --color=always'   
  alias grep='egrep --color=always'  

de modo que cuando hacemos ls, en realidad bash hace "ls --color=auto" o "ls --color=always" y nos muestra todo con colores.

Los comandos en entornos Linux omiten su salida coloreada cuando el destino no es la propia terminal sobre la que se están ejecutando, por eso, al utilizar una tubería con “more” o “less”, esta no muestra un resultado coloreado.

Para que la salida coloreada de un comando se mantenga al usar tuberías, es necesario que el comando que envía su salida estándar a otro comando permita mantener ese formato de salida. Algunos comandos incluyen la opción “--color”, la cual mediante el parámetro “always” permite preservar en su salida los códigos de colores.

Al otro lado de la tubería debe existir un comando que permite interpretar dichos códigos de color, eso dependerá del comando utilizado. Veamos unos ejemplos prácticos con las herramientas: “more” / “less” y “grep”.

Algunos comandos, como ls también implementan la opción “--color” con tres posibles variantes:

always (por defecto si no se especifica nada)
auto (suele ser la más utilizada)
never 


  alias ls='ls --color=auto'            

 
alias dir='dir --color=auto'         
  alias vdir='vdir --color=auto'     
  alias grep='grep --color=auto'   
 
alias grep='fgrep --color=auto'  
  alias grep='egrep --color=auto' 


Cambiamos auto por always

  alias ls='ls --color=always'             
  alias dir='dir --color=always'          
  alias vdir='vdir --color=always'      
  alias grep='grep --color=always'    
  alias grep='fgrep --color=always'   
  alias grep='egrep --color=always'  


Esto es debido a que “auto” únicamente utiliza códigos de colores si la salida NO se va a pasar por una tubería a otro comando, permitiendo que se reciban los datos correctamente.

Ejemplo real:

  ls -laC /etc | less  

o

  ls -laC /etc|less 
 





Resumen

   force_color_prompt=yes               

  eval "$(dircolors)"                           

  alias ls='ls --color=always'             
  alias dir='dir --color=always'          
  alias vdir='vdir --color=always'      
  alias grep='grep --color=always'    
  alias grep='fgrep --color=always'   
  alias grep='egrep --color=always'