navi


TLDR;1

 


Linux’te shell ile çalışırken bir çok komut yazmak gerekiyor. İnsan her ne kadar günün büyük kısmını genelde bildiği komutlar ile geçirse de eskiden kullandığı bir komutu hatırlayamadığında durum can sıkıcı olabiliyor. Bir de bu işin içine pipe mekanizması girecek ise, durum bir hayli can sıkıcı hale dönüşüyor. Böyle durumlarda uzun komutları hatırlayan kişileri tebrik ediyorum. 2 Ne yazık ki benim hafızam o kadar kuvvetli değil.

 

Bu yazıda, Linux komut satırında yapılan işlerin tekrarlanabilir olması açısından kullandığım araçlardan bahsettim.

 


Alias

Eminim ki herkes alias komutundan haberdardır ve en basitinden ll='ls -l' gc='git clone'  gibi komutları kullanıyordur. Aliasların tanımları genelde statik olduğundan ve herkes kendine göre kısayol tanımladığından dolayı, pek geliştirmeye ve sürdürülebilirliğe sahip değiller.3


komutlar.txt

Her erkeğin ömür boyu sakladığı kablo dolu kutusu olduğu gibi, her Linux kullanıncısının mutlaka ben bunu ilerde kullanırım diye not aldığı komutlar bulunmaktadır. Bu da dosya da kayboluncaya4 kadar iş görmektedir. 🙂

 


CheatSheet

Bir çoğunuz İngilizcede CheatSheet diye geçen kavramı duymuşsunuzdur. Hatta eminim bir çoğu tarayıcı bookmarklar’ınızda öylece okunmayı bekliyordur. Bilmeyenler için bu CheatSheet’in esas amacı herhangi bir yapının en çok kullanılan özelliklerini listeleyip insan beyni için kategorilendirilmiş bir isveç çakısı oluşturmak diyebiliriz.5

 


Navi

Goygoy kısmı bitirdiğimize göre, yazının esas amacı olan ve uzun süredir kullandığım ve performansımı önemli ölçüde arttırdığını düşündüğüm navi aracından bahsedeceğim.

 

Araç en basit tabir ile kendini interaktif CheatSheet olarak tanımlıyor. Yani biraz daha somutlaştırırsak, yazdığınız komutlara bir başlık vererek o komutu interaktif6 bir şekilde çağırmanıza/kullanmanıza yarıyor.


 

Aracı bir problem üzerinden anlatırsak:

Problem: Farz edelim ki projenizde bir sorun var ve main.c adlı dosyanın kimler tarafından değiştirildiğini, hangi tarihlerde kimlerin, hangi satırları eklediğini git komutunu kullanarak görmek istiyorsunuz.

 

Çözüm 1(Man pages)

Problemi man komutunu kullanarak çözmek istiyorsanız man git-log yazıp –follow parametresini görmeniz pek uzun sürmez. Ancak git’in alması gereken -p parametresini görmeniz için yaklaşık olarak 1100 satır okumanız veya aramaya inanmanız gerekiyor.


Çözüm 2(Google + stackoverflow)

  • Until Success
    • Copy
    • Paste

Problemin devamı

Sıkıntı bunu ikinci kez yapmak istediğinizde, yukarıda kopyala yapıştır yaptığımız komutu ne kadar hatırlıyorsunuz.


Çözüm 3(navi)

Navi burada kullandığınız komutları daha hızlı hatırlamanızı sağlıyor. Ctrl + g yaptıktan sonra komut veya ona verdiğiniz başlık ile alakalı yazdığınız kelimeler içinde arayarak, size uygun olan komutu kullanmanızı sağlıyor.7

 

Nasıl çalışıyor

navi

 

Ben nasıl kullanıyorum.

Açıkçası yukarıda gördüğünüz üzere, navi varsayılan olarak seçilen komutu hemen çalıştırıyor. Yanlışlık ile bastığınız enter tuşu, büyük bir sıkıntı yaratabilir. Bu yüzden ben bu varsayılan olarak gelen hemen çalıştırma özelliği  yerine --print  ile ekrana bastırıp kontrol ettikten sonra çalıştırmayı tercih ediyorum.

 

Eğer kendiniz tanımlamak isterseniz, aşağıdaki gibi tanımlanması gereken bir syntax’ı var.

Aşağıda kendimin tanımladığım bloklardan örnek verdim.

 

 


Daha fazlası için: