如何将grep配置为更像ack?
您如何让grep在不键入排除模式的情况下排除ack排除的文件(临时文件和版本控制目录) 同样,您可以使用GREP_选项,但随后您会遇到:使用GREP而不清除GREP_选项的脚本将中断 更好的办法是什么?化名?还是另一个包装grep的脚本如何将grep配置为更像ack?,grep,ack,Grep,Ack,您如何让grep在不键入排除模式的情况下排除ack排除的文件(临时文件和版本控制目录) 同样,您可以使用GREP_选项,但随后您会遇到:使用GREP而不清除GREP_选项的脚本将中断 更好的办法是什么?化名?还是另一个包装grep的脚本 虽然显而易见的答案是alias grep=“ack-a”,但我在学术上对如何在不使用ack的情况下解决这个问题感兴趣。我目前的解决方案是使用别名将智能选项的使用限制在交互式输入(而不是其他人的脚本)上。这是我的bash_别名中与grep相关的代码片段: SMAR
虽然显而易见的答案是
alias grep=“ack-a”
,但我在学术上对如何在不使用ack的情况下解决这个问题感兴趣。我目前的解决方案是使用别名将智能选项的使用限制在交互式输入(而不是其他人的脚本)上。这是我的bash_别名中与grep相关的代码片段:
SMART_GREP_OPTIONS=
# Ensure colors are supported.
if [ -x /usr/bin/dircolors ]; then
SMART_GREP_OPTIONS=' --color=auto'
fi
# Make grep more like ack.
# Ignore binary files.
SMART_GREP_OPTIONS="$SMART_GREP_OPTIONS --binary-files=without-match"
# Check for exclude-dir to prevent invalid options in older versions of grep.
# Assume if we have exclude-dir, that we have exclude.
if /bin/grep --help | /bin/grep -- --exclude-dir &>/dev/null; then
# Ignore version control folders.
for PATTERN in .cvs .git .hg .svn; do
SMART_GREP_OPTIONS="$SMART_GREP_OPTIONS --exclude-dir=$PATTERN"
done
# Ignore temp files.
for PATTERN in *.swp; do
SMART_GREP_OPTIONS="$SMART_GREP_OPTIONS --exclude=$PATTERN"
done
fi
# This alias may override ghostscript. That's not a problem for me.
alias gs='grep $SMART_GREP_OPTIONS'
我从vim执行大部分的grepping,并使用设置类似的选项(我不使用vim中的别名)。旁白:ack 2.0取消了
-a
和-u
标志。2.0中的默认设置是选择所有文本文件进行搜索,而不考虑文件类型。另外,请注意,ack-a
仍然不等同于grep
,因为ack仍然会忽略某些目录和文件<代码>-a表示“所有文件类型”,而不是“所有文件”。从grep 2.20开始,不推荐使用grep_选项: