Unix moreutils Kurulumu ve Kullanımı

Unix temelli sistemlerde (Linux, macOS vb.) sıklıkla kullanılan ve arada ihtiyaç duyulan opsiyonlar ve komutlar dışında bir de yeni yetenekler geliştirilmesini sağlayan moreutils gibi paketler de ihtiyaçlara göre şekillendirilip/geliştirilip yayınlanmakta.

AA

Çoğunlukla geliştirici ihtiyaçları düşünülerek planlanan bu paketler1 esasında Unix temelli sistemlerde bir çok işlemi pratik ve hızlı bir şekilde gerçekleştirmek isteyen son kullanıcılar için de çok yararlı olabilmekte2. Elbette bu tür bir ihtiyacın ya da sorunlara dair çözümlerin olabileceğiniz dair farkındalık kazanılması gerekmekte. Bu anlamda moreutils sanırım oldukça güzel bir başlangıç olacaktır3 4.

“moreutils” Paket Kurulumu

macOS için Homebrew paket yöneticisi üzerinden yükleme işlemimizi pratik bir şekilde gerçekleştirebiliriz.

brew install moreutils

Debian/Ubuntu vb. dağıtımlar için de apt işimizi görecektir.

sudo apt-get install moreutils

“moreutils” Kullanımı

Kurulum işleminin tamamlanmasının ardından moreutils paket içeriğinde kullanabileceğimiz birkaç aracın sunduğu yeteneklere bakalım.

Combine

Dosya içeriklerini satırlar halinde karşılaştırmamızı sağlar. Kullanımı şu şekildedir;

combine [dosya-adi-1] and|not|or|xor [dosya-adi-2]
AND

Belirtilen her iki dosyaya ortak olan satırları döner.

combine [dosya-adi-1] and [dosya-adi-2]
NOT

Belirtilen ilk dosyada olup ikinci dosyada olmayan satırı döner.

combine [dosya-adi-1] not [dosya-adi-2]
OR

Belirtilen her iki dosyadaki satırları döner.

combine [dosya-adi-1] or [dosya-adi-2]
XOR

Belirtilen dosyalar içerisinde ortak olmayan satırları döner.

combine [dosya-adi-1] xor [dosya-adi-2]

Yukarıdaki karşılaştırma parametreleri sort ve uniq ile düzenlenebilir. Örneğin aşağıdaki kod çıktıyı sıralayacak ve benzer satırları tekrarsız olarak sunacaktır.

combine [dosya-adi-1] and [dosya-adi-2] | sort | uniq

ifne

ifne (if not empty) belirtilen standart giriş işleminin boş dönüp dönmediğine bağlı olarak sonraki işlemin devam etmesini sağlamaktadır. Standart olarak dönen ifade “boş değilse” üzerinden işler ve -n ile ters işlem yürütülebilir. Örnek olarak aşağıdaki kod bulunulan dizinde core.txt isimli bir dosya arayacak ve bulunursa ekrana “Dosya bulundu!” yazdıracaktır.

find . -name core.txt | ifne echo 'Dosya bulundu!'

sponge

sponge, standart girdinin tamamını okuyup belirtilen dosyaya yazma işlemini gerçekleştirmekte. Bu sayede işlemleri gerçekleştirip, aynı döküman üzerine herhangi bir temp file olmaksızın yazabiliyor.

sort [dosya-adi] | uniq > temp
mv temp [dosya-adi]

Özetle, sponge ile yukarıdaki komut yerine tek satırlık işlemler üzerinden dosya yazdırmak oldukça pratik hale geliyor.

sort [dosya-adi] | uniq | sponge [dosya-adi]

moreutils paket içeriğinde yukarıdaki araçlar dışında daha pek çok özellik barındırmakta. Araçların tamamı için joeyh.name > moreutils sayfasını inceleyebilirsiniz.