keep   [plain text]


# 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