diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-24 11:17:52 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-24 11:17:52 +1200 |
commit | d0c5dfe1570c0b2b6048abe0e45d690a93ef99f6 (patch) | |
tree | d3b3b378f32ad76b4656e88b7f1aa46bc915eaa1 /sh | |
parent | Improve a comment (diff) | |
download | dotfiles-d0c5dfe1570c0b2b6048abe0e45d690a93ef99f6.tar.gz dotfiles-d0c5dfe1570c0b2b6048abe0e45d690a93ef99f6.zip |
Add gress()
Diffstat (limited to 'sh')
-rw-r--r-- | sh/shrc.d/gress.sh | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sh/shrc.d/gress.sh b/sh/shrc.d/gress.sh new file mode 100644 index 00000000..483198b3 --- /dev/null +++ b/sh/shrc.d/gress.sh @@ -0,0 +1,22 @@ +# Pipe grep(1) output through PAGER; mostly to preserve grep colouring +# interactively through less(1), but it'll work fine with plain grep(1) and +# more(1) +gress() { + + # 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 grep; 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 +} |