Ieri ho letto questo commento SO che dice che nella shell (almeno bash
) >&-
"ha lo stesso risultato di" >/dev/null
.
Tale commento in realtà si riferisce alla guida ABS come la fonte delle sue informazioni. Ma quella fonte dice che la >&-
sintassi "chiude i descrittori di file".
Non mi è chiaro se le due azioni di chiusura di un descrittore di file e reindirizzamento sul dispositivo null siano totalmente equivalenti. Quindi la mia domanda è: sono?
In apparenza sembra che chiudere un descrittore sia come chiudere una porta ma reindirizzarlo a un dispositivo nullo sta aprendo una porta al limbo! I due non mi sembrano esattamente gli stessi perché se vedo una porta chiusa, non proverò a buttar via niente da essa, ma se vedo una porta aperta, suppongo di poterlo fare.
In altre parole, mi sono sempre chiesto se >/dev/null
significa che cat mybigfile >/dev/null
avrebbe effettivamente elaborato ogni byte del file e scriverlo nel /dev/null
quale lo dimentica. D'altra parte, se la shell incontra un descrittore di file chiuso, tendo a pensare (ma non sono sicuro) che semplicemente non scriverà nulla, anche se rimane la domanda se leggeràcat
comunque ogni byte.
Questo commento dice >&-
e >/dev/null
" dovrebbe " essere lo stesso, ma non è una risposta così clamorosa per me. Mi piacerebbe avere una risposta più autorevole con qualche riferimento a standard o core di base o no ...