Я пишу короткий сценарий оболочки, который звонит, 'делают все'. Это не очень важно, но является там способом, которым я могу подавить сообщение, не говоря 'ничто делать для всех', если это так? Я надеюсь найти, что флаг для делает, который подавляет это (не уверенный, что существует один), но дополнительная строка или 2 из кода работали бы также.
К вашему сведению я использую удар.
Править: чтобы быть более ясным, я только хочу к сообщениям suppess, что therer не ничто делать. Иначе я хочу отобразить вывод.
Вы можете сделать "все" целью PHONY (если это еще не сделано), которая имеет реальную цель в качестве предварительного условия и делает что-то незаметное:
.PHONY: all
all: realTarget
@echo > /dev/null
Решение grep:
{ make all 2>&1 1>&3 | grep -v 'No rule to make target `all' >&2; } 3>&1
Конструкция 2> & 1 1> & 3
отправляет stdout make на fd 3 и stderr make на stdout. Затем grep читает из stdout предыдущей команды, удаляет ошибочную строку и отправляет свой stdout в stderr. Наконец, в стандартный вывод возвращается fd 3.
Флаг -s
заглушает make: make -s all
РЕДАКТИРОВАТЬ: Первоначально я ответил, что флаг -q
марка с глушителем. У меня это работает, хотя на странице руководства в качестве допустимых флагов указаны -s, --silent, --quiet
.