Isso não é um operador _<
, que é um argumento _
para passar para a leitura e o operador de redirecionamento <
. <(cmd)
em si é a subtituição do processo (que se expande para um nome de arquivo que aponta para um pipe).
O que isso faz é executado:
read bytes _ < /proc/self/fd/x
Onde o fd x é o final de leitura de um pipe.
No outro (escrito) final do pipe, um processo de subshell em segundo plano está executando du -bcm random_iso.iso | tail -1
com seu stdout redirecionado para esse pipe.
Portanto, read
armazenará na variável $bytes
a primeira palavra da última linha da saída de du -bcm
e o restante da linha na variável $_
.
Agora eu não sei onde esse du -bcm
faz sentido. Nenhuma das opções -b
, -c
nem -m
é padrão. Embora -c
seja bastante comum e seja para dar o tamanho cumulativo, com GNU du
, -b
é obter o tamanho do arquivo (não uso do disco) em bytes, enquanto -m
é obter o tamanho arredondado para o próximo mebibyte, então eles seriam opções conflitantes (embora talvez eles usem -b
para seu efeito colateral de habilitar --apparent-size
). O FreeBSD du tem -m
(para mebibytes), não -b
, o Solaris não tem nenhum ...
Parece que foi uma maneira complicada de escrever:
wc -c < random_iso.iso
Ou:
du --apparent-size -cm random_iso.iso | awk 'END{print $1}'
Se eles realmente quisessem que o tamanho do arquivo fosse arredondado para o próximo mebibyte em um sistema GNU.