From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19975 invoked by alias); 16 May 2016 17:39:56 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 21569 Received: (qmail 10648 invoked from network); 16 May 2016 17:39:54 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.1 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: zsh-users@zsh.org To: zsh-users@zsh.org From: Emanuel Berg Subject: sudo user-command-1; also-sudoed-command-2 Date: Mon, 16 May 2016 19:22:13 +0200 Message-ID: <86inydgbp6.fsf@student.uu.se> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: c-9ce1e655.08-680-7570702.cust.bredbandsbolaget.se Mail-Copies-To: never User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) Cancel-Lock: sha1:W7kL2c+BltXJS8peHQL6VvqVHJI= How can I execute a block of arbitrary commands with sudo, but only having to type sudo once, and still be able to use the user functions? I.e., because of the last demand, this: $ sudo zsh -c "command-1; ...; command-n" won't do if command-1 is a user function or alias! Instead, this, as a user which has an "ll" ls alias, and no permissions at / $ zudo ll /; touch /test should be the equivalent of $ sudo ll /; sudo touch /test which should be executed. Here is the solution so far: # [1] accept-line () { local words words=( $=BUFFER ) case $words[1] in (zudo) BUFFER="zudo-f ${(q-)words[2,-1]}" ;; esac zle .accept-line } zle -N accept-line # [2] zudo-f () { local funs_str=$1 local -a funs funs=("${(@s/;/)funs_str}") for f in $funs; do eval "sudo $f" done } alias sudo='sudo ' # [3] alias ll="ls -lh" I'm grateful for any improvements to be made :) [1] http://user.it.uu.se/~embe8573/conf/.zsh/todo [2] http://user.it.uu.se/~embe8573/conf/.zshrc [3] http://user.it.uu.se/~embe8573/conf/.zsh/ls -- underground experts united .... http://user.it.uu.se/~embe8573 Emacs Gnus Blogomatic ......... http://user.it.uu.se/~embe8573/blogomatic - so far: 30 Blogomatic articles -