## vim:ft=zsh ## creates an alias and precedes the command with sudo if $EUID is not zero. ## Taken from the grml zshrc - http://grml.org local only=0 local multi=0 while [[ ${1} == -* ]] ; do case ${1} in (-o) only=1 ;; (-a) multi=1 ;; (--) shift ; break ;; (-h) printf 'usage: salias [-h|-o|-a] \n' printf ' -h shows this help text.\n' printf ' -a replace '\'' ; '\'' sequences with '\'' ; sudo '\''.\n' printf ' be careful using this option.\n' printf ' -o only sets an alias if a preceding sudo would be needed.\n' return 0 ;; (*) printf "unkown option: '%s'\n" "${1}" ; return 1 ;; esac shift done if (( ${#argv} > 1 )) ; then printf 'Too many arguments %s\n' "${#argv}" return 1 fi key="${1%%\=*}" ; val="${1#*\=}" if (( EUID == 0 )) && (( only == 0 )); then alias -- "${key}=${val}" elif (( EUID > 0 )) ; then (( multi > 0 )) && val="${val// ; / ; sudo }" alias -- "${key}=sudo ${val}" fi return 0