Is there anyway to pass terminal colors through a pipe?
As a simple example, ls -l --color=always | grep ii
.
When you just run the ls -l --color=always
part alone, you get the filenames color coded. But adding grep ii
removes the color coding and just has the grep
match highlighting.
Screenshot of both examples:
In the above example I would want ii.mp3
and ii.png
filenames to retain the cyan and magenta highlighting, respectively. With or without the grep
match highlighting.
Question is not specific to ls
or grep
.
If this is possible, is there a correct term/name for it? I am unable to locate anything.
hmm this gives me all colors (from ls and grep)
/usr/bin/ls -l --color=always | /usr/bin/grep --color=always a
(I’m using their full paths because I usually alias
ls
andgrep
toeza
andrg
respectively)There’s a
export CLICOLOR_FORCE=1
you can try to avoid repeating--color=always
, but that didn’t work for me withls
andgrep
specifically.Edit: there’s also a
FORCE_COLOR=1
that is popular, but again, neitherls
norgrep
seem to care.