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