Ana içeriğe atla

Linux Notları-0 Shell ve Terminal-1

Shell (Kabuk) Nedir: Klavye yardımıyla kendisine verilen komutları, uygulaması için işletim sistemine veren bir programdır. İlk Linux gibi  Unix-like sistemlerde tek kullanıcı arayüzüydü. Sonrasında Shell gibi Command Line Interface (CLI) yanında Graphical User Interface(GUI) ler de kullanılmaya başlandı.

    Çoğu Linux sisteminde Bash(Born Again Shell) olarak adlandırılan Shell türü ise orjinal Unix Shell inin, Steve Bourne tarafından geliştirilmiş versiyonudur. Bunun yanında zaman içinde ksh, tsch, zsh gibi birçok shell türü kullanılmaya başlandı.



Bu Shell ile bilgisayara komutlar verebilmemiz için ihtiyaç duyduğumuz programın adı ise Terminal. Shell programı bunu kendisi yapmaz bu iş için bir Terminale ihtiyaç duyar. Yukarıdaki resimde kullanıcı terminali kullaranak shell den tree programını çalıştırmasını istiyor. 
    Terminal kelimesi veya terimi, komünikasyonda gönderici veya alıcı tarafında iletişim sinyalini sonlandıran(terminate) bir cihaz olarak açıklanabilir. Bizim bilgisayarla aramızdaki ilişkinin benzerliği burda. İlk zamanların bilgisayarları için The Teletype Terminal alışılmış bir terminalmiş..(https://www.youtube.com/watch?v=2XLZ4Z8LpEE) Teletype firmasına ait Teleprinter(teletypewriter, teletype veya TTY)

Teleprinter(teletypewriterteletype veya TTY) denilen cihaz, bir çok iletişim kanalı ile haberleşmeye yarayan elektromekanik bir cihaz. Bu cihazlar sonrasında bilgisayarlar için kullanıcı arayüzü olarak kullanılmış.



Yani terminal dediğimiz şey basitçe çalıştırıldığında ilk yaptığı şey bir shell programını çalıştırmak olan bir arayüz programı. Bunu görmek için pstree komutunu işleterek process ağacını görebiliriz. 

pstree -psa $$

Ufak farklılıklar olsa da şöyle bir çıktı alırsınız:


Sistemin ana proseslerinden sonra qterminal -> zsh -> pstree şeklinde devam ettiğini görebiliriz. Burda terminal türünüz qterminal den farklı, shell için zsh değilde farklı bir tür görebilirsiniz. Buradaki $$ ile ulaştığımız paramatre shell e ait iç parametrelerden.Çağırdığımız script in kendisinin Process ID(PID) değerini veriyor.
-psa ile de pstree komutuna parent prosesi göster, PID göster gibi opsiyonları vermiş oluyoruz.
pstree detay için aşağıdaki linke veya sisteminize ait ilgili man sayfasına bakabilirsiniz.

$$ detay için ve diğer parametreleri görmek için  


Sistem üzerindeki shell türlerini görmek için

cat /etc/shells

yazmanız yeter. Şu anda hangisini kullandığınızı öğrenmek içinse şu komutları deneyebilirsiniz:

echo $0

veya

ps -ef | grep $$ | grep -v grep

veya

echo $SHELL

Bu komutların detayları için man sayfalarına bakılabilir.

Sytem Console, Virtual Terminal(VT) veya Virtual Console(VC) , Terminal Emulator gibi konuları atlıyorum. Detayları için bu anahtar kelimleri kullanarak araştırma yapabilirsiniz. Sadece yukarda bahsettiğimiz tty kısaltmasına gönderme yaparak, Virtual Console ların , Unix-Like sistemlerin sistemdeki cihazlara erişiminin sıradan bir dosya gibi olmasını sağlayan yapıyı hatırlatıp, /dev/tty1, /dev/tty2 gibi temsil edildiklerini söyleyebilirim. /dev altına bakarsanız orada bunların yanında /dev/console gibi veya Virtual Console Screen, ve Virtual Console Screen With Attributes için /dev/vcs1 ve /dev/vcsa1 gibi başkalarını da görebilirsiniz.

Shell ve çokca kullanılabilecek komutlar:

Komutları incelemeden önce  4 tip Shell komutu olduğundan bahsedebiliriz.

    1. Bu komuta karşılık gelen çalıştırılabilir bir program. C,C++, python,ruby gibi dillerle veya Shell betikleri olarak yazımış herhangi bir program.

    2. Shell programının bizzat kendi içinde(built-in, yerleşik) olan komutlar.

    3. Tanımlanmış Shell fonksiyonları

    4. Takma adlar(alias)

Burda şundan da bahsedebiliriz: Bir Shell komutunu terminale girdiğimizde, bu 4 türden hangisi olduğunu ve bu komuta karşılık gelen programların veya fonskiyonların nerde olduklarını Shell programı nasıl bilir ?

Bu serinin ikinci kısmında buradan devam edelim...


Kaynaklar:

0.https://www.linuxfromscratch.org/

1.http://linuxcommand.org

2.https://docstore.mik.ua/orelly/unix/upt/ch01_02.htm

3.https://dwmkerr.com/effective-shell-part-5-understanding-the-shell

4.https://searchnetworking.techtarget.com/definition/terminal

5.https://en.wikipedia.org/wiki/Teleprinter

6.https://en.wikipedia.org/wiki/System_console

7.https://en.wikipedia.org/wiki/Virtual_console

8.http://blog.btrisk.com/2017/03/kali-linux-servis-yonetimi.html



Yorumlar

Bu blogdaki popüler yayınlar

Linux Notları-1 Boot ve Deamons

       " Booting " kelimesi ile bilgisayarın başlatılması için kullanılan alışılmış bir terim. " Bootstrapping " kelimesinin kısa formu. " Bootstrap " sözlükte başkalarının yardımı olmadan kendi kendini idame ettirmek gibi bir kaç anlamı var ama buraya en uygun olanı şu olabilir: En az kaynakla bir şey yaratma, oluşturma, başlatma yaklaşımı. Bilgisayar terimi olarak, bir programı çalıştırmak için(genelde bir işletim sistemini veya mini bir çekirdeği) önce daha küçük bir program yükleyeme süreci.     Boot süreci sonunda, kernel hafızaya yüklenir ve çalışmaya hazır hale gelir, önceliği yüksek programlar, başlangıç betikleri çalıştırılır ve sistem kullanıcılar için hazır hale getirilir. Aşağıdaki şemada bunun genel bir özetini görebilirsiniz:     Bir bilgisayar en kaba tabirle; üzerindeki işlemcinin, hafızadaki(RAM) adreslerin içindeki ikili kodu, sırayla anlamlandırıp çalıştıran bir cihaz. Tanım basit olsada bu

Linux Notları-2 Boot ve Deamons

     Önceki yazıda işlemcinin ilk çalışma anında işemcinin üreticisi tarafından belirlenmiş bir adrese gittiğini söylemiştik ve orda kalmıştık. "Peki bu adrete ne var" sorusuyla bırakmıştık. Bu adresin bir bios çipine map edildiğini biliyoruz. (Burada biosun kendi kodunu RAM üzerine kopyalaması, shadowing, bit twiddling gibi konuları atılıyorum detay için bakabilirsiniz ) Bu adreste işlemcinin çalıştıracağı ilk komut var. Şimdi bu komutu görelim ne iş yaptığına bakalım. Bunu görmenin bir kaç yolu var elbette ama ben mümkün olduğunca basit ve anlatılabilir olanı kullanacağım.     Tersine mühendislik yaptığımızda kaynak kodla karşılaştırabilmemiz için bios firmware sizin için ulaşılabilir yani açık kaynak olmalı. Ben VirtualBox için ve Q emu için kaynak kodları karşılaştıracağım. Fiziksel makineniz içinde aynı durum söz konusu ise ulaşabiliyorsanız window üzerinde Physical Memory Viewer kullanarak yazıyı takip edebilirsiniz veya IDA pro vs g

Çalıştığım Projelerle İlgili Resimler Videolar

Akıllı Bisiklet Sistemi Operatör Panelinde Canlı İstasyon Durum Ekranları Operatör İstasyon Yönetimi Sistem Operatörünün Kullanıcı Yönetimi Paneli Bütün ziyaretçilerin harita üzerinden istasyon bilgisine ulaşabilecekleri karşılama sayfası Kabaca Sistemin Genel Yapısı Tasarlanan Peron ve Kiosk Haberleşme Devreleri TÜBİTAK Lisans Destek Projesi: Fonksiyonel Yakın Kızılötesi Spektroskopisi (fNIRS) Tabanlı Bir Beyin Bilgisayar Arayüzü Tasarımı(BBA) Çizgiötesi Üye network sistemi ve e-ticaret altyapısı