Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

When I read a script of makefile, I meet with the following linux script command:

mv obj/*.o .  2>/dev/null 

What does this command mean? I understand mv obj/*.o . means that all the files with suffix o in the obj folder will be moved to the current folder. What does 2> mean? When they are combined together, what is purpose? Thanks!

share|improve this question

2 Answers 2

up vote 3 down vote accepted

You're looking at output redirection (Bash). 2 stands for 'stderr', the error output. By redirecting it to /dev/null, you're discarding it to oblivion. Regular output, 'stdout' or 1 is still shown (in your terminal by default), though.

Basically, this is just silencing error output of the mv command.

A snippet from the above link explains it more general:

COMMAND_OUTPUT >
  # Redirect stdout to a file.
  # Creates the file if not present, otherwise overwrites it.

  ls -lR > dir-tree.list
  # Creates a file containing a listing of the directory tree.
[..]
1>filename
  # Redirect stdout to file "filename."
1>>filename
  # Redirect and append stdout to file "filename."
2>filename
  # Redirect stderr to file "filename."
2>>filename
  # Redirect and append stderr to file "filename."
&>filename
  # Redirect both stdout and stderr to file "filename."
share|improve this answer

Btw, sometimes you might want to prevent displaying on the screen but might want to capture it on a file. If that's the case you might do something like this:

mv obj/*.o . > move.log 2>&1
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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