Kemarin saya membaca komentar SO ini yang mengatakan bahwa di shell (setidaknya bash
) >&-
"memiliki hasil yang sama dengan" >/dev/null
.
Komentar itu sebenarnya merujuk pada panduan ABS sebagai sumber informasinya. Tetapi sumber itu mengatakan bahwa >&-
sintaks "menutup deskriptor file".
Tidak jelas bagi saya apakah dua tindakan menutup deskriptor file dan mengarahkannya ke perangkat nol sama sekali setara. Jadi pertanyaan saya adalah: apakah mereka?
Di permukaan itu tampaknya menutup deskriptor seperti menutup pintu tetapi mengarahkannya ke perangkat nol membuka pintu ke limbo! Keduanya tampaknya tidak persis sama bagi saya karena jika saya melihat pintu yang tertutup, saya tidak akan mencoba untuk membuang apa pun darinya, tetapi jika saya melihat pintu yang terbuka saya akan menganggap saya bisa.
Dengan kata lain, saya selalu bertanya-tanya apakah >/dev/null
cara yang cat mybigfile >/dev/null
benar-benar akan memproses setiap byte file dan menulisnya /dev/null
yang lupa. Di sisi lain, jika shell menemukan deskriptor file tertutup, saya cenderung berpikir (tapi tidak yakin) bahwa ia tidak akan menulis apa-apa, meskipun pertanyaannya tetap apakah cat
masih akan membaca setiap byte.
Komentar ini mengatakan >&-
dan >/dev/null
" harus " sama, tetapi itu bukan jawaban yang meyakinkan bagi saya. Saya ingin memiliki jawaban yang lebih berwibawa dengan beberapa referensi ke standar atau sumber inti atau tidak ...