man/text
man · Metin İşleme

$ diff3

Bölüm 1 · Metin İşleme

3 yollu dosya karşılaştırması

Özet

diff3 [-3AaEeimTXx] [--diff-program program] [--strip-trailing-cr]
      [-L | --label label1] [-L | --label label2] [-L | --label label3]
      file1 file2 file3

diff3 [--help] [--version]

Açıklama

diff3, bir dosyanın üç farklı sürümünün (file1, file2 ve file3) içeriklerini karşılaştırır ve sonucu standart çıktıya yazar.

Seçenekler, ayrı sürümleri yeni bir dosyada birleştirmenin (merge) ve temizlemenin (purge) farklı yöntemlerini tanımlar. diff3, rcs(1) tarafından belirli sürümleri birleştirmek veya yeni sürümler oluşturmak için kullanılır.

Seçenekler

  • -3, --easy-only: Yalnızca file3 dosyasına özgü değişiklikleri içeren, ed(1) için uygun bir çıktı betiği üretir.
  • -A, --show-all: Çakışmaları ayraç içine alarak tüm değişiklikleri çıktı olarak verir.
  • -a, --text: Tüm dosyaları ASCII metni olarak ele alır.
  • -E, --show-overlap: -e seçeneğine benzer, ancak örtüşen değişiklikleri farklı şekilde ele alır.
  • -X: -x seçeneğine benzer, ancak örtüşen değişiklikleri farklı şekilde ele alır.
  • -e, --ed: ed(1) için girdi betiği olarak kullanılmaya uygun biçimde çıktı üretir. Betik, üç dosya arasındaki ortak farkları ve file1 ile file3 dosyalarına özgü farkları birleştirmek için kullanılabilir. Başka bir deyişle -e, file1 ve file2 dosyalarına özgü farklar ile file2 ve file3 dosyalarına özgü farkları yoksayar; yalnızca file2 dosyasına özgü değişiklikleri geri almak için kullanışlıdır.
  • --help: Kullanım bilgisini yazdırır ve çıkış yapar.
  • -i: ed(1) betiğine w ve q komutlarını ekler.
  • -L label, --label label: file1, file2 ve file3 dosya adları yerine yazdırılacak etiketleri tanımlar.
  • -m, --merge: Bir ed betiği oluşturmak yerine birleştirilmiş çıktıyı verir.
  • -T, --initial-tab: Normal listelemede her satırın başında iki boşluk yerine sekme kullanır. ed(1) betiği üreten modlarda bu seçenek hiçbir şeyi değiştirmez.
  • -x, --overlap-only: Yalnızca her üç sürüme de özgü olan değişiklikleri içeren, ed(1) için uygun bir çıktı betiği üretir.
  • --diff-program program: Dosyaları karşılaştırmak için varsayılan diff(1) yerine belirtilen programı kullanır.
  • --strip-trailing-cr: Girdi dosyalarındaki satır sonu satır başı (carriage return, CR) karakterlerini temizler.
  • --version: Sürüm bilgisini yazdırır ve çıkış yapar.

-E ve -X, örtüşen değişiklikleri normal listede ==== ile işaretlenecek değişiklikler olarak ele alır. Her iki dosyadan gelen örtüşen satırlar, düzenleme betiği tarafından <<<<<<< ve >>>>>>> satırlarıyla sınırlandırılarak eklenir.

-E seçeneği, birleştirilmiş dosyalardaki örtüşen değişikliklerin korunmasını ve dikkat çekmesini sağlamak amacıyla RCS merge(1) tarafından kullanılır.

Örnek

file1 ve file2 dosyalarının her ikisinde de 7-8. satırların değiştirildiğini varsayalım. Aşağıdaki komutla oluşturulan düzenleme betiği:

diff3 -E file1 file2 file3

file1 dosyasına uygulandığında şu dosyayı oluşturur:

lines 1-6
of file1
<<<<<<< file1
lines 7-8
of file1
=======
lines 7-8
of file3
>>>>>>> file3
rest of file1

Varsayılan Çıktı

diff3 varsayılan olarak tüm dosyalar arasındaki farkları ve her dosya çiftine özgü farkları belirtir. Değişiklikler, ed(1) uygulamasının farklı sürümlerden istenen hedefi oluşturması için gereken komutlarla açıklanır. Komutların açıklaması için diff(1) sayfasına bakın.

  • ====: Bu işaretin altındaki satırlar, tüm dosyalar arasında farklı olan satır aralıklarıdır.
  • ====n: Bu işaretin altındaki satırlar, yalnızca n. dosyada farklı olan satır aralıklarıdır.

Ayrıca Bakınız

diff(1), ed(1), sdiff(1)

Tarihçe

diff3 komutu ilk olarak Sürüm 7 AT&T UNIX içinde yer almıştır.

Hatalar

-e seçeneği, satırdaki ilk ve tek karakter olarak . içeren satırları yakalayamaz ve değiştiremez. Ortaya çıkan betik bu satırda başarısız olur çünkü . karakteri bir ed(1) düzenleme komutudur.