Вчера я прочитал этот комментарий, который говорит, что в оболочке (по крайней мере bash
) >&-
"имеет тот же результат, что и" >/dev/null
.
Этот комментарий фактически ссылается на руководство АБС как на источник информации. Но этот источник говорит, что >&-
синтаксис «закрывает файловые дескрипторы».
Мне не ясно, являются ли два действия закрытия файлового дескриптора и перенаправления его на нулевое устройство полностью эквивалентными. Итак, мой вопрос: они?
На первый взгляд кажется, что закрытие дескриптора похоже на закрытие двери, но перенаправление его на нулевое устройство открывает дверь в подвешенное состояние! Эти две вещи не кажутся мне абсолютно одинаковыми, потому что, если я увижу закрытую дверь, я не буду пытаться выбросить из нее что-либо, но если я увижу открытую дверь, то предположу, что смогу.
Другими словами, я всегда задавался вопросом, >/dev/null
означает ли это средство, cat mybigfile >/dev/null
которое фактически обрабатывает каждый байт файла и записывает его в тот, /dev/null
который его забывает. С другой стороны, если оболочка встречает закрытый файловый дескриптор, я склонен думать (но не уверен), что она просто ничего не будет писать, хотя остается вопрос, cat
будет ли по- прежнему считываться каждый байт.
Этот комментарий говорит >&-
и >/dev/null
« должен » быть таким же, но это не настолько громкий ответ для меня. Я хотел бы получить более авторитетный ответ со ссылкой на стандарт или ядро источника или нет ...