Hi Gurus,
I would appreciate if someone could enlighten this newbie as to how significant the '&' is to unix.
Currently I am getting around to writing a script which has to deal with a lot of these ampersands either as starting chars or between chars.
Please find below the simpliest way that I could find in getting this thread posted with the subject.
Hello,
The & has several modes of significance on the Unix command line. The 2 most common forms I usually encounter are for running jobs in the background and for redirecting STDERR.
When & appears at the end of a command string, this usually signifies you want that command to run in the background. This returns control of your session back to you. If you submit a command that normally takes 5 minutes with no & on the end of it, you have to wait 5 minutes until the prompt returns. With & on the end, you get the command prompt back immediatly and your commmand continues to run.
The command that follows is actually interpretted by the shell as 2 commands.
rose_pa--root::/data/connect>mkdir &Q2
ksh thinks you are running a command called mkdir and a second command called Q2. mkdir is being put in the background. That is why you get this message:
[1] 29264
This is the process ID of mkdir.
Then the shell tries to run Q2 thinking it is another command. Then you get:
Another use of the ampersand "&" is to link commands in series..... typically best used as a double ampersand - which will only execute the subsequent commands if the preceeding one is successful
i.e.
cd /export/home/my_dir && ls -l && rm -i *old
This command will first change your directory - then list the contents - then remove files ending in 'old' (interactively prompting).
The difference of the double ampersand vs the single (cd /export/home/my_dir & ls -l & rm -i *old) is that if one of the preceeding commands failed (i.e there is no my_dir directory) then the subsequent command would still try to execute. With double when it fails the command doesn't try to do any more.
Maybe not related to your query re: directory or filenames - but will help to understand what it's useaeg can be.