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.

  • 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 – Rich Homolka Sep 3 '10 at 20:31

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.


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.


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:



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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.