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/null
significa que cat mybigfile >/dev/null
realmente procesaría cada byte del archivo y lo escribiría para /dev/null
olvidarlo. 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 cat
todaví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 ...