Ini karena bash memproses pengalihan dengan yang >
pertama, menghapus isi file. Kemudian ia menjalankan perintah. Jika Anda ingin menggunakannya >>
, 50 baris terakhir akan ditambahkan ke akhir dari apa yang saat ini ada dalam file. Dalam hal ini, Anda harus mengulangi 50 baris yang sama dua kali.
Perintah berfungsi seperti yang diharapkan saat mengarahkan ke file yang berbeda. Berikut adalah salah satu cara untuk menulis 50 baris terakhir file ke file dengan nama yang sama:
tail -50 /home/pi/Documents/test > /home/pi/Documents/test2 && mv /home/pi/Documents/test2 /home/pi/Documents/test
Ini pertama menulis 50 baris terakhir ke file sementara, yang kemudian dipindahkan menggunakan mv
untuk mengganti file asli.
Seperti yang tercantum di komentar, ini tidak akan berfungsi jika file masih terbuka. Memindahkan file juga menciptakan inode baru dan dapat mengubah kepemilikan dan izin. Cara yang lebih baik untuk melakukan ini menggunakan file sementara adalah:
tail -50 /home/pi/Documents/test > /home/pi/Documents/test2 ; cat /home/pi/Documents/test2 > /home/pi/Documents/test
File sementara juga dapat dihapus, meskipun setiap kali ini terjadi isinya akan ditimpa.