Si ejecuto ls
, obtengo resultados en color, lo que me parece bastante útil para obtener rápidamente un vistazo del tipo de archivo. Cuando trato de conectarlo less
incluso con las banderas -r
y -R
, el color siempre se pierde. Estoy usando la zsh
versión 5.0.7. ¿Algunas ideas? Gracias.
editar: estoy en OS X.
ls
se invoca con--color
? Intente suspender la tubería (^Z
) o usarps
desde otra terminal. ¿Qué salidawhich ls
produce?less -r
por lo que no es un problemaless
sino conls
ls
resultado depende de stdout). El que recuerdo es unix.stackexchange.com/questions/157285/… que está marcado como duplicado de unix.stackexchange.com/questions/10421/…ls --color=auto
significa usar color solo cuando se escribe en un terminal (es decir, cuando la salida estándar es un terminal), y no cuando se trata de un archivo o una tubería.Respuestas:
Esto es así por diseño: los programas que producen resultados en color generalmente lo hacen solo cuando su salida va a una terminal, no cuando se envía a una tubería o a un archivo normal. La razón es que los datos enviados en un terminal son presumiblemente leídos por un humano, mientras que los datos canalizados a un programa o escritos en un archivo probablemente sean analizados por algún programa, por lo que no debe contener contenido extraño como secuencias de escape que cambian de color .
GNU
ls
muestra resultados en color en un terminal cuando pasa la opción--color
(o--color=auto
). Para forzar la salida en color independientemente del tipo de archivo de la salida estándar, pase--color=always
o--color=yes
(son sinónimos). A esta convención le han seguido otros comandos, como GNU grep, FreeBSD grepgit diff
, etc.Con la versión de FreeBSD de
ls
(también se encuentra en OSX, y disponible comocolorls
puerto en OpenBSD y NetBSD), pase la opción-G
de mostrar colores cuando la salida es un terminal. Configure el entornoCLICOLOR_FORCE
para mostrar colores independientemente del tipo de archivo de salida.fuente
El problema más probable es que su
ls
programa haya configurado la opción, lo--color=auto
que básicamente significa que la salida debe colorearse solo si está conectada a la terminal, de lo contrario (salida conectada a una tubería o un archivo) no se emiten colores.Si desea tener colores en esos casos, debe configurar la
--color
opciónalways
, así que intenteSi este comportamiento es lo que espera todo el tiempo, simplemente cree un alias:
fuente
ls
no provienebash
, es un programa independiente. Ejecutels --version
para verificar su versión. El mío es ls GNU coreutils) 8.21 .ls
versión no tiene la--version
bandera. Estoy usando el predeterminado de OS X, no estoy seguro si eso ayuda.No puedo comentar la respuesta de @jimmij, porque tengo menos de 50 repeticiones, pero me gustaría explicar lo que funcionó para mí en Bash.
Si tu corres
verá todas las entradas de la página
man
para su entorno de shell específico (en nuestro casobash
).Para mí, el siguiente ajuste funcionó:
fuente
-G
bandera no tiene nada que ver con cómols
gestiona su salida de color. Eso solo elimina los grupos de la salida dels -l
. Afecta la salida de color en BSD ls (el que también se usa en OSX), ¿es eso lo que quieres decir? En cualquier caso, no creo que muestre color cuando sea redirigido a un archivo, solo mostrará color en la línea de comando.