aboutsummaryrefslogtreecommitdiff
path: root/sh/shrc.d/gore.sh
blob: 2cdb8bd6769d4f579405e6390de8f5d8ee0d33ff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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
    # Include -n to show line numbers; this is POSIX, which was a nice surprise
    grep -n "$@" |

    # 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
}