水星。色彩输出管道少


35

操作系统:Mac OS 10.6.2

我希望能够通过更少的命令传递某些命令时看到颜色输出。

两个例子:

我将ls别名为ls --color=auto,因此我希望在执行此操作时能够看到颜色:

ls -l | less

我还在Mercurial中启用了颜色扩展,因此我希望看到以下颜色的输出:

hg diff | less

hg st | less

经过一番谷歌搜索后,似乎有些版本的-r或-R较少支持以实现此目的,但对我而言没有任何意义。我在手册页中看不到任何看起来像我需要的东西。(-r或-R SEEM是正确的选项,但同样,它们似乎不起作用)


1
似乎通过管道传输时始终禁用颜色扩展。:尝试这些命令来看看我的意思ls --color=always | ls -Rhg diff --config color.mode=ansi | less -R
哈维

Answers:



13

我相信,你必须使用--color=alwaysls,如果你想要它做的颜色,即使不去stdout。然后-rless命令上使用

ls --color=always -l | less -r

12

在您的〜/ .hgrc中:

[extensions]
color =
pager =

[pager]
pager = LESS='FRSXQ' less
quiet = True
attend = outgoing,incoming,diff,status,log,qdiff,blame,annotate,pdiff,glog

为什么要quiet = True零件?
einpoklum-恢复莫妮卡

真好!我建议LESS='eiFRSXQ'在达到EOF之后也退出,并在搜索过程中忽略大小写
sebastian

11

做:

$ hg diff --color always | less -R

我将别名“ less -R”减少到更少。我不知道是否有一种方法来提供默认选项善变的命令,这样你就不必记住输入--color alwayshg diff所有的时间。


1
或者使用$ hg diff --color always | less -FRSXQ更好的选择。例如,如果diff适合屏幕,它将自动退出。
jpbochi 2012年

1
您可以设置LESS =“-R”来代替别名“ less”本身。
2012年

-F是为了在文件制作过程中继续读取文件,-S是为了避免换行,以免-X混淆,-Q避免使终端铃声响起。
Evgeni Sergeev 2014年


0

ls --color=auto意味着当您没有通过管道将其输出到某物时,就会获得颜色输出。试试看ls --colour=auto | cat,您会明白我的意思。

我希望汞做出类似的假设。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.