Örneklerle Linux’ta diff Komutu Nasıl Kullanılır

Merhabalar,

diff, iki dosyayı satır satır karşılaştırmanıza izin veren bir komut satırı yardımcı programıdır. Ayrıca dizinlerin içeriğini de karşılaştırabilir.

diff komutu en yaygın olarak patch komutu kullanılarak uygulanabilen bir veya daha fazla dosya arasındaki farkları içeren bir yama oluşturmak için kullanılır.

diff Komutu Nasıl Kullanılır

diff komutunun söz dizimi aşağıdaki gibidir

diff [SEÇENEK]... DOSYALAR

 

diff komutu, çıktıyı normal, bağlam ve birleşik biçim en yaygın olanlar olmak üzere çeşitli biçimlerde görüntüleyebilir. Çıktı, dosyalardaki hangi satırların aynı olması için değiştirilmesi gerektiği hakkında bilgi içerir. Dosyalar eşleşirse, çıktı üretilmez.

Komut çıktısını bir dosyaya kaydetmek için yeniden yönlendirme operatörünü kullanın:

Bu makalede, diff komutunun nasıl çalıştığını açıklamak için aşağıdaki iki dosyayı kullanacağız.

test1.txt

 

test2.txt

 

Normal Format:

En basit haliyle, diff komutu herhangi bir seçenek olmaksızın iki metin dosyası üzerinde çalıştırıldığında, normal biçimde bir çıktı üretir.

diff test1.txt test2.txt

Normal çıktı formatı, farklılıkları tanımlayan bir veya daha fazla bölümden oluşur. Her bölüm şöyle görünür.

0a1, 2d2 ve 4c4,5 değişiklik komutlarıdır. Her değişiklik komutu, soldan sağa aşağıdakileri içerir:

İlk dosyadaki satır numarası veya satır aralığı.
Özel bir değişiklik karakteri.
İkinci dosyadaki satır numarası veya satır aralığı.

Değişiklik karakteri aşağıdakilerden biri olabilir:

a – Satırları ekleyin.
c – Çizgileri değiştirin.
d – Satırları silin.

Change komutunu, kaldırılan (<) ve dosyaya eklenen (>) tam satırlar takip eder.

Çıktıyı açıklayalım:

0a1 – İkinci dosyanın 1. satırını test1’in başına ekleyin (0 satırından sonra).
> CbMW – Yukarıda açıklandığı gibi ilk dosyaya eklenen ikinci satırdaki satır ifadesi.
2d2 – İlk dosyadaki 2. satırı sil. d sembolünden sonraki 2, satır silinmezse, ikinci dosyada 2. satırda görüneceği anlamına gelir.
< MERCEDES – silinen satır.
4c4,5 – İlk dosyadaki 4. satırı ikinci dosyanın 4-5 satırlarıyla değiştirin (değiştirin).
< PORSCHE -ilk dosya içindeki yer değiştirilecek satır
— -Separator (Ayırıcı).
> MERCEDES ve > PORSche – ikinci dosyadaki satır ilk dosyadaki satırla yer değiştirilmeli

 

Context Fortmat (Bağlam Biçimi):

Bağlam çıktı biçimi kullanıldığında, diff komutu, dosyalar arasında farklılık gösteren satırların çevresinde birkaç bağlam satırı görüntüler.

-c seçeneği, diff’e bağlam biçiminde çıktı üretmesini söyler

diff -c test1.txt test2.txt

Çıktı, karşılaştırılan dosyaların adları ve zaman damgalarıyla ve farklılıkları açıklayan bir veya daha fazla bölümle başlar. Her bölüm şöyle görünür.

***************
*** from-file-line-numbers ****
from-file-line...
--- to-file-line-numbers ----
to-file-line...

from-file-line-numbers ve to-file-line-numbers – Birinci ve ikinci dosyada sırasıyla satır numaraları veya virgülle ayrılmış satır aralığı.
from-file-line ve to-file-line – Farklı olan satırlar ve bağlam satırları:
İki boşlukla başlayan satırlar, her iki dosyada da aynı olan bağlam satırlarıdır.
Eksi sembolü (-) ile başlayan satırlar, ikinci dosyadaki hiçbir şeye karşılık gelmeyen satırlardır. İkinci dosyada eksik satırlar.
Artı sembolü (+) ile başlayan satırlar, ilk dosyadaki hiçbir şeye karşılık gelmeyen satırlardır. İlk dosyada eksik satırlar.
Ünlem işareti (!) ile başlayan satırlar, iki dosya arasında değiştirilen satırlardır.ilk dosyadan  !  İle başlayan her satır grubu  ikinci dosyada karşılık gelen bir eşleşme var.

Çıktının en önemli kısımlarını açıklayalım:

Bu örnekte, farklılıkları açıklayan yalnızca bir bölümümüz var.
*** 1,5 **** ve — 1,6 —- bize bu bölümde yer alan birinci ve ikinci dosyalardan satır aralığını söyler.
BMW,AUDI ve SKODA satırları ve son boş satır her iki dosyada da aynıdır. Bu satırlar çift boşlukla başlıyor.
Satır – İlk dosyadaki MERCEDES, ikinci dosyadaki hiçbir şeye karşılık gelmez. Bu satır ikinci dosyada da mevcut olsa da konumları farklıdır.
İkinci dosyadaki + CbMW, ilk dosyadaki hiçbir şeye karşılık gelmiyor.
 İlk dosyadan PORSCHE satırı, ikinci dosyadan MERCEDES ve PORSche satırları , dosyalar arasında değiştirilirilmelidir.

Varsayılan olarak, bağlam satırlarının sayısı varsayılan olarak üçtür. Başka bir sayı belirtmek için -C (–contexts) seçeneğini kullanın:

diff -C 1 test1.txt test2.txt

 

Unified Format (Birleşik Biçim)

Birleşik çıktı formatı, bağlam formatının geliştirilmiş bir versiyonudur ve daha küçük bir çıktı üretir.

Diff’e çıktıyı birleşik biçimde yazdırmasını söylemek için -u seçeneğini kullanın.

diff -u test1.txt test2.txt

Çıktı, dosyaların adları ve zaman damgalarıyla ve farklılıkları açıklayan bir veya daha fazla bölümle başlar. Her bölüm aşağıdaki formu alır:

@@ from-file-line-numbers to-file-line-numbers @@ – Bu bölümde yer alan birinci ve ikinci dosyalardan satır numarası veya satır aralığı.
line-from-files – Farklı olan satırlar ve bağlam satırları.
İki boşlukla başlayan satırlar bağlam satırlarıdır, her iki dosyada da aynı satırlardır.
Eksi sembolü (-) ile başlayan satırlar, ilk dosyadan kaldırılan satırlardır.
Artı sembolü (+) ile başlayan satırlar, ilk dosyadan eklenen satırlardır.

Ignore case (Büyük/küçük harf yoksay):

Yukarıdaki örneklerde fark edebileceğiniz gibi, diff komutu varsayılan olarak büyük/küçük harf duyarlıdır.

-i seçeneğini, diff’e büyük/küçük harf yok saymasını söylemek için kullanabiliriz.

diff -ui test1.txt test2.txt

 

 

Bu eğitim yazımızın sonuna geldik.Umarım bu eğitim yazısı sizin için faydalı olur.

 

 

 

 

Bu eğiticiye oy ver
[Total: 4 Average: 5]
Firat CANOĞLU TAĞ