当我阅读makefile脚本时,我遇到了以下linux脚本命令:
mv obj/*.o . 2>/dev/null
这个命令是什么意思?我的理解是将文件夹中mv obj/*.o .
所有带后缀的文件移动到当前文件夹。是什么意思?将它们组合在一起有什么用?谢谢!o
obj
2>
答案1
您正在查看输出重定向(Bash)。2 代表“stderr”,即错误输出。通过将其重定向到/dev/null
,您将把它丢弃到遗忘中。不过,常规输出“stdout”或 1 仍然会显示(默认情况下在您的终端中)。
基本上,这只是使mv
命令的错误输出静音。
上面链接中的一段代码对此进行了更为概括的解释:
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."
答案2
顺便说一句,有时您可能希望阻止在屏幕上显示,但可能希望将其捕获到文件中。如果是这种情况,您可以执行以下操作:
mv obj/*.o . > move.log 2>&1