bash - all - Conservar ls colorante después de grep''ing.
grep linux-- color (2)
Debería verificar si realmente está usando ls "reales", simplemente llamando directamente al binario:
/bin/ls ....
Porque: El código que describiste realmente debería funcionar, a menos que ls ignore --color = siempre por alguna extraña razón o error.
Sospecho que algún alias o función agrega (directamente oa través de una variable) algunas opciones. Vuelve a comprobar que este no es el caso.
Si lo hago
$ ls -l --color=always
Obtengo una lista de archivos dentro del directorio con algunos colores agradables para diferentes tipos de archivos, etc.
Ahora, quiero poder canalizar la salida de color de ls
través de grep
para filtrar algunos archivos que no necesito. La clave es que todavía quiero conservar el color después del filtro grep.
$ ls -l --color=always | grep -E some_regex
^ Pierdo el colorante después de grep.
EDITAR: Estoy usando el servidor sin cabeza Ubuntu 8.10, Bash 3.2.39, prácticamente una instalación de valores sin configuraciones extravagantes
Su grep probablemente está eliminando los códigos de color de ls
porque tiene su propio color activado.
Usted "podría" hacer esto:
ls -l --color=always | grep --color=never pattern
Sin embargo, es muy importante que entiendas exactamente qué estás haciendo aquí. No solo no es necesario usar grep
ping ls
(en su lugar, use glob
), este caso en particular es grep
ping no solo a través de nombres de archivo y estadísticas de archivos, sino también a través de los códigos de color agregados por ls
.
La respuesta real a tu pregunta es: no lo grep
. Nunca es necesario canalizar ls
en algo o capturar su salida. ls
solo está destinado a la interpretación humana (por ejemplo, para ver solo en una shell interactiva , y para este propósito es extremadamente útil, por supuesto). Como se mencionó anteriormente, puede filtrar qué archivos ls
enumera usando globs:
ls -l *.txt # Show all files with filenames ending with `.txt''.
ls -l !(foo).txt # Show all files with filenames that end on `.txt'' but aren''t `foo.txt''. (This requires `shopt -s extglob` to be on, you can put it in ~/.bashrc)
Le recomiendo que lea estos dos excelentes documentos al respecto: