0

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!

2 Answers 2

3

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."
0

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

You must log in to answer this question.

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