Sebenarnya, bentuk kedua touch filenametidak menghapus apa pun dari file - itu hanya membuat file kosong jika tidak ada, atau memperbarui tanggal modifikasi terakhir dari file yang ada.
Dan yang ketiga filename < /dev/nullmencoba menjalankan nama file dengan /dev/nullsebagai input.
cp /dev/null filename bekerja.
Adapun yang efisien, yang paling efisien adalah truncate -s 0 filename; lihat di sini: http://linux.die.net/man/1/truncate .
Kalau tidak, cp /dev/null filenameatau > filenamekeduanya baik-baik saja. Keduanya membuka dan kemudian menutup file, menggunakan pengaturan truncate-on-open. cpjuga terbuka /dev/null, sehingga membuatnya sedikit lebih lambat.
Di sisi lain, truncatekemungkinan akan lebih lambat daripada > filenameketika dijalankan dari skrip karena menjalankan perintah truncate membutuhkan sistem untuk membuka file yang dapat dieksekusi, memuatnya, dan menjalankannya.
truncate -s 0 filename?