Isso não está realmente fazendo um ls -al
e passando isso para cat
, ele está fazendo uma substituição de processo em cat
e apresentando isso como um arquivo para ls -al
, que então fará uma listagem no arquivo.
Assim, a substituição do processo cria um canal conectando um objeto de arquivo e stdin
do programa "interno", cat
aqui e apresenta um arquivo para o programa "externo". Então você faz um ls
, e vê que ele ofereceu o "arquivo" /dev/fd/63
.