Como explicado em outras respostas e comenta a razão para o que você
observar é o caminho Bash
lida com tubos. Para filtrar o que você
realmente quer em situações semelhantes você pode tentar incluir a primeira letra do argumento grep
em []
assim:
$ strace w 2>&1 | grep random
read(4, "grep$ strace w 2>&1 | grep random
read(4, "grep%pre%random%pre%", 2047) = 12
$ strace w 2>&1 | grep '[r]andom'
$ strace w 2>&1 | grep '[c]lose'
close(3) = 0
close(3) = 0
close(3) = 0
close(3) = 0
close(3) = 0
close(3) = 0
(...)
random%pre%", 2047) = 12
$ strace w 2>&1 | grep '[r]andom'
$ strace w 2>&1 | grep '[c]lose'
close(3) = 0
close(3) = 0
close(3) = 0
close(3) = 0
close(3) = 0
close(3) = 0
(...)
EDITAR:
Como corretamente indicado por R. na comentário abaixo na verdade strace
faz
não vejo o outro lado do tubo. Similarmente a ps aux | grep grep
que também mostra grep grep
em sua saída w
está percorrendo
/proc
directory e localiza grep
processa lá.