diff options
author | Daniel Friesel <derf@derf.homelinux.org> | 2008-09-30 23:10:12 +0200 |
---|---|---|
committer | Daniel Friesel <derf@derf.homelinux.org> | 2008-09-30 23:10:12 +0200 |
commit | a0b301c9a97f70a9b42e5d754f2365820899aa70 (patch) | |
tree | b26825c75395976d32f047a8be585cb2d318e840 /etc/functions | |
parent | be35c378d3f05aa4d8f7366460ba5127539434d7 (diff) |
Added salias function from the grml zshrc
Diffstat (limited to 'etc/functions')
-rw-r--r-- | etc/functions/salias | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/etc/functions/salias b/etc/functions/salias new file mode 100644 index 0000000..d8a3340 --- /dev/null +++ b/etc/functions/salias @@ -0,0 +1,37 @@ +## 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] <alias-expression>\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 |