GNU/Linux >> Belajar Linux >  >> Linux

Perbedaan Antara Cat Dan '>' Untuk Menghilangkan File?

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

Linux
  1. Perbedaan Antara "du -sh *" Dan "du -sh ./*"?

  2. Perbedaan Antara Eot dan Eof?

  3. Perbedaan Antara Tautan Simbolik dan Tautan Keras?

  1. Perbedaan antara tautan lunak dan tautan keras di Linux

  2. perbedaan antara cgroup dan namespace

  3. Perbedaan antara file Perangkat dan driver perangkat

  1. Perbedaan antara SAN dan NAS

  2. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  3. Perbedaan Antara [0-9], [[:digit:]] Dan D?