2 votos

grc inside terminal (con diferentes colores en el terminal en función del tamaño de los archivos) no funciona en 10.14.6 Mojave y funciona en High Sierra 10.13.6

Puedo conseguir trabajo de la herramienta grc que permite tener colores para los permisos y de diferentes colores como una función del tamaño de los archivos enumerados por ejemplo ls -l comando.

En mi anterior MacBook con Alta Sierra 10.13.6, que te voy a mostrar un ejemplo de lo que quiero conseguir :

grc working

Como puedes ver, tengo un código de colores para los diferentes tamaños de archivos (cada vez más blanco, amarillo, verde y rojo).

Ahora, en mi nueva MacBook con Mojave 10.14.6, con el mismo ~/.bashrc y ~/.bash_profile ficheros, que no puede tener la misma representación que de la Sierra Alta 10.13.6 MacBook pro. Aquí abajo lo que me sale :

grc not working

Se puede ver que no hay colores que aparecen por el tamaño de los archivos (a diferencia de la Alta Sierra caso).

Tengo el mismo problema cuando tengo que hacer un ssh desde Mojave a la Sierra Alta.

Aquí el contenido de ~/.bashrc en Mojave no de trabajo versión :

############ dircolors binary #################
export PATH=/opt/local/libexec/gnubin:$PATH 
###############################################

export CLICOLOR=1
export LS_COLORS='README*=4;31:*.txt=1;35'
eval `dircolors ~/.dircolors`

########### GRC colourify #################
source ~/.grc/grc_bash

########### alias l #######################
alias l='grc -es --colour=auto ls --color -G -lrt'

########## function ls ####################
function ls { grc -es --colour=auto ls --color -G -C -rt "$@" | gsed -r 's/'$(echo -e "\033")'\[[0-9]{1,2}(;([0-9]{1,2})?)?[mK]//g' ;}

Para ~/.grc/grc_bash, yo he puesto :

GRC="$(which grc)"
if [ "$TERM" != dumb ] && [ -n "$GRC" ]; then
    alias colourify="$GRC -es --colour=auto"
    alias blkid='colourify blkid'
    alias nmap='colourify nmap'
    alias configure='colourify ./configure'
    alias df='colourify df'
    alias diff='colourify diff'
    alias docker='colourify docker'
    alias docker-machine='colourify docker-machine'
    alias du='colourify du'
    alias env='colourify env'
    alias free='colourify free'
    alias fdisk='colourify fdisk'
    alias findmnt='colourify findmnt'
    alias make='colourify make'
    alias gcc='colourify gcc'
    alias g++='colourify g++'
    alias id='colourify id'
    alias ip='colourify ip'
    alias iptables='colourify iptables'
    alias as='colourify as'
    alias gas='colourify gas'
    alias ld='colourify ld'
    alias ls='colourify ls'
    alias lsof='colourify lsof'
    alias lsblk='colourify lsblk'
    alias lspci='colourify lspci'
    alias netstat='colourify netstat'
    alias ping='colourify ping'
    alias traceroute='colourify traceroute'
    alias traceroute6='colourify traceroute6'
    alias head='colourify head'
    alias tail='colourify tail'
    alias dig='colourify dig'
    alias mount='colourify mount'
    alias ps='colourify ps'
    alias mtr='colourify mtr'
    alias semanage='colourify semanage'
    alias getsebool='colourify setsebool'
    alias ifconfig='colourify ifconfig'
fi

con ~/.grc/grc.conf :

(^|[/\w\.]+/)semanage fcontext\s?
conf.semanagefcontext
(^|[/\w\.]+/)semanage (user|login|port)\s?
conf.semanageuser

# getsebool
(^|[/\w\.]+/)getsebool\s?
conf.getsebool

# ulimit
(^|[/\w\.]+/)ulimit\s?
conf.ulimit

# vmstat
(^|[/\w\.]+/)vmstat\s?
conf.vmstat

# dnf
(^|[/\w\.]+/)dnf\s?
conf.dnf

# nmap
(^|[/\w\.]+/)nmap\s?
conf.nmap

# uptime | w
(^|[/\w\.]+/)(uptime|w)\s?
conf.uptime

# getfacl
(^|[/\w\.]+/)getfacl\s?
conf.getfacl

# showmount
(^|[/\w\.]+/)showmount\s?
conf.showmount

# apache ant command
(^|[/\w\.]+/)ant\s?
conf.ant

# # apache maven command
(^|[/\w\.]+/)mvn\s?
conf.mvn

A primera vista, donde podría error viene ? Tal vez se me ha olvidado una variable de entorno o no la opción para ls -lrt que impediría que los colores de código para el tamaño de los archivos ...

Cualquier comentario es bienvenido, Saludos

3voto

klanomath Puntos 19587

El tamaño de la coloración de la función de la gcr ls comando se sigue trabajando con Mojave. Le he cambiado el formato de la fecha en que el shell de mes/día/(año)/tiempo (US) día/mes/(año)/tiempo (sobre todo en Europa), aunque.

Ahora el día (1-31) será de color por defecto con el "tamaño" de color (negro en mi ejemplo y de color blanco en su ejemplo) como todos los tamaños por debajo de 1M.

Para regresar a los EE.UU. formato de fecha, o modificar el respectivo expresión regex(s) en la resolución conf.ls.

Prueba:

Estados Unidos:

example screenshot us

Europa:

example screenshot europe

Para obtener diferentes colores para los tamaños más pequeños (es decir, los tamaños por debajo de 1M) he añadido las siguientes líneas del grc conf.ls archivo (las expresiones regulares a continuación no son realmente funcionó correctamente - la alternativa para detectar el tamaño de patrón (|\d(?:[,.]?\d+)?[K]) no es correcto, así que no basta con copiar y pegar pero trabajo para las capturas de pantalla de ejemplo:

# size: 10 <= size < 100
regexp=\s+(\d{2}|\d(?:[,.]?\d+)?[K])(?=\s[A-Z][a-z]{2}\s)
colours=bold yellow
=======
# size: 100 <= size < 1k
regexp=\s+(\d{3}|\d(?:[,.]?\d+)?[K])(?=\s[A-Z][a-z]{2}\s)
colours=red
=======
# size: 1k <= size < 10k
regexp=\s+(\d{4}|\d(?:[,.]?\d+)?[K])(?=\s[A-Z][a-z]{2}\s)
colours=bold red
=======
# size: 10k <= size < 100k
regexp=\s+(\d{5}|\d+(?:[,.]?\d+)?[K])(?=\s[A-Z][a-z]{2}\s)
colours=green
=======
# size: 100k <= size < 1M
regexp=\s+(\d{6}|\d+(?:[,.]?\d+)?[K])(?=\s[A-Z][a-z]{2}\s)
colours=bold green
=======
# size: 1M <= size < 10M
regexp=\s+(\d{7}|\d(?:[,.]?\d+)?[KM])(?=\s[A-Z][a-z]{2}\s)
colours=yellow
=======

El ejemplar de la expresión regular regexp=\s+(\d{5}|\d+(?:[,.]?\d+)?[K])(?=\s[A-Z][a-z]{2}\s) significa lo siguiente:

  1. \s+(\d{5}|\d+(?:[,.]?\d+)?[K]): buscar un patrón con 1 o más caracteres no imprimibles, 5 dígitos (por ejemplo 34249) o 1 o más dígitos, seguido por un facultativo , o ., más dígitos opcionales y K (por ejemplo, 10K o 13.1 K)

que debe ser seguido por (?=...):

  1. \s[A-Z][a-z]{2}\s que es el patrón de un mes abreviado, rodeado de uno de no-impresión de caracteres en cada lado(por ejemplo, Oct )

Con el formato de fecha europeo activa la condición no se cumpla, porque al día (uno o dos dígitos) de la siguiente manera después de que el tamaño del archivo. En su lugar, el día y mes cumple los requisitos, si un día tenía cinco dígitos.


Aquí está una conf.ls que deben trabajar con el idioma francés en Mojave del terminal. He añadido un poco de trabajo fecha de coloración debido a la (francés) mes parece haber cambiado a minúsculas en Mojave. Usted puede simplemente eliminar el tamaño de colorear para los pequeños tamaños de archivo mediante la eliminación de las respectivas líneas o cambiar los colores si no te gusta.

# The following matches file sizes as produced by ls -l or ls -lh
# The output produced by ls -s is probably not specific
# enough to be reliably matched, especially considering ls -s(k|m|g|G).
#
# Example lines:
# -rw-r--r--   1 user staff 344M Mar 22 22:51 MVI_8735.m4v
# -rw-r--r--   1 user staff 360050327 Mar 22 22:51 MVI_8735.m4v
# -rw-r--r--.  1 user staff 1.0G Nov 23 16:13 testg
# -rw-r--r--.  1 user staff 1.0K Nov 23 16:13 testk
# -rw-r--r--.  1 user staff 1.0M Nov 23 16:13 testm
# -rw-r--r--.  1 user staff 1073741824 Nov 23 16:13 testg
# -rw-r--r--.  1 user staff       1024 Nov 23 16:13 testk
# -rw-r--r--.  1 user staff    1048576 Nov 23 16:13 testm
#
# The regexp uses lookahead to match a date following the size

# size: 10 <= size < 100
regexp=\s+(\d{2})(?=\s([ 1-3]\d)\s)
colours=bright_yellow
=======
# size: 100 <= size < 1k
regexp=\s+(\d{3})(?=\s([ 1-3]\d)\s)
colours=yellow
=======
# size: 1k <= size < 10k
regexp=\s+(\d{4}|\d(?:[,.]?\d+)?[K])(?=\s([ 1-3]\d)\s)
colours=bold yellow
=======
# size: 10k <= size < 100k
regexp=\s+(\d{5}|\d\d(?:[,.]?\d+)?[K])(?=\s([ 1-3]\d)\s)
colours=red
=======
# size: 100k <= size < 1M
regexp=\s+(\d{6}|\d\d\d(?:[,.]?\d+)?[K])(?=\s([ 1-3]\d)\s)
colours=bold red
=======
# size: 1M <= size < 10M
regexp=\s+(\d{7}|\d(?:[,.]?\d+)?[KM])(?=\s([ 1-3]\d)\s)
colours=green
=======
# size: 10M <= size < 100M
regexp=\s+(\d{8}|\d\d(?:[,.]?\d+)?M)(?=\s([ 1-3]\d)\s)
colours=bold green
=======
# size: 100M <= size < 1G
regexp=\s+(\d{9}|\d{3}M)(?=\s([ 1-3]\d)\s)
colours=blue
=======
# size: 1G <= size
regexp=\s+(\d{10,}|[\d.,]+G)(?=\s([ 1-3]\d)\s)
colours=bold blue
=======
# device major minor numbers
regexp=\s(\d+),\s+(\d+)\s
colours=default,bright_yellow ,yellow
=======
# Date-Time => G1= Day G2=Month G3=Hour G4=Minutes G5=Year
regexp=([ 1-3]\d)\s([a-z]{3})\s(?:([0-2]?\d):([0-5]\d)(?=[\s,]|$)|\s*(\d{4}))
colours=unchanged,cyan,cyan,cyan,cyan,bold cyan
=======
# root
regexp=\s(root|wheel)(?=\s|$)
colours=unchanged,bold white on_red
=======
# SELinux
regexp=(\w+_u):(\w+_r):(\w+_t):(\w\d)
colours=default,green,yellow,cyan,magenta
-
# -rwxrwxrwx ============================
# File Type
regexp=(-|([bcCdDlMnpPs?]))(?=[-r][-w][-xsStT][-r][-w][-xsStT][-r][-w][-xsStT])
colours=unchanged,unchanged,bold white
-
# owner rwx
regexp=(?<=[-bcCdDlMnpPs?])(-|(r))(-|(w))(-|([xsStT]))(?=[-r][-w][-xsStT][-r][-w][-xsStT])
colours=unchanged,unchanged,bright_green,unchanged,bright_green,unchanged,bright_green
-
# group rwx
regexp=(?<=[-bcCdDlMnpPs?][-r][-w][-xsStT])(-|(r))(-|(w))(-|([xsStT]))(?=[-r][-w][-xsStT])
colours=unchanged,unchanged,yellow,unchanged,yellow,unchanged,yellow
-
# other rwx
regexp=(?<=[-bcCdDlMnpPs?][-r][-w][-xsStT][-r][-w][-xsStT])(-|(r))(-|(w))(-|([xsStT]))
colours=unchanged,unchanged,bright_red,unchanged,bright_red,unchanged,bright_red
-
# sStT all
regexp=(?<=[-bcCdDlMnpPs?])[-r][-w]([sStT])[-r][-w]([sStT])[-r][-w]([sStT])
colours=unchanged,bold green,bold yellow, bold red
-
# ACL
regexp=^\S{10}(\+)
colours=unchanged,on_cyan bold white

Captura de pantalla de ejemplo:

example screenshot

0voto

Michael Zhou Puntos 167

Creo que grc requiere python3 . Para cambiar la versión de python en un sistema con MacPorts instalado, primero enumere las versiones disponibles:

 port select --list python
Available versions for python:
        none
        python26-apple
        python27 (active)
        python27-apple
        python37 
 

Para cambiar a python37 -

 port select python python37
 

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X