Alimente a entrada em um descritor de arquivo diferente da entrada padrão.
find /some/path/ -type f | grep -vif blacklist |
mplayer -shuffle -playlist /dev/fd/3 3<&0 </dev/tty
Explicação da última linha: os dados do grep estão chegando na entrada padrão, que é o descritor de arquivo 0. Não há como canalizar para qualquer lugar além da entrada padrão no shell, mas podemos fazer um pouco de encanamento extra. Primeiro, conectamos o descritor de arquivo 3 a qualquer lugar onde o descritor de arquivo 0 é: 3<&0
. Em seguida, conectamos o descritor de arquivo 0 (ou seja, entrada padrão) ao terminal: </dev/tty
. Dizemos ao mplayer para ler a lista de reprodução do descritor de arquivos 3; O mplayer espera um nome de arquivo, então passamos /dev/fd/3
, que quando aberto por um processo se comporta exatamente como o descritor de arquivo 3 naquele processo naquele momento.
Observe que a ordem de redirecionamentos é importante e contraintuitiva se você tiver intuição errada. 3<&0 </dev/tty
tem fd 3 leitura de onde fd 0 leu antes e fd 0 leu% de /dev/tty
. </dev/tty 3<&0
teria ambos fd 0 e fd 3 lidos de /dev/tty
.