我正在写一个简短的shell脚本,它调用'make all'。这不是关键,但有没有办法可以压制这样的信息:如果是这样的话,“没有什么可以为所有人做的”?我希望找到一个make的标志来抑制它(不确定有一个),但是另外一行或2个代码也可以工作。
仅供参考我正在使用bash。
编辑:更清楚一点,我只想宣传那些无所事事的消息。否则,我想显示输出。
答案 0 :(得分:15)
你可以让“全部”成为一个有真正目标作为先决条件的PHONY目标(如果还没有),并做一些不起眼的事情:
.PHONY: all
all: realTarget
@echo > /dev/null
答案 1 :(得分:8)
我想改进之前的解决方案,只是为了让它更有效......:)
.PHONY: all
all: realTarget
@:
@true也可以工作,但比@慢一点:(我做了一些性能测试)。在任何情况下,两者都比“echo> / dev / null”......
快得多答案 2 :(得分:1)
标志-s
沉默:make -s all
编辑:我原来回答说-q
标志是沉默的。它适用于我,虽然联机帮助页指定-s, --silent, --quiet
作为有效标志。
答案 3 :(得分:0)
grep解决方案:
{ make all 2>&1 1>&3 | grep -v 'No rule to make target `all' >&2; } 3>&1
构造2>&1 1>&3
将make的stdout发送到fd 3并将stder命名为stdout。 grep然后从上一个命令的stdout读取,删除有问题的行并将其stdout发送到stderr。最后,fd 3返回到stdout。