diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-15 21:38:15 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-15 21:47:11 +1200 |
commit | 0664bcb5c8ed61d33ee6bdbc58af3443192cc607 (patch) | |
tree | ccafde667d0ccd885fb46a0a68d1dd9ceec209c0 /bash/bashrc.d/grep.bash | |
parent | Correct order of tasks in xgo(1) (diff) | |
download | dotfiles-0664bcb5c8ed61d33ee6bdbc58af3443192cc607.tar.gz dotfiles-0664bcb5c8ed61d33ee6bdbc58af3443192cc607.zip |
Keep grep(1) option metadata in cache
It's stupid to run `grep --help` once per shell (twice for login
shells!) when it's so unlikely to change, and way faster to check for
the presence or absence of hint files rather than pattern-match the
output with the shell.
ls(1) will get the same treatment in a minute.
Diffstat (limited to 'bash/bashrc.d/grep.bash')
-rw-r--r-- | bash/bashrc.d/grep.bash | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/bash/bashrc.d/grep.bash b/bash/bashrc.d/grep.bash index 11eeb5b0..624baf30 100644 --- a/bash/bashrc.d/grep.bash +++ b/bash/bashrc.d/grep.bash @@ -1,31 +1,33 @@ +# Our ~/.profile should already have made a directory with the supported +# options for us +[[ -d $HOME/.cache/grep ]] || return + # Store whether we have colors in a variable declare -i colors colors=$( { tput Co || tput colors } 2>/dev/null ) -# Store grep(1)'s --help output in a variable -grep_help=$(grep --help 2>/dev/null) - # Use GREPOPTS to add some useful options to grep(1) calls if applicable; we # use a function wrapper to do this, rather than GREP_OPTIONS as we don't want # to change grep(1)'s actual behaviour inside scripts declare -a GREPOPTS -if [[ -n $GREP_COLORS ]] && ((colors >= 8)) ; then +GREPOPTS=() +if ((colors >= 8)) && [[ -n $GREP_COLORS ]] ; then GREPOPTS[${#GREPOPTS[@]}]='--color=auto' fi -if [[ $grep_help == *--binary-files* ]] ; then +if [[ -e $HOME/.cache/grep/binary-files ]] ; then GREPOPTS[${#GREPOPTS[@]}]='--binary-files=without-match' fi -if [[ $grep_help == *--exclude* ]] ; then +if [[ -e $HOME/.cache/grep/exclude ]] ; then GREPOPTS[${#GREPOPTS[@]}]='--exclude={.gitignore,.gitmodules}' fi -if [[ $grep_help == *--exclude-dir* ]] ; then +if [[ -e $HOME/.cache/grep/exclude-dir ]] ; then GREPOPTS[${#GREPOPTS[@]}]='--exclude-dir={.cvs,.git,.hg,.svn}' fi -# Done, unset helper vars -unset -v grep_help colors +# Done, unset color var +unset -v colors # Define function proper grep() { |