grep
не выдает ошибку в bash, но делает возвращает ненулевой код выхода:
> grep THIS foo.txt 2>&1
> echo $?
1
Если вы хотите избавиться от этого ненулевого кода выхода, чтобы make
не помечал его как ошибку, вы можете сделать это:
THIS.txt : foo.txt
grep THIS foo.txt > $@ || true
Бит || true
говорит, что «если есть ненулевой код выхода, вместо этого верните код выхода true
(который всегда равен 0
в bash).