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 lessincluso con las banderas -ry -R, el color siempre se pierde. Estoy usando la zshversión 5.0.7. ¿Algunas ideas? Gracias.
editar: estoy en OS X.

lsse invoca con--color? Intente suspender la tubería (^Z) o usarpsdesde otra terminal. ¿Qué salidawhich lsproduce?less -rpor lo que no es un problemalesssino conlslsresultado 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=autosignifica 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
lsmuestra 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=alwayso--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 comocolorlspuerto en OpenBSD y NetBSD), pase la opción-Gde mostrar colores cuando la salida es un terminal. Configure el entornoCLICOLOR_FORCEpara mostrar colores independientemente del tipo de archivo de salida.fuente
El problema más probable es que su
lsprograma haya configurado la opción, lo--color=autoque 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
--coloropciónalways, así que intenteSi este comportamiento es lo que espera todo el tiempo, simplemente cree un alias:
fuente
lsno provienebash, es un programa independiente. Ejecutels --versionpara verificar su versión. El mío es ls GNU coreutils) 8.21 .lsversión no tiene la--versionbandera. 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
manpara su entorno de shell específico (en nuestro casobash).Para mí, el siguiente ajuste funcionó:
fuente
-Gbandera no tiene nada que ver con cómolsgestiona 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.