Esta não é uma entrada múltipla padrão. Este é um bash'ism que chamou 'Substituição de Processo' link
Cria um pseudo arquivo ( /dev/fd/something
) para cada substituição. É muito útil. O comando só pode ler como um fluxo, o que significa que não pode ir e voltar com fseek. Ele precisa lê-lo como um fluxo de bytes, como um pipe.
Resposta do BONUS
Você não precisa fazer muito para usar isso. No que diz respeito ao seu script, ele obtém um nome de arquivo válido na linha de comando, que pode ser aberto () como qualquer outra coisa. Como outros disseram, você veria diff /dev/fd/XX /dev/fd/YY
. Se você fizer um stat () em qualquer um desses pseudo-arquivos, você verá que é um pipe nomeado, e você deve tratá-lo com semântica de pipe - ou seja, sem fseek () ou ftell (). Se você fizer um teste stat () para ver explicitamente se é um arquivo (por exemplo, [ -f $1 ]
), isso será quebrado - isso é implementado como um pipe nomeado depois de tudo.