如何将grep配置为更像ack?

如何将grep配置为更像ack?,grep,ack,Grep,Ack,您如何让grep在不键入排除模式的情况下排除ack排除的文件(临时文件和版本控制目录) 同样,您可以使用GREP_选项,但随后您会遇到:使用GREP而不清除GREP_选项的脚本将中断 更好的办法是什么?化名?还是另一个包装grep的脚本 虽然显而易见的答案是alias grep=“ack-a”,但我在学术上对如何在不使用ack的情况下解决这个问题感兴趣。我目前的解决方案是使用别名将智能选项的使用限制在交互式输入(而不是其他人的脚本)上。这是我的bash_别名中与grep相关的代码片段: SMAR

您如何让grep在不键入排除模式的情况下排除ack排除的文件(临时文件和版本控制目录)

同样,您可以使用GREP_选项,但随后您会遇到:使用GREP而不清除GREP_选项的脚本将中断

更好的办法是什么?化名?还是另一个包装grep的脚本


虽然显而易见的答案是
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_选项: