我通常grep
在开发时使用,并且有一些扩展我总是想排除(例如*.pyc
)。
是否可以创建一个~/.egreprc
或类似的东西,并添加过滤以pyc
从所有结果中排除文件?
这是可能的,还是我必须创建一个别名才能grep
以这种方式使用,并调用别名而不是grep
?
答案1
不,没有 grep 的 rc 文件。
GNU grep 2.4 到 2.21 应用了环境变量中的选项GREP_OPTIONS
,但较新的版本不再遵循它。
对于交互式使用,请在 shell 初始化文件中定义别名(.bashrc
或.zshrc
)。我使用以下变体:
alias regrep='grep -Er --exclude=*~ --exclude=*.pyc --exclude-dir=.bzr --exclude-dir=.git --exclude-dir=.svn'
如果您调用别名grep
,并且偶尔想grep
在不带选项的情况下调用,请键入\grep
。反斜杠绕过别名。
答案2
确认可以做你想做的事甚至更多。
默认情况下,它会忽略二进制文件,您可以告诉它忽略您想要的其他文件类型--notext
,--nohtml
等等。它也能够定义 rc 文件,以便您可以使用自己的类型自定义它。
答案3
不是直接回答你的问题。但 grep 可以选择忽略所有二进制文件,包括 *.pyc。选项是-I
grep -rI hello .
答案4
至少自 2016 年起(根据史蒂文·佩尼的评论),grep 推荐的方法是使用别名或脚本:
$ export GREP_OPTIONS="--exclude='*~'"
$ grep -r someStringThatDoesNotExist
grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
$