summaryrefslogtreecommitdiff
path: root/examples/functions/keep
diff options
context:
space:
mode:
Diffstat (limited to 'examples/functions/keep')
-rw-r--r--examples/functions/keep62
1 files changed, 62 insertions, 0 deletions
diff --git a/examples/functions/keep b/examples/functions/keep
new file mode 100644
index 0000000..4433b35
--- /dev/null
+++ b/examples/functions/keep
@@ -0,0 +1,62 @@
+# From: Seth Chaiklin <psykseth@aau.dk>
+# To: chet@ins.CWRU.Edu
+# Subject: bash functions (sorta)
+
+#
+# keep:
+# usage: keep program
+# declare the a program should be "kept". i.e. try to fg a stopped one
+# and only when that fails start a fresh program.
+#
+
+keep()
+{
+ case $# in
+ 1|2) ;;
+ *) echo "usage: keep [alias] program" 1>&2 ; return 1;;
+ esac
+
+ # progname
+ pn=${1##*/}
+
+ # set up an alias for the kept program
+ if [ $# = 1 ]; then
+ alias "$pn=fg $1 2>/dev/null || $1"
+ else
+ alias "$1=fg $2 2>/dev/null || $2"
+ fi
+}
+
+#
+# unkeep:
+# usage: unkeep program
+# unset the alias set up by the keep function
+#
+
+unkeep()
+{
+ if [ $# != 1 ]; then
+ echo "usage: unkeep program"
+ return 2
+ fi
+
+ # unset the alias for the kept program
+ unalias "${1##*/}"
+}
+
+#
+# kept:
+# lists all kept programs in 'alias: program' form
+#
+
+kept()
+{
+ alias | grep "fg.*2>" | sed "s/alias \(.*\)='fg.*||\(.*\)'$/\1:\2/"
+}
+
+
+# some things that should be kept
+#keep /usr/local/bin/emacs
+#keep e ${EDITOR:-/usr/local/bin/emacs}
+#keep edit ${EDITOR:-/usr/local/bin/emacs}
+#keep /usr/local/bin/emm