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