减少管道后bash中的颜色?

Mat*_*ewC 121 linux shell bash ls less

当我有 dircolors 定义的生活充满了......颜色。

当我ls通过管道less滚动时,我失去了颜色。

有什么建议?

cha*_*aos 120

很可能您ls的别名为ls --color=auto,它告诉ls仅在输出为 tty 时才使用颜色。如果你这样做ls --color(这在道德上等同于ls --color=always),这将迫使它打开颜色。

你也可以改变你的别名来做到这一点,但我认为这不是一个好主意。最好用--color.

less也需要-R

  • @j08lue 如果您通过管道传递不处理颜色的命令,则会得到一些可能会弄乱命令的垃圾字符。例如,我做了`ls --color=always | less` 并得到:`ESC[01;32mexecute_once.shESC[0m`(我知道这是旧的,你可能不在乎,但对于未来的访问者,这可能有用) (10认同)
  • 就此而言,您为什么不认为将 ls 别名为 `ls --color` 或 `ls --color=always` 是个好主意? (5认同)

wzz*_*zrd 62

尽量少用 -R 选项,如下所示:

command | less -R
Run Code Online (Sandbox Code Playgroud)

这在这样的单行中对我有用:

ls -la | grep --color=always bash | less -r
Run Code Online (Sandbox Code Playgroud)

也像这样:

ls --color | less -R
Run Code Online (Sandbox Code Playgroud)

但是您必须使用 --color 参数稍微调整主要输出(在本例中为 ls 的输出)。

  • `-R` 选项是 `--RAW-CONTROL-CHARS` 的缩写。 (2认同)