Vamos seguir
{ exec >/dev/null; } >/dev/null; echo "Hi"
passo a passo.
-
Existem dois comandos:
a.
{ exec >/dev/null; } >/dev/null
, seguido porb.
echo "Hi"
O shell executa primeiro o comando (a) e depois o comando (b).
-
A execução de
{ exec >/dev/null; } >/dev/null
é a seguinte:a. Primeiro, o shell executa o redirecionamento
>/dev/null
e lembra de desfazê-lo quando o comando termina .b. Então, o shell executa
{ exec >/dev/null; }
.c. Finalmente, o shell muda a saída padrão de volta para onde estava. (Esse é o mesmo mecanismo de
ls -lR /usr/share/fonts >~/FontList.txt
- os redirecionamentos são feitos apenas pela duração do comando ao qual pertencem). -
Quando o primeiro comando for concluído, o shell executará
echo "Hi"
. A saída padrão é onde quer que esteja antes do primeiro comando.