1. diff Komutu Nedir?
diff (difference) komutu, Linux ve Unix sistemlerinde iki dosya ya da dizin arasındaki farkları satır satır karşılaştırmak için kullanılır.
Özellikle kod değişikliklerini görmek, konfigürasyon dosyalarını karşılaştırmak veya versiyon farklarını analiz etmek için çok kullanışlıdır.
diff çıktısı, hangi satırların eklendiğini, silindiğini veya değiştirildiğini net şekilde gösterir.
Temel Kullanım
diff dosya1.txt dosya2.txt
Açıklama: dosya1.txt ile dosya2.txt arasındaki satır farklılıklarını listeler.
3. Çıktı Formatı
diff çıktısı genellikle şu şekilde olur:
1,3c1,3
< eski satır 1
< eski satır 2
---
> yeni satır 1
> yeni satır 2
• < → İlk dosyadaki satırlar • > → İkinci dosyadaki satırlar • c → change (değişiklik) • a → add (ekleme) • d → delete (silme)
Sık Kullanılan Argümanlar
Argüman | Açıklama |
---|---|
-u | Unified format – Kod değişikliklerinde en çok kullanılan, satır numaraları ve bağlam satırları ile birlikte gösterir. |
-c | Context format – Değişikliklerden önce ve sonra birkaç satır bağlam verir. |
-i | Büyük/küçük harf farklarını yok sayar. |
-w | Tüm boşluk farklarını yok sayar. |
-B | Boş satır farklarını yok sayar. |
-r | Dizinleri karşılaştırırken alt dizinleri de karşılaştırır. |
–side-by-side | Farkları yan yana gösterir. |
–suppress-common-lines | Yan yana modda ortak satırları göstermez. |
5. Örnek Kullanımlar
5.1. Birleştirilmiş (Unified) Format ile Farkları Gösterme
diff -u eski.txt yeni.txt
Açıklama: Kod incelemelerinde (git diff gibi) yaygın olarak kullanılan format.
5.2. Boşluk Farklarını Yok Sayma
diff -w dosya1.txt dosya2.txt
Açıklama: Satır içindeki boşluk farklılıklarını önemsemez.
5.3. Yan Yana Karşılaştırma
diff --side-by-side eski.txt yeni.txt
Açıklama: İki dosyayı yan yana listeler, farklı satırlar kolayca seçilir.
5.4. Dizin Karşılaştırma
diff -r dir1 dir2
Açıklama: dir1 ve dir2 dizinlerinin içeriğini karşılaştırır.
5.5. Ortak Satırları Gizleyerek Yan Yana Karşılaştırma
diff --side-by-side --suppress-common-lines eski.txt yeni.txt
Açıklama: Sadece farklı satırları yan yana gösterir.
5.6. Büyük/Küçük Harf Farkını Yok Sayma
diff -i dosya1.txt dosya2.txt
Açıklama: Hello ve hello gibi farkları görmezden gelir.
Patch Dosyası Oluşturma
diff -u eski.txt yeni.txt > degisiklik.patch
Açıklama: eski.txt ile yeni.txt arasındaki farkları bir yama (patch) dosyasına yazar.
Bu yama daha sonra patch komutu ile uygulanabilir:
patch < degisiklik.patch
6. İpuçları
- Kod değişikliklerini kolay okunur şekilde görmek için -u veya –side-by-side kullan.
- Versiyon kontrol sistemlerinde (git) zaten diff mantığı temel alınır.
- Patch dosyaları ile farklı sistemler arasında değişiklikleri kolayca taşıyabilirsin.
- Konfigürasyon dosyaları karşılaştırırken boş satır ve boşluk farklarını yok saymak için -B -w parametrelerini birlikte kullan.