grep / egrep是否有一个“ rc”配置文件?(〜/ .egreprc?)


37

在开发时,我通常会做一些grep,而且有些扩展我总是不想找(例如* .pyc)。

是否可以创建〜/ .egreprc或类似的东西,并进行一些过滤以始终不显示pyc文件。

这是否可能,或者我必须为以这种方式使用grep创建别名,然后调用别名而不是grep?

Answers:


66

grep没有rc文件,但是您可以将环境变量设置GREP_OPTIONS为以空格分隔的选项列表,这些选项将应用于所有grep命令。这需要GNU grep(在非嵌入式Linux,Cygwin和其他系统上的实现)2.4;该--exclude选项是GNU grep 2.5的新增功能。将这样的内容放入您的~/.profile

export GREP_OPTIONS='--color=auto --exclude=*.pyc --exclude-dir=.git'

如果您已完成此操作,但又想在没有这些默认选项的情况下运行grep一次,则可以覆盖它们(例如grep --color=never,强制关闭颜色)或GREP_OPTIONS通过运行清空变量GREP_OPTIONS= grep …

另一种可能性是为grep定义别名。我使用以下内容的变体:

alias regrep='grep -Er --exclude=*~ --exclude=*.pyc --exclude-dir=.bzr --exclude-dir=.git --exclude-dir=.svn'

1
这是我一直在寻找的答案。我想我会阅读有关〜/ .profile的更多信息。@吉尔斯,你是男人。感谢您的帮助!
有人仍在使用您MS-DOS

1
考虑到有两种方法可以做到这一点(GREP_OPTIONS和别名grep):是其中之一吗?为什么或者为什么不?
Christoph Wurm,

4
@Legate:一个重要的区别是GREP_OPTIONS它将影响grep脚本中的调用,而别名则不会。因此GREP_OPTIONS应谨慎使用。最常见的用法是for --color=auto,原则上在脚本中是无害的,因为它仅在输出是终端时才生效。
吉尔斯(Gilles)“所以,别再邪恶了”,

GREP_OPTIONS已弃用;请使用别名或脚本
Steven Penny

3

ack可以做您想做的事,还有更多。

它会忽略默认的二进制文件,你可以告诉它忽略其他文件类型,只要你想--notext--nohtml等它定义一个RC文件太多,所以你可以用自己的类型定制的能力。


我也使用ack,但我不喜欢它。它确实速度很快,但并非在所有安装中都可用,因此我在考虑grep。谢谢!
仍有人使用您的MS-DOS

2
ack是单个Perl程序,可作为纯文本文件下载。如果需要,可以访问Betterthangrep.com/ack-standalone并将内容剪切并粘贴到文件中。我专门做到了这一点,以便可以运行Perl的任何地方使用它。
Andy Lester,

0

不是您问题的直接答案。但是grep可以选择忽略所有二进制文件,包括* .pyc。选项是-I

grep -rI hello .

0

没有在GNU grep/中egrep,没有。

无论如何,您可能仍希望使用特殊名称的别名或脚本来执行此操作,因为有一天以后,当您尝试查找与特殊配置不符的内容时,可能会感到非常困惑。


3
GREP_OPTIONS~/.profile接近。
吉尔斯(Gilles)“所以,别再邪恶了”,

1
@吉尔斯-好点。实际上,我忘记了让自己满意的目标--color=auto
mattdm 2011年
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.