Linux Fark Komutu

Linux Fark Komutu



Farkın, bir şeyi diğerinden ayırt edebilen bir kavram veya duygu olması daha olasıdır. “diff” komutu varyasyonu ifade eder. Bu araç, belgeleri satır satır analiz ederek dosyalar arasındaki farkları gösterir. Tamamlayıcı öğeleri cmp ve comm'den farklı olarak, benzer belgeleri oluşturmak için bir belgedeki hangi bölümlerin değiştirilmesi gerektiğini bize bildirir. Akılda tutulması gereken en önemli husus, belgelerin benzer olması için diff'in belirli özel semboller ve komutlar kullanmasıdır. Diğer belgeyle tutarlı olması için ilk belgeyi nasıl değiştireceğinize ilişkin yönergeler verilir. Bu kılavuzda, Linux terminali kullanılarak Ubuntu 20.04'te “diff” komutunun kullanımını tartışacağız.

Sistemimizin çalışma klasöründe iki adet metin dosyası oluşturuyoruz.









Her iki dosya içeriği arasındaki farkı görüntülemek için bir sorgu alanında “diff” talimatını kullanmanın zamanı geldi. Bu 'diff' komutunu her iki dosya adıyla da sırayla denedik, yani önce one.txt ve sonra iki.txt dosyası. 'diff' komutunun yürütülmesi bize her iki dosya arasındaki farkı şu şekilde gösterir:



  • İlk metin dosyasına göre satır numaraları.
  • Değişiklik, ekleme, silme gibi farkları bize bildiren özel karakterler/semboller.
  • İkinci metin dosyasına göre satır numaraları.

İlk örneğimizde, “diff” komut çıktısının satır numaraları arasında yer alan “a” sembolünü detaylandırıyoruz; “a”, “Ekle”nin kısaltması olarak kullanılır. Sorgu alanında her iki dosya adıyla birlikte “cat” komutunun kullanılması, her metin dosyasının içindeki içeriği, yani bir.txt ve iki.txt'yi görüntüler. İlk dosyada toplam 4 satırımız varken ikinci dosyada 5 satır var. 1. satır ekstradır.





Ardından, terminal sorgu alanında “diff” talimatını ve ardından dosya adlarını – one.txt ve iki.txt'yi deniyoruz. Bu talimatın yürütülmesi, ikinci dosyada fazladan bir satır olan ikinci dosyadan satır 1 ile birlikte çıktı olarak “0a1” i gösterir. “0” sayısal değeri, 0 satırı için veya ilk dosyanın 1. satırından önce kullanılır, yani one.txt. “a” sembolü “ekle” anlamına gelir. Son olarak, sayısal değer “1” ikinci dosyanın ilk satırı anlamına gelir. “0d1” miks çıktısı, ikinci “two.txt” dosyasının 1. satırının, ilk satır iki her iki dosyayı da aynı hale getirmeden önce ilk “one.txt” dosyasının en üstüne eklenmesi gerektiği anlamına gelir.



Şimdi, başka bir çizim görmek için her iki dosyayı da güncelliyoruz. İlk dosya “one.txt” 4 satır içerir ve ikinci dosya “two.txt” sadece 3 satır içerir. Bu dosyalar için tek fark, ilk dosyada fazladan bir satır kullanılmasıdır, yani ikinci dosyada olmayan satır 1 = “Pazartesi”. Güncellenen metin dosyaları için “diff” komutunu denedikten sonra çıktı olarak “1d0” alıyoruz. Ve ilk dosyanın ilk satırı görüntülenir. “1d0”da 1, “one.txt” dosyasındaki ilk satırın silinmesi gerektiği anlamına gelir (“d” sembolüne göre) ve 0, ikinci dosyanın güncelleme almadığı anlamına gelir. Sonunda, net fark için ilk “one.txt” dosyasındaki 1. satır görüntülenir.

Benzer şekilde, 'diff' komutu iki dosyanın satırları arasındaki farkı gösterebilir. Bu nedenle, her iki metin dosyasını da bir kez daha güncelliyoruz. Bu sefer ilk dosya 5 satır içerirken ikinci dosya sadece 4 satır içerir. Tek fark one.txt'de fazladan bir satır, yani satır 3 kullanılmasıdır. Terminaldeki her iki dosyada da kullanılan diff komutu, “one.txt” ilk dosyasından 3. satırla birlikte “3d2” çıktısını alın. Bu çıktı, ikinci dosyanın 2. satırındaki her iki dosyayı da senkronize edebilmemiz için ilk “one.txt” dosyasındaki 3. satırın silinmesi gerektiğini gösterir. Fark hakkında net bir fikir edinebilmemiz için farklı satır “3” görüntülenir.

Çıktıya net ve daha derin bir göz atalım. Aşağıdaki görüntüdeki 1,5c1,2 çıktısı, ilk dosyanın (one.txt) 1'den 5'e kadar olan satırlarının, ikinci bir dosyanın (two.txt) 1'den 2'ye kadar olan satırları ile değiştirilmesi gerektiğini göstermektedir. Yani one.txt dosyasının ilk 5 satırı (1 - 5) değiştirilmeli ve aynı olması için ikinci dosya “two.txt”in ilk iki satırı (1, 2) ile değiştirilmelidir. Sonunda, ikinci dosyanın görüntülenen 2 satırı ile değiştirilmesi gereken ilk dosyadaki 5 satırın tümü görüntülenir. “c” sembolü iki dosya arasındaki farkı bu şekilde anlatır – her iki dosyada da hiçbir satır aynı değildir.

'diff' komutu, çıktısını bir bağlam biçiminde almanızı sağlar. Bu dosyalarda aşağıdaki verilerle aynı iki dosyaya sahip olduğunuzu düşünün. Çıktının etrafındaki bağlam, aşağıdaki resimde gösterilen toplam basit dosyalar arasındaki ana farkı göstermek olacaktır. Şimdi ilk dosya “one.txt” içinde 5 satır, ikinci dosya “two.txt” içinde 4 satır var.

“diff” komutunun bağlam tabanlı çıktısını almak için “diff” komutu içerisinde “-c” seçeneğini kullanmamız gerekiyor. Bu 'diff' komutunda önceden güncellenmiş dosyaları kullanarak, aşağıdaki çıktıyı elde ederiz - tarih, gün ve dosyalar içinde metin oluşturma ile ilgili ek bilgiler. one.txt dosyalarından 5 satır görüntülenir. Özellikle üçüncü satırı, başka bir dosyaya eklemek için “-“ karakteri kullanılarak vurgulanır.

Çözüm

“diff” talimatı ile ilgili her şeyi kısaca açıklamaya çalıştık. Bunun için metin dosyalarımızı her seferinde güncelledik ve bir dosyadaki verileri eklemek, çıkarmak ve değiştirmek için güncel bir çıktı aldık. Giriş, Linux'ta “diff” komutunu kullanmanın amacını ve Linux için nasıl kullanılacağını açıkladı.