aboutsummaryrefslogtreecommitdiff
path: root/sh/shrc.d
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2016-08-24 11:17:52 +1200
committerTom Ryder <tom@sanctum.geek.nz>2016-08-24 11:17:52 +1200
commitd0c5dfe1570c0b2b6048abe0e45d690a93ef99f6 (patch)
treed3b3b378f32ad76b4656e88b7f1aa46bc915eaa1 /sh/shrc.d
parentImprove a comment (diff)
downloaddotfiles-d0c5dfe1570c0b2b6048abe0e45d690a93ef99f6.tar.gz
dotfiles-d0c5dfe1570c0b2b6048abe0e45d690a93ef99f6.zip
Add gress()
Diffstat (limited to 'sh/shrc.d')
-rw-r--r--sh/shrc.d/gress.sh22
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
+}