Kabuğun Çalışma Prensipleri ve Komutlar-3
- Huseyin Şahan
- 14 Mar
- 4 dakikada okunur
Bu blog yazımızda komut türlerini ele alacağız.İçeriksel(Built-in) veya Dışsal(External) komut türlerine değineceğiz.Ayrıca kabukta nasıl komut geçmişini görebileceğimizi ve nasıl takma ad oluşturacağımız öğreneceğiz.
Built-in(İçeriksel) Komutlar
Built-in komutlar, bash gibi kabuk programlarının içinde yer alan komutlardır.Bu komutlar, kabuk tarafından doğrudan sağlanır ve kabuk oturumu içinde çalıştırılır.Kabuk (shell) programı, bu komutları dahili olarak çalıştırır. Yani, işletim sistemi tarafından ayrı bir program çalıştırmaya gerek kalmaz.Bular kabuk setinin bir parçasıdır ve derlenmiş olarak hazır biçimde gelirler.
Bir komutun türünü görebilmek için type komutunu kullanabilirsiniz.Bu size İçeriksel mi yoksa dışsal bir komutmu olduğunu söyleyecektir.
darkside@debian:~$ type echo
Aşağıdaki gibi çıktı alabilirsiniz.

Örneğin burada ps bir dışsal komut yani kabukta hazır gelmeyen bir komuttur.Ancak echo komutu kabuğun bir parçasıdır ve ayrı bir program olarak çalışmaz.Burada -a komutu ile komut dosyalarını da görüntülemiş olduk.Yani komutun çalıştırılabilir dosyaları nerede bulunduğunu görebiliriz.İsterseniz bunu which komutu kullanarak yapabilirsiniz.
darkside@debian:~$ which echo
Bu size komutun çalıştırılabilir dosya yolunu verecektir.
Dışsal(External) Komutlar
Dışsal komutlar, kabuk programının dışında çalışan ve genellikle sistemin dosya sisteminde bulunan programlardır.
Bu komutlar kabuk dışında yer alır ve bir işlem olarak işletim sistemi tarafından çalıştırılır.Genellikle /bin, /usr/bin, /sbin ve /usr/sbin gibi dizinlerde bulunan uygulama programlarıdır.Örnekler: ls, grep, cp gibi komutlar dışsal komutlardır.
Aşağıda grep komutunun türünü görebiliriz.Genelde içsel komut olarak belirtilmiyorsa bu dışsal komut anlamına gelir.
darkside@debian:~$ type grep
Farklar Nelerdir ?
İçeriksel komutlar kabuk tarafından yerel olarak sağlanır ve bu komutların çalışması için yeni bir işlem başlatılmaz.
Dışsal komutlar ise genellikle işletim sisteminde bulunan bağımsız programlardır ve çalıştırıldığında, kabuk bu programı çalıştırmak için yeni bir işlem başlatır.
Kabuk Geçmişini Görüntüleme
Hepimiz birinin geçmişini merak edebilirz.Bu kullandığımız kabuk programı için de geçerlidir.Komut geçmişini öğrenmek için history komutunu kullanacağız.
darkside@debian:~$ history
Bu size şuna benzer bir geçmiş listesi verecek.

Bu daha önce çalıştırdığımız komutların geçmişini gösteriyor.Bu komutun aslında yaptığı şey kabukta yer alan gizli bir geçmiş dosyayı okumasıdır.Aynı işlemi aslında aşağıdaki komut ile yapabilirsiniz.
darkside@debian:~$ cat .bash_history
Biraz sonra bu işlemi bir değişkenle değiştirip kendi geçmiş görüntüleme komutumuzu oluşturacağız.Bu komutun çıktısı history ile aynı olacaktır.

Bazen komut geçmişinin kesinlikle kayıt edilmesini isteyebilirsiniz.Normalde kabuk,kabuğu kapatmadan önce otomatik olarak geçmişi kayıt ediyor.Anca bunu kesin garanti etmek için şu komutu kullanın.
darkside@debian:~$ history -a
Bu komut ile çalıştırdığınız komutları hemen kayıt edebilirsiniz.
Takma adlar kullanma
Bazen uzun komutları hatırlamayabilir veya tekrardan ayzmak sizin için çok zorlayıcı olabilir.Takma adlar işte burada çok işimizi yarıyor.linux işletim sistemi zaten daha önceden takma adlar sunar bu takma adların listesini görebilmek için aşağıdaki komutu deneyin.
darkside@debian:~$ alias -p
İşte komutumun çıktısı şuna benzer birşey oldu.

Burada sadece bir tane değişkenim var.Aslında kullanığım ls komutu bir takma ad.Gerçekten çalışan komutu eşitliği sağ tarafında görebilirsiniz.
Peki biz yeni bir takma ad oluştursak.Bunu nasıl yapabiliriz ? İşte aşağıdaki bir örnekle bir merhaba komutu oluşturduk.Bu bize bir çıktı verecek.
darkside@debian:~$ alias merhaba="echo 'Merhaba Linuxsh'"
Bu merhaba adında bir komut oluşturur.Burada merhaba komutunu çalıştırın.

Burada merhaba komutumuz bir takma addır.Aslında çalışan komut echo komutu olacaktır.Ancak bu komut sadece oluşturduğumuz kabukta geçerli yani geçicidir.Örneğin bir çocuk kabuk oluşturalım.bash komutu ile bir çocuk kabuk oluşturun.
darkside@debian:~$ bash
Yine merhaba komutumuzu çalıştırınca hata verecektir.Çünkü komutumuz sadece ana kabukta geçerli olacaktır.

Ancak çocuk kabuğu exit ile kapatırsanız ve tekrardan ana kabuğa döneceğiniz için komut yine çalışacaktır.

İşte çocuk kabuğu exit ile öldürdik ve ana kabuğa döndük bu sayede merhaba komutu çalıştı.
Ancak bu yöntemler geçici yöntemlerdir.Bu komutu kalicı hale getirebiliriz.Önce geçerli kullanıcı için nasıl takma ad oluştururuz onu görelim.Öncelikle kabuk için kabuk ayarlarını tutan bir .bashrc adlı bir dosya mevcuttur.Bu dosya mevcut kullanıcının kullandığı ayarları tutar.
darkside@debian:~$ nano ~/.bashrc
Dosyasını açın bu sadece darkside kullanıcıs için geçerli bir dosyadır.Ardından dosyanın sonuna alias komutunu ekleyin.
alias merhaba="echo 'Merhaba Linuxsh'"
Bu komutu ekleyin ve dosyayı kaydedip çıkın.Değişikliklerin hemen etkili olması için aşağıdaki komutu girin.
darkside@debian:~$ source ~/.bashrc
Artık değişiklikler etkili oldumu görelim.Her darkside kullanıcısının oturumu için merhaba komutu mevcut olacaktır.Ancak başka kullanıcılar için bu komut çalışmaaycak.Çünkü bu dosya sadece geçerli kullanıcının ayarını değiştirir.
darkside@debian:~$ merhaba
İşte komutun çıktısı ve root kullanıcıs için komutumuzun geçerli olmadığını görebilirsiniz.

Burada root kullanıcı için bu dosyadaki değerler anlama ifade etmez.Ancak tüm kullanıcılar için komutumuzu geçerli kılmanın bir yolu var.Takma adı /etc/bash.bashrc dosyasına ekleyerek sistemde çalışan tüm bash kullanıcılarında bu komut çalışacaktır.Ancak bu sadece bash kabuğunda geçerli olacaktır.Diğer kabuklar için nasıl yapacağınızı göstereceğiz.
root@debian:~$ nano /etc/bash.bashrc
Dosyayı açın ve alias takma adımızı en sona ekleyin.
alias merhaba="echo 'Merhaba Linuxsh'"
Daha sonra değişiklikleri hemen kayıt edin.
root@debian:~$ source /etc/bash.bashrc
Artık tüm kullanıcılar için komutu kullanabiliriz.Ancak bu işlemleri root yetkisi ile yapmanız gerekir.Bu dosyayı düzenleme işlemi kök erişimi gerektiriyor.Bakın artık kök kullanıcımızda bu komutu kullanabiliyor.

Ancak bu sadece bash kabuğunda oturum açan tüm kullanıcıları kapsar. Eğer kullanıcı sh kabuğunda oturum açarsa bu komut geçerli olmaz.
sh kabuğuna geçin ve merhaba komutu çalıştırın.
darkside@debian:~$ sh
İşte merhaba komutunu çalıştırınca hata veriyor.

Aslında dash yada sh gibi kabuk türleri daha minimalist oalrak tasarlanmıştır.Çeşitli ayar dosyası bash kabuğunda olduğu gibi bulunmayabilir.Normalde komutun çalışması gerekir ancak sh kabuğu dosyadaki geçerli alias komutunu okumuyor..Bunun için şu bağlatıda bu tartışmayı inceleyin:
Takma adlar için lütfen bash kabuğunu tercih edin.Bu size daha fazla özellik ve avantaj sunacaktır.
Bu blog yazımızda komut türlerini,kabuk geçmişini görüntülemeyi ve takma adları oluşturmayı gördük bir sonraki blog yazımızda görüşmek üzere hoşçakalın...
Comments