抑制“没有为'所有'做的事”

时间:2010-08-05 17:24:36

标签: shell makefile

我正在写一个简短的shell脚本,它调用'make all'。这不是关键,但有没有办法可以压制这样的信息:如果是这样的话,“没有什么可以为所有人做的”?我希望找到一个make的标志来抑制它(不确定有一个),但是另外一行或2个代码也可以工作。

仅供参考我正在使用bash。

编辑:更清楚一点,我只想宣传那些无所事事的消息。否则,我想显示输出。

4 个答案:

答案 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。