Ayer leí este comentario SO que dice que en el shell (al menos bash) >&-"tiene el mismo resultado que" >/dev/null.
Ese comentario en realidad se refiere a la guía de ABS como la fuente de su información. Pero esa fuente dice que la >&-sintaxis "cierra los descriptores de archivo".
No me queda claro si las dos acciones de cerrar un descriptor de archivo y redirigirlo al dispositivo nulo son totalmente equivalentes. Entonces mi pregunta es: ¿lo son?
A primera vista, parece que cerrar un descriptor es como cerrar una puerta, pero redirigirlo a un dispositivo nulo es abrir una puerta al limbo. Los dos no me parecen exactamente iguales porque si veo una puerta cerrada, no intentaré arrojar nada, pero si veo una puerta abierta, supondré que puedo.
En otras palabras, siempre me he preguntado si >/dev/nullsignifica que cat mybigfile >/dev/nullrealmente procesaría cada byte del archivo y lo escribiría para /dev/nullolvidarlo. Por otro lado, si la cáscara se encuentra con un descriptor de archivo cerrado tiendo a pensar (pero no estoy seguro) que simplemente no escribirá nada, aunque la cuestión sigue siendo si cattodavía se lee cada byte.
Este comentario dice >&-y >/dev/null" debería " ser el mismo, pero no es una respuesta tan contundente para mí. Me gustaría tener una respuesta más autorizada con alguna referencia al núcleo estándar o fuente o no ...