From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17140 invoked from network); 2 Mar 1998 01:10:47 -0000 Received: from math.gatech.edu (list@130.207.146.50) by ns1.primenet.com.au with SMTP; 2 Mar 1998 01:10:47 -0000 Received: (from list@localhost) by math.gatech.edu (8.8.5/8.8.5) id UAA15447; Sun, 1 Mar 1998 20:04:40 -0500 (EST) Resent-Date: Sun, 1 Mar 1998 20:04:13 -0500 (EST) Message-Id: <199803020106.UAA15038@betelgeuse.ccs.neu.edu> X-Mailer: exmh version 2.0.1 12/23/97 To: Bernd Eggink cc: Helmut Jarausch , zsh-users@math.gatech.edu Subject: Re: PATH editing in a script In-reply-to: Your message of "Tue, 24 Feb 1998 15:28:31 +0100." <34F2D90E.1D128EEE@rrz.uni-hamburg.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sun, 01 Mar 1998 20:06:25 -0500 From: Hank Hughes Resent-Message-ID: <"cJk6c3.0.jm3.CMW-q"@math> Resent-From: zsh-users@math.gatech.edu X-Mailing-List: archive/latest/1354 X-Loop: zsh-users@math.gatech.edu X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu I made some `quick' hacks to edit my path whilst in hustle-mode. The functions are listed below. Are there more correct or efficient ways to do any of these? ---------------------------------------------------------------------- # # PATH adjustors # # Concepts originally from (Well, at least the first time *I* saw them) # Remy Evard # # Re-Inspired by parameter expansions given by # Bernd Eggink # paths() # Print the index order and the directory { # TODO: find a builtin sequence to replace awk hell # something like `foreach dir ( $path ) { printf() }'? usage="Usage: (-i|-n) or (-d|-a) for numeric or alphabetical order." if [ $1 ] then if ( [ $1 = "-i" ] || [ $1 = "-n" ] ) then # Sort numerically by index echo "Index Directory" echo "----- ------------------------------------------------------------------------" echo $PATH | awk -F: '{ for (i = 1; i <= NF; i++) printf(" %3d %s\n", ++num, $i)}' | sort elif ( [ $1 = "-d" ] || [ $1 = "-a" ] ) then # Sort alphabetically by directory echo "Index Directory" echo "----- ------------------------------------------------------------------------" echo $PATH | awk -F: '{ for (i = 1; i <= NF; i++) printf(" %3d %s\n", ++num, $i)}' | sort +1 else echo $usage # Maybe default by index instead? fi else echo $usage fi } addpath() { path=($path:$1) } # Append to path prepath() { path=($1:$path) } # Prepend to path rmpath() # Remove from path { # Depending on tab complete ... dir=`echo $1 | sed 's/\/$//'` # Remove finicky trailing slash path=(${(R)path:#$dir}) # Param expansion ... # ${name:#patt} replace with null } replpath() # Replace path with path { dir1=`echo $1 | sed 's/\/$//'` # The trailing slashes .. dir2=`echo $2 | sed 's/\/$//'` path[$path[(ri)$dir1]]=$dir2 # Replace matched index with new directory } #nognu() { rmpath /arch/gnu/bin } # Zzzot gnu! ----------------------------------------------------------------------