aboutsummaryrefslogtreecommitdiff
path: root/sh/shrc.d/gore.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sh/shrc.d/gore.sh')
-rw-r--r--sh/shrc.d/gore.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/sh/shrc.d/gore.sh b/sh/shrc.d/gore.sh
new file mode 100644
index 00000000..1df637bb
--- /dev/null
+++ b/sh/shrc.d/gore.sh
@@ -0,0 +1,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
+}