Coloque seu comando entre parênteses:
( tail -f z | grep 'd' ) &
kill -- -$!
Isso matará todo o subprocesso.
Aqui, especificando um PID negativo para matar, nós eliminamos todo o grupo de processos. Veja man 1 kill :
Negative PID values may be used to choose whole process groups; see the PGID column in ps command output.
Ou man 2 kill :
If pid is less than -1, then sig is sent to every process in the process group whose ID is -pid.
No entanto, kill -PID só funcionará se o controle de trabalho estiver ativado em bash (o padrão para shells interativos ). Senão, seu subprocesso não terá um grupo de processos dedicado e o comando kill falhará com kill: (-PID) - No such process
Para contornar isso, ative o controle de trabalho em bash ( set -m ) ou use pkill -P $!