Hans <[EMAIL PROTECTED]> writes: > I still don't understand the proper syntax for this: I want to process > multiple files, e.g. symlinking a bunch or converting graphics. > > for i in *;do 'ln -s $i /home/newdir/$i';done > > won't work.
This tries to execute the _command_ 'ln -s $i /home/newdir/$i' and not the command 'ln' with the parameters -s, $i, and /home/newdir/$i; The proper syntax for this loop would be: for i in *; do ln -s $i /home/newdir/$i; done which would create symlinks in the directory /home/newdir pointing to the (non-hidden) files in the current directory. > Could someone please explain the rules for doing stuff like this, e.g. when > to use quotes and what quotes, when to write files to a new file and > renaming them back. There are no special quotations needed for the loop. The syntax is: for NAME [in WORDS ...]; do COMMANDS; done (from bash's info pages, package bash-doc) You also wouldn't write $ 'ls -a' if you want to execute the command ls, with parameter -a. Have you searched in the bash manual (info pages, man pages)? There's also a section about quotations. hth, moritz -- Moritz Schulte <[EMAIL PROTECTED]> http://www.chaosdorf.de/moritz/ Debian/GNU supporter - http://www.debian.org/ http://www.gnu.org/ GPG fingerprint = 3A14 3923 15BE FD57 FC06 B501 0841 2D7B 6F98 4199