1

I know that having an & at the end of a command makes it run in the background. I was wondering what does &Number mean? I was looking at a script that has some commands running with &1 and some with &2.

1
  • I'd change the question to What does an &Number in the shell do? Ampersand is used all over in Linux, the question is slightly ambiguous until you read details Sep 3, 2010 at 20:31

4 Answers 4

5

This should be migrated to SuperUser, but the answer is that they refer to file descriptors. &1 is standard output, and &2 is standard error, so a program run like this:

./program 2>&1

Redirects descriptor 2 (standard error) to descriptor 1 (standard output)

A common use of this is to do something like this:

./program >file.txt 2>&1

Which redirects standard output into a file, and then standard error into standard output, so that you get both regular and error output captured in the file.

1
1

For Bourne type shells (bash etc.)

mycmd > /output/file 2>&1

merges the standard error output (file descriptor 2) with the standard output (file descriptor 1) and writes both of them into /output/file.

1

The '&' indicates a file descriptor. &1 is stdout, and &2 is stderr.

If you haven't found a good site for learning shell scripting already, I recommend this one:

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

0

&1 is standard output (STD_OUT), &2 is standard error stream (STD_ERR)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .