¿Cómo colorear los archivos ocultos en las listas de archivos `ls`?

10

LS_COLORSLa variable ambiental le permite decidir los colores para diferentes tipos de archivos para el lscomando de GNU coreutil , como directorios, archivos regulares, enlaces, etc. Supongo que los archivos de puntos se consideran una variación de los tipos de archivos de Linux y no un tipo en sí mismo, por lo tanto, hay no hay opción para especificar un color de visualización para ellos.

¿Hay alguna otra forma de hacer que los lslistados muestren archivos ocultos en un color diferente?

Johnny Baloney
fuente
Esta respuesta tiene más de lo que siempre quisiste saber LS_COLORS. No pude averiguar cómo hacer que funcione para los archivos de puntos, pero es posible que desee comprobarlo.
terdon
1
@terdon: no funciona para archivos de puntos. Podría ser para algunos, pero muy pocos. Hay un límite para la longitud de una extensión y la mayoría de los nombres de archivos completos lo excederán. Funcionará para archivos nombrados *.hidepor ejemplo. Esta respuesta aborda un problema similar para los directorios, aunque las respuestas a esto y al problema del directorio probablemente no sean las mismas.
mikeserv

Respuestas:

1

Si solo está ordenando por nombre, esto podría ayudar:

alias ll='LS_COLORS=$LS_COLORS:"di=0;34:" ; S_COLORS=$LS_COLORS:"fi=0;37:" ; export LS_COLORS; ls -dHhl --color=auto .*; LS_COLORS=$LS_COLORS:"di=1;94:" ; LS_COLORS=$LS_COLORS:"fi=1;37:" ; export LS_COLORS$

Sin embargo, divide el comando ls en dos partes, una para archivos y carpetas ocultos, otra para el resto.

mentecato
fuente
0

Si, uso cf. Acabo de lanzar una versión bien documentada, específicamente colorea la salida de ls por extensión de archivo y / o ciertos atributos especiales (ejecutables, enlaces, ocultos y directorios). ¡¡¡Dale un tiro!!! Es difícil dejar de usar esto una vez que te acostumbras.

https://github.com/AdamDanischewski/cf

A.Danischewski
fuente
-1

Si solo desea resaltar los archivos ocultos (y las carpetas) y no le importa el color de todos los demás archivos, entonces el enfoque obvio es ejecutar ls -la | grep -E "^| \.[^/|'.].*"

Si desea mantener los otros colores, entonces las cosas comienzan a complicarse, ya $LS_COLORSque no admite de forma nativa colorear colores ocultos como parece.

Se me ocurrió la idea de agregar dinámicamente los archivos ocultos del directorio actual a la $LS_COLORSvariable de entorno como una pseudo extensión, luego ejecutar ls -lay luego ejecutar dircolorspara restablecer el esquema de color original. Obviamente habrá un conflicto si un archivo oculto tiene el mismo nombre que una extensión conocida. Además, este método no funciona con carpetas ocultas.

Advertencia: esta solución es un truco (no muy probado). Úselo bajo su propio riesgo.

for h in $(ls -A | grep "^\."); do LS_COLORS="$LS_COLORS*$h=04;05:"; done; ls -la; eval $(dircolors)

Michael Osl
fuente