Each Unix command can read from its standard input and write to its standard output . Sometimes this convention can lead to unexpected behavior. That is, each line you type will go to grep , until you type control-D, which indicates that you are done. Standard Error Unix commands can also write to their standard error .
Standard error is where, by convention, many commands write messages if they encounter errors.
That depends on which shell you are running. When we run commands in the background we often need to capture their error messages as well as their standard error. Putting It in the Background Unix makes it easy to to have many programs running at once. Putting a command in the background after we started it makes sense only if does not produce any output we need to capture. When we put commands in the background, we can deal with them as jobs.