top of page

CLI(Command Line Interface) Nedir? Nasıl Yapılır?

Güncelleme tarihi: 13 Nis 2020



Açılımı Command Line Interface olan bu tanımın türkçesi "Komut Satır Arayüzü" dür. Adından da anlaşılacağı gibi bir arayüzdür. Fakat bu arayüzde sadece komutlar yer almaktadır.


Arayüzler bilgi vermek yada içerisine bir bilgi girmek için kullanılırlar. Bizim bilgisayar ile iletişimimizi sağlayan ekranlardır. Bilgisayarımızda bulunan terminaller(Windows için Cmd) aslında birer komut satır arayüzüdür.


Kısaca Consol uygulamalarının hepsi bir CLI'dır diyebiliriz. Peki bu CLI ile ne yapabiliriz nerelerde kullanılırlar. CLI lar normal bir uygulamada yapabildiğiniz çoğu şeyi yapabilirler, tek farkı bunu komut satırı olarak söylemeniz. Grafiksel bir arayüz olmadığı için de grafiksel bir sonuç beklemeniz de yanlış olacaktır.


Gelin grafiksel bir arayüze sahip bir uygulamada yapabileceğiniz bir işlemi, komut satırı arayüzüne sahip bir uygulama da yapalım ve konuyu daha fazla pekiştirelim.


Mesela bir toplama işlemi yaptıran uygulamanız olsun. İki tane veri girebileceğiniz alanınız ve bir tanede işlemi yaptırdığınız butonunuz olsun. Butona basınca bir başka alana da sonucu yazsın. Aşağıda yer alan arayüze benzeyen bir tasarımla, bildiğiniz bir dilde, bu uygulamayı grafiksel bileşenleri kullanarak kolaylıkla yazabilirsiniz.


Şimdide bu uygulamayı hiçbir tasarıma gerek olmayan Consol uygulamasıyla yazalım. Yazdığımız bu Consol uygulamasını da bir CLI olarak nasıl kullanabileceğimize bakalım.


Bu örnek için Visual Studio kullandım. Yeni proje diyerek bir tane Consol uygulaması oluşturun:

Bu uygulamayı oluştururken bilinmesi gereken bir diğer konuda Main methodundaki args(arguments) parametresinin ne işe yaradığıdır. Bu yazıdaki bütün konu bu parametredir.


Bu parametre .exe çalıştırılırken dışarıdan doldurabilmektedir. Zaten olayda dışarıdan verileri gönderebilmekte. Bir sınırı olmadı için istediğiniz kadar parametreyi gönderebilirsiniz.


Basit bir örnekle bunu deneyelim. Çoğumuzda Chrome tarayıcı vardır. Chrome uygulamasına bir argument parametresi ile uygulama başlamadan bazı ayarlamalar yaptırabilirsiniz. Örneğin Chrome tarayıcısını dark mode da başlatmayı deneyelim. Bu kodların listesinin olduğu bir sürü site bulabilirsiniz.


--force-dark-mode

Chrome.exe ye giderek bu parametreyi ekliyorum. Bunun için Chrome kısayoluna sağ tıklayıp özellikler demelisiniz. Chrome.exe yi kullanacağım parametre ile başlatması için parametreyi .exe dosya yolunun sonuna ekliyorum.


Kaydedip tekrar Chromu açtığınızda artık karanlık modda açıldığını görebilirsiniz.


Bizde bu argument parametresini kullanarak bir Consol uygulamasına çeşitli işler yaptıracağız. Tekrar Consol uygulamamıza gelip işlerimizi yazalım. Örneğimiz basit aritmetik işlemleri yaptıran bir CLI olsun bu.


Bunun için bir kaç aritmetik işlem methodu ekliyorum uygulamama.


Buradaki A ve B parametrelerini Main methodumdaki args parametresinden gelen değerlerle dolduracağım. Şimdide sürekli if..else bloğu yapmamak için metdolarımı bir listeye atmak için Dictionary sınıfından static bir class içerisine bu methodları ekliyorum.


Böylece sürekli if'lerle uğraşmama gerek kalmadı. Eğer göndereceğim komut bu listede varsa benim kodumu işletecek. Resimde de görüldüğü gibi her bir methodum için iki tane komut belirledim. Bir tanesi kısa(--t) diğeri de uzun(--topla).

Asıl önemli kısma geldik. Şimdide bu komutların anlam kazanacağı yeri yazalım. Main methoduna gelelim ve gönderdiğimiz parametreler içerisinde dönerek, bu parametrenin bizim oluşturduğumuz komut listesinde varsa eğer, o komuta denk gelen methodu çalıştırmasını sağlayalım.


ConstainsKey ile gelen komutun, oluşturduğum komut listesinde olup olmadığını kontrol ediyorum. Eğer komutum listede varsa true dönecektir. Komutumun listede olduğunu teyit ettiğime göre komutuma denk gelen methoda gidebilirim.


Yani gelen parametre şayet --t ise bu komuta denk gelen Topla methodunu bulacaktır. Daha sonrada bu parametreden sonra gelen birinci ve ikinci parametreleri bulduğum methoduma parametre olarak gönderdiğimde yazdığım method çalışacaktır.


İşlem bu kadar basit. Artık komut satırıma eklediğim bütün methodları if..else blokları koymadan çalıştırabilirim.


Şimdide gelin bunun çalışıp çalışmadığını kontrol edelim. Eğer windows kullanıyorsanız bilgisayarınızda komut istemcisini açın.

Yazdığınız Consol uygulamasının klasörüne gitmek için


cd "Dosya Yolu"

yazarak çalıştırın

Şimdide .exe nizin ismini bulun ve daha sonra çalıştırmak istediğiniz komutu yazdıktan sonra A ve B değerlerini gönderin.


Aşağıdaki resimde örnek bir toplama işlemini yaptırdım.

Görüldüğü gibi bir komut arayüzünden de aynı işlemi yaptırabiliyoruz artık. Şimdide bunu global olarak sistemimize ekleyelim ve her defasında dosya yoluna gitmek yerine sadece .exe ismiyle bu işlemleri yaptıralım.


Bunun için öncelikle Denetim Masasından Sisteme tıklayın.

Burada gelişmiş sistem ayarlarına tıklayın. Buradan Gelişmiş sekmesine gelin ve ardından Ortam değişkenleri butonuna basın.

Burada Sistem Değişkenleri kısmında Path seçeneğine gelerek Düzenle butonuna basın.


Burada Consol uygulamanızın dosya yolunu yeni diyerek ekleyin. Artık Consol uygulamanızı her hangi bir terminal ekranından rahatlıkla kullanabilirsiniz.


Hadi gelin test edelim. Tekrar bir komut satırı açın ve sadece TestCLI1 yazarak aynı parametreleri göndererek deneyin. Gördüğünüz gibi artık dosya yoluna ihtiyacınız yok.

Hadi gelin bir de VsCode de deneyelim.


Gördüğünüz gibi bir CLI uygulaması ile bir çıktı sağlayabiliyoruz. Git, Node , Heroku gibi bir çok CLI uygulaması bulunmaktadır. Bu programlar genellikle dosya kopyalama, ekleme veya oluşturmak için kullanılmasına rağmen daha değişik kullanım alanları da vardır.


Eskiden dll importlamak diye bir şey vardı. Fakat günümüzde farklı dillerin kendi içerisinde özelleştiği farklı alanlar olduğu için ve her dil dll oluşturmadığı için, bu yaklaşımla bir uygulamaya parametre göndererek bir sonuç elde edebilir ve kullanabilirsiniz.


Mesela ben javada yazılmış bir efatura şematron kontrolünü bu yaklaşımla kullanıyorum. Java uygulamasına parametre olarak faturayı gönderip eğer yanlışsa gelen hata mesajlarını gösteriyorum.





1.454 görüntüleme0 yorum

Son Yazılar

Hepsini Gör
bottom of page