aboutsummaryrefslogtreecommitdiff
path: root/sh/shrc.d/gore.sh
blob: 1df637bb45f993b502f625ffd812be05f5fd4ab4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Pipe grep(1) output through PAGER; mostly to preserve coloring interactively
# through less(1), but it'll work fine with plain grep(1) and more(1)
gore() {

    # Add --color=always if the terminal has at least 8 colors; we have to add
    # "always" to coax grep(1) into emitting colors even though it can tell its
    # stdout isn't a terminal but a pager
    [ -e "$HOME"/.cache/grep/color ] &&
    [ "$({ tput colors || tput Co ; } 2>/dev/null)" -ge 8 ] &&
        set -- --color=always "$@"

    # Run whatever `grep` gives us; it might be our function wrapper; that's OK
    grep "$@" |

    # Run the appropriate pager; if it's less(1), we can tack on -R (though my
    # ~/.lesskey does this anyway)
    case $PAGER in
        less) "$PAGER" -R ;;
        *) "$PAGER" ;;
    esac
}