1

除外パターンを入力せずに、ack が除外するファイル (一時ファイルとバージョン管理ディレクトリ) を除外するには、どのように grep を取得しますか?

here で説明されているように、GREP_OPTIONS を使用できますが、ここで問題が発生します。GREP_OPTIONS をクリアせずに grep を使用するスクリプトは機能しなくなります。

より良い方法は何ですか?別名?またはgrepをラップする別のスクリプトですか?

明白な答えはalias grep="ack -a"ですが、ack を使用せずにこの問題を解決する方法に学術的に興味があります。

4

1 に答える 1

0

私の現在の解決策は、エイリアスを使用して、スマート オプションの使用をインタラクティブな入力 (他の人のスクリプトではなく) に制限することです。これは、私の bash_aliases からの 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'

ほとんどの grep は vim から行い、vim-searchsavvyを使用して同様のオプションを設定します (vim のエイリアスは使用しません)。

于 2014-08-02T19:35:13.207 に答える