Ontem li este comentário do SO, que diz que no shell (pelo menos bash
) >&-
"tem o mesmo resultado que" >/dev/null
.
Na verdade, esse comentário se refere ao guia do ABS como a fonte de suas informações. Mas essa fonte diz que a >&-
sintaxe "fecha os descritores de arquivo".
Não está claro para mim se as duas ações de fechar um descritor de arquivo e redirecioná-lo para o dispositivo nulo são totalmente equivalentes. Então, minha pergunta é: eles são?
Parece que fechar um descritor é como fechar uma porta, mas redirecioná-lo para um dispositivo nulo está abrindo uma porta para o limbo! Os dois não me parecem exatamente iguais, porque se eu vir uma porta fechada, não tentarei jogar nada, mas se vir uma porta aberta, assumirei que posso.
Em outras palavras, sempre me perguntei se >/dev/null
meios que cat mybigfile >/dev/null
realmente processariam cada byte do arquivo e o gravariam no /dev/null
esquecimento. Por outro lado, se o shell encontrar um descritor de arquivo fechado, costumo pensar (mas não tenho certeza) que ele simplesmente não escreverá nada, embora a questão permaneça se cat
ainda será lido todos os bytes.
Este comentário diz >&-
e >/dev/null
" deveria " ser o mesmo, mas não é uma resposta tão retumbante para mim. Gostaria de ter uma resposta mais autorizada com alguma referência ao núcleo padrão ou de origem ou não ...