Bir dosyanın sonuna fazladan bir yeni satır eklemekle ilgili değil, olması gereken yeni satırı kaldırmamakla ilgili.
Unix'in altındaki bir metin dosyası , her biri newline karakteriyle ( ) biten bir dizi satırdan oluşur . Boş olmayan ve yeni bir satırla bitmeyen bir dosya bu nedenle bir metin dosyası değildir.\n
Metin dosyaları üzerinde çalışması gereken programlar, yeni bir satır ile bitmeyen dosyalarla başa çıkamaz; Örneğin, tarihsel Unix yardımcı programları, metni son satırdan sonra görmezden gelebilir. GNU yardımcı programları, metin dışı dosyalarla iyi bir şekilde davranma politikasına sahiptir ve diğer birçok modern yardımcı programda da geçerlidir, ancak yine de son bir yeni satırda eksik dosyalarda garip davranışlarla karşılaşabilirsiniz.
GNU diff'de, karşılaştırılmakta olan dosyalardan biri yeni bir satırla bitiyorsa diğeri ile bitmiyorsa, bu gerçeğe dikkat etmek önemlidir. Diff satır yönelimli olduğu için, dosyalardan biri için yeni bir satır depolamakla, diğerleri için değil - bu yeni satırlar diff dosyasındaki her satırın nerede başladığını ve bittiğini belirtmek için gereklidir . Bu nedenle diff, bu yeni metni \ No newline at end of file
, yeni satırda bitmeyen bir dosyayı, yapılan dosyadan ayırt etmek için kullanır .
Bu arada, bir C bağlamında, bir kaynak dosya benzer şekilde bir dizi satırdan oluşur. Daha doğrusu, bir çeviri birimi, her biri yeni satır karakteriyle bitmesi gereken bir dizi satır olarak tanımlanan bir uygulamada görülür ( n1256 §5.1.1.1). Unix sistemlerde, haritalama basittir. DOS ve Windows'ta, her bir CR LF dizisi ( \r\n
) yeni bir satırla eşleştirilir ( \n
; bu işletim sistemlerinde metin olarak açılan bir dosyayı okurken her zaman olan şey budur). Yeni satır karakterine sahip olmayan, bunun yerine sabit veya değişken boyutlu kayıtlara sahip birkaç işletim sistemi var; Bu sistemlerde, dosyalardan C kaynağına eşleme bir\n
Her kaydın sonunda. Bu, unix ile doğrudan alakalı olmasa da, rekor temelli metin dosyaları olan bir sisteme son satırını kaçıran bir C kaynak dosyasını kopyalarsanız, o zaman tekrar kopyalarsanız, tamamlanmamış demektir. son satır ilk dönüşümde kesildi veya ters dönüşüm sırasında üzerine konulan fazladan bir yeni satır.
¹
Örnek: GNU sıralamalarının çıkışı her zaman yeni bir satırla bitiyor. Bu nedenle, dosya foo
son satırını kaçırıyorsa, bu sort foo | wc -c
raporun bir karakterden daha fazla olduğunu göreceksiniz cat foo | wc -c
.