Michael Shiloh wrote on Sun, Aug 18, 2013 at 16:36:35 -0700: > > > On 08/18/2013 02:08 PM, Daniel Shahaf wrote: >> Some of the odd corners of shell syntax are quite useful in interactive >> usage. For example: >> >> % (){ foo $1 bar } 24 >> to run a command several times (recalling it from history) and change >> some parameter around the middle of the command line without having to >> scroll to it every time. > > > wait, can you explain this?
Sure. It's a zsh-specific syntax for an anonymous function with arguments. In effect it's an anonymous block. For example: % (){ printf "$1\n" 04 } "%s" 04 % (){ printf "$1\n" 04 } "%d" 4 % (){ printf "$1\n" 04 } "%e" 4.000000e+00 In interactive usage I sometimes find myself wanting to run a command several times in a row with one argument changed. When that argument is in the middle of a (potentially multi-line) command, I find it easier to change it between runs by using an ad-hoc anonymous function to move the argument-to-be-changed to the end of the input. Another case where that would be useful is when the argument appears in two places in the command --- using an anonymous function allows changing the argument in just one place rather than two. _______________________________________________ Linux-il mailing list Linux-il@cs.huji.ac.il http://mailman.cs.huji.ac.il/mailman/listinfo/linux-il