Apakah kedua perintah ini berbeda tentang cara mereka menghapus file? Apakah yang terakhir cara yang lebih pendek untuk melakukan yang pertama? Apa yang terjadi di balik layar?
Keduanya
$ cat /dev/null > file.txt
$ > file.txt
hasil
-rw-r--r-- 1 user wheel 0 May 18 10:33 file.txt
Jawaban yang Diterima:
cat /dev/null > file.txt
adalah penggunaan kucing yang tidak berguna.
Pada dasarnya cat /dev/null
cukup menghasilkan cat
tidak mengeluarkan apa-apa. Ya itu berhasil, tetapi tidak disukai oleh banyak orang karena menyebabkan proses eksternal yang tidak diperlukan.
Ini adalah salah satu dari hal-hal yang umum hanya karena hal itu umum.
Hanya menggunakan > file.txt
akan bekerja pada sebagian besar shell, tetapi tidak sepenuhnya portabel. Jika Anda ingin benar-benar portabel, berikut ini adalah alternatif yang baik:
true > file.txt
: > file.txt
Keduanya :
dan true
tidak menghasilkan data, dan merupakan bawaan shell (sedangkan cat
adalah utilitas eksternal), sehingga lebih ringan dan lebih 'tepat'.
Pembaruan:
Seperti yang disebutkan tylerl dalam komentarnya, ada juga >| file.txt
sintaks.
Sebagian besar shell memiliki pengaturan yang akan mencegah mereka memotong file yang ada melalui >
. Anda harus menggunakan >|
sebagai gantinya. Ini untuk mencegah kesalahan manusia ketika Anda benar-benar bermaksud menambahkan >>
. Anda dapat mengaktifkan perilaku dengan set -C
.
Jadi dengan ini, saya pikir metode pemotongan file yang paling sederhana, paling tepat, dan portabel adalah:
:>| file.txt