Esse é o efeito de MULTIOS .
echo foo >&2 | grep foo
gravará foo
para stderr e também canalizará foo
para grep
. Como o padrão do stderr é terminal, você verá duas foo
linhas, uma de echo
, uma do resultado grep
.
{ echo foo >&2 | grep foo } >/dev/null
Aqui, você viu uma linha porque a stdout foi redirecionada para /dev/null
, você viu apenas a linha foo
de echo
.
{ echo foo >&2 | grep foo } 2>/dev/null
Aqui, você viu uma linha porque stderr foi redirecionado para /dev/null
, você viu apenas a linha foo
de grep
.
Você pode ver facilmente a diferença no terminal pela cor de saída da linha. grep
destacará o padrão correspondente (ou você pode forçá-lo a usar --color=always
).
MULTIOS
foi ativado por padrão com a opção nomultios
não configurada:
$ unsetopt | grep nomultios
nomultios
Para desativá-lo, basta definir a opção nomultios
:
$ setopt nomultios