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.
Ç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.