在开发时,我通常会做一些grep,而且有些扩展我总是不想找(例如* .pyc)。
是否可以创建〜/ .egreprc或类似的东西,并进行一些过滤以始终不显示pyc文件。
这是否可能,或者我必须为以这种方式使用grep创建别名,然后调用别名而不是grep?
在开发时,我通常会做一些grep,而且有些扩展我总是不想找(例如* .pyc)。
是否可以创建〜/ .egreprc或类似的东西,并进行一些过滤以始终不显示pyc文件。
这是否可能,或者我必须为以这种方式使用grep创建别名,然后调用别名而不是grep?
Answers:
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'
GREP_OPTIONS
它将影响grep
脚本中的调用,而别名则不会。因此GREP_OPTIONS
应谨慎使用。最常见的用法是for --color=auto
,原则上在脚本中是无害的,因为它仅在输出是终端时才生效。
ack可以做您想做的事,还有更多。
它会忽略默认的二进制文件,你可以告诉它忽略其他文件类型,只要你想--notext
,--nohtml
等它定义一个RC文件太多,所以你可以用自己的类型定制的能力。
没有在GNU grep
/中egrep
,没有。
无论如何,您可能仍希望使用特殊名称的别名或脚本来执行此操作,因为有一天以后,当您尝试查找与特殊配置不符的内容时,可能会感到非常困惑。
GREP_OPTIONS
在~/.profile
接近。
--color=auto
!