Sebagian besar jawaban di sini [ 1 ] [ 2 ] [ 3 ] menggunakan braket sudut tunggal untuk mengalihkan ke / dev / null, seperti ini:
command > /dev/null
Tetapi menambahkan ke / dev / null juga berfungsi:
command >> /dev/null
Kecuali untuk karakter tambahan, apakah ada alasan untuk tidak melakukan ini? Apakah salah satu dari ini "lebih baik" dengan implementasi / dev / null yang mendasarinya?
Sunting:
Halaman manual terbuka (2) mengatakan lseek dipanggil sebelum setiap penulisan ke file dalam mode append:
O_APPEND
File dibuka dalam mode append. Sebelum setiap penulisan (2), offset file diposisikan di akhir file, seolah-olah dengan lseek (2). Modifikasi offset file dan operasi penulisan dilakukan sebagai langkah atom tunggal.
yang membuat saya berpikir mungkin ada penalti kinerja kecil untuk menggunakan >>
. Tetapi di sisi lain memotong / dev / null sepertinya operasi yang tidak terdefinisi menurut dokumen itu:
O_TRUNC
Jika file sudah ada dan merupakan file biasa dan mode akses memungkinkan penulisan (yaitu, O_RDWR atau O_WRONLY) file akan terpotong dengan panjang 0. Jika file tersebut merupakan file perangkat FIFO atau terminal, flag O_TRUNC diabaikan. Kalau tidak, efek O_TRUNC tidak ditentukan.
dan spec POSIX mengatakan >
akan memotong file yang sudah ada , tetapi O_TRUNC adalah implementasi yang ditentukan untuk file perangkat dan tidak ada kata tentang bagaimana / dev / null harus merespons terpotong .
Jadi, apakah memotong / dev / null sebenarnya tidak ditentukan? Dan apakah panggilan lseek berdampak pada kinerja penulisan?
sumber