Hôm qua tôi đã đọc bình luận SO này nói rằng trong vỏ (ít nhất bash
) >&-
"có kết quả tương tự như" >/dev/null
.
Nhận xét đó thực sự đề cập đến hướng dẫn ABS là nguồn thông tin của nó. Nhưng nguồn đó nói rằng >&-
cú pháp "đóng mô tả tập tin".
Tôi không rõ liệu hai hành động đóng bộ mô tả tệp và chuyển hướng nó đến thiết bị null có hoàn toàn tương đương hay không. Vì vậy, câu hỏi của tôi là: họ?
Trên bề mặt của nó có vẻ như việc đóng một mô tả giống như đóng một cánh cửa nhưng chuyển hướng nó đến một thiết bị null đang mở ra một cánh cửa để lấp lửng! Cả hai dường như không giống hệt tôi vì nếu tôi thấy một cánh cửa đóng kín, tôi sẽ không cố gắng ném bất cứ thứ gì ra khỏi nó, nhưng nếu tôi thấy một cánh cửa mở tôi sẽ cho rằng mình có thể.
Nói cách khác, tôi đã luôn tự hỏi liệu >/dev/null
có nghĩa là điều đó cat mybigfile >/dev/null
thực sự sẽ xử lý từng byte của tệp và ghi nó vào /dev/null
đó mà quên nó đi. Mặt khác, nếu shell gặp một bộ mô tả tệp đã đóng, tôi có xu hướng nghĩ (nhưng không chắc chắn) rằng nó sẽ không viết bất cứ điều gì, mặc dù câu hỏi vẫn là liệu có cat
còn đọc từng byte hay không.
Nhận xét này nói >&-
và >/dev/null
" nên " giống nhau, nhưng nó không phải là câu trả lời quá vang dội với tôi. Tôi muốn có một câu trả lời có thẩm quyền hơn với một số tham chiếu đến lõi tiêu chuẩn hoặc nguồn hay không ...