justice@dao.nrc.ca (Gerald Justice) (08/04/89)
Here is a non-urgent problem that I am having in trying to extend my C-shell knowledge. I have two aliases that allow me to do editing of the previous command or commands. One is really a special case of the other but in order to write a generalized alias I need to know how to allow for an optional argument to an alias--if there is no argument I want to use the value 1. I am also interested in having suggestions for improvement, after all this is a simple concept but my implementation invokes a long list of programs. ----cut here-----REMEMBER TO REJOIN THE ALIAS DEFINITION LINES-----cut here---- # history editing aliases: # cedit takes no arguments, it places the last command into two files and # starts ex (open mode) on one of them. If the two files are the same after # ex exits then do nothing otherwise read the edited file back into the # history list then execute the commands in the file. # mcedit is similar, but works on the last N commands (specified by a single # argument) and uses vi rather than ex. # N.B. each of the alias definitions must occur on a single line. alias cedit 'history -h 2 | head -1 | tee ~/ed-in >! ~/ed-out; ex +o ~/ed-out; cmp ~/ed-{in,out} >/dev/null || source -h ~/ed-out && cat ~/ed-out && source ~/ed-out' alias mcedit '@ count=\!:1; @ hcount=$count + 1; history -h $hcount | head -$count | tee ~/ed-in >! ~/ed-out; unset count hcount; vi ~/ed-out; cmp ~/ed-{in,out} >/dev/null || source -h ~/ed-out && cat ~/ed-out && source ~/ed-out' =-=-=-=-SOFTCOPY-=-=-=-=-=-=-=-|-=-=-HARDCOPY-=-=-=-=-=-=-= Phone: (604) 388-0055 | Fax: (604) 388-0045 Internet: justice@dao.nrc.ca | Telex: 049-7295 or: justice@134.87.150.7 | Mail: Dominion Astrophysical Observatory BITNET: justice@nrcdao | 5071 W. Saanich Road VAX PSI: 68100434::justice | Victoria, B.C. SPAN,UUCP: (not yet available) | CANADA V8X 4M6