Kullandığınızda >
, dosya kesme modunda açılır, böylece komut okumayı denemeden önce içeriği kaldırılır.
Kullandığınızda >>
, dosya ekleme modunda açılır, böylece mevcut veriler korunur. Ancak yine de bu durumda girdi ve çıktı ile aynı dosyayı kullanmak oldukça risklidir. Dosya, okuma giriş arabelleği boyutuna sığmayacak kadar büyükse, dosya sistemi dolana (veya disk kotanıza ulaşılana kadar) boyutu süresiz olarak büyüyebilir.
Bir dosyayı, yerinde değişiklik yapılmasını desteklemeyen bir komutla hem girdi hem de çıktı olarak kullanmak isterseniz, birkaç geçici çözüm kullanabilirsiniz:
Bir aracı dosyası kullanın ve bittiğinde ve yalnızca yardımcı programı çalıştırırken herhangi bir hata oluşmadıysa orijinal dosyanın üzerine yazın (bu en güvenli ve en yaygın yoldur).
fold foo.txt > fold.txt.$$ && mv fold.txt.$$ foo.txt
Bir hata veya kesinti olması durumunda, aradaki dosyayı olası kısmi veya tam veri kaybı pahasına kullanmaktan kaçının. Bu örnekte, içeriği silinmeden öncefoo.txt
bir alt kabuğa giriş olarak (parantez içinde) aktarılır . Alt kabuk veri okunurken açık kaldığı için önceki inode canlı kalır. Aynı ada sahipken iç yardımcı program tarafından yazılan dosya (burada )fold
foo.txt
), eski dizin girişi teknik olarak kaldırıldığı için farklı bir inode işaret ediyor, işlem sırasında aynı ada sahip iki farklı "dosya" var. Alt kabuk sona erdiğinde, eski inode serbest bırakılır ve verileri kaybolur. Hem eski dosyayı hem de yenisini aynı anda geçici olarak depolamak için yeterli alanınız olduğundan emin olun, aksi takdirde veri kaybedersiniz.
(rm foo.txt; fold > foo.txt) < foo.txt