我想取消我的Makefile中某些命令的输出
例如,我有一个目标,stagel
stagel:
cd scripts && npm list body-parser || npm install body-parser
node scripts/app.js
我想抑制目标中第一行的输出。
我尝试过,@cd scripts && npm list body-parser || npm install body-parser
,但仍然得到输出。我也尝试将@
附加到每个npm命令,但得到@npm: command not found
我认为此命令不正确:
cd scripts && npm list body-parser || npm install body-parser
这表示,“运行cd scripts
:如果cd
有效,则运行npm list body-parser
,如果cd
失败,则运行npm install body-parser
”。我不知道您要确定要做什么,但是我怀疑您想说的是,“首先cd scripts
,然后运行npm list body-parser
,如果失败,则运行npm install body-parser
”。为此,您需要这样的东西:
cd scripts && { npm list body-parser || npm install body-parser; }
尚不清楚您的意思是“支持第一行的输出”。您的意思是,您不希望make
打印出正在运行的命令行吗?还是您的意思是,您不想显示命令的输出?
如果是前者,那么您的尝试@cd ...
将会做到。既然您对此不满意,我只能假设您是指后者。
Make对于您运行的命令生成的输出无话可说。如果要抑制该输出,则必须使用常规的Shell重定向操作自己进行操作。例如:
stagel:
cd scripts && { npm list body-parser || npm install body-parser; } >/dev/null
node scripts/app.js