Shell Nedir?

Kullanıcı bir komut girdikten sonra, terminal kullanıcının yazdıklarını kabul eder ve bunu bir kabuğa aktarır. Kabuk, bir kullanıcı tarafından girilen komutları işletim sistemi tarafından gerçekleştirilecek eylemlere çeviren komut satırı yorumlayıcısıdır. Komut sonrası çıktı üretilirse, metin terminalde görüntülenir. Komutla ilgili bir sorunla karşılaşılırsa, bir hata mesajı görüntülenir. Shell kullanılarak bütün yönetimsel işlemler gerçekleştirilebilir.

syntax

command [options] [arguments]

Kabuk üzerinde birbiri ardına yürütülen birden çok komut çalıştırılabilir. Terminal üzerinden bir dosyaya erişmek, bir program çalıştırmak isteniliyorsa tam yol adı verilmesi gerekmektedir.

Unix & Linux işletim sistemlerinde her şey bir dosyadan ibarettir, eğer kullandığınız şeyin bir dosya olmadığına eminseniz o bir process ’ tir ve başka bir ihtimal yoktur.

Bu görselin boş bir alt özelliği var; dosya ismi: 2021-03-29-16_52_41-Window.png

Linux ortamında, uzun yıllardır kullanılan birçok farklı kabuğun kullanımına izin verilir. Linux dağıtımları için en yaygın kullanılan kabuk  Bash olmakla birlikte ksh ,csh , zsh gibi farklı kabuklar da bulunmaktadır.  Bash, komut geçmişi ve satır içi düzenleme gibi birçok gelişmiş özellikler sağlar. Sisteme giriş yaparken her kullanıcı için tanımlı bir kabuk çalışır. Kabuk programı kullanıcıya bir komut satırı sunar ve komut girmesi için bekler, girilen bu komutu yorumlayıp gerekli programları çalıştırır ve sonlanmalarını bekler.

Bir terminal çalıştırdığımızda komut girmemiz dışında bir çok yararlı bilgileri de bize sunmaktadır. Komut istemi tamamen yapılandırılabilir. Dağıtımlar arasında değişebileceği gibi, çoğunlukla kullanıcı ve sistem hakkında bilgiler içermektedir.

Yukarıdaki gösterilen komut istemi aşağıdaki sarı renkle boyanmış bilgileri içerir:

Kullanıcı adı:

Bilgisayar Adı:

Mevcut Dizin: 

 ~(tilde) sembol’ü ise kullanıcının ev dizini için kısaltma olarak kullanılır. Genellikle kullanıcının ana dizini altındadır.

$ sembolü bu sisteme normal bir kullanıcı olarak giriş yaptığım anlamına gelir. Normal kullanıcılar için $ sembolü varsayılandır.

# sembolü, root hesap için istem atamasıdır. root kullanıcı olarak oturum açtıysanız, $ sembolü  # olarak değişir. 

Kabuk Çeşitleri

  • BASH: Bash , Unix ve benzeri işletim sistemleri için yazılmış komut satırı kabuğu ve bu kabuğun script dilidir. GNU Tasarısı’nın parçasıdır ve birçok GNU/Linux dağıtımında ön tanımlı kabuk olarak gelir. İsmi ” Bourne again shell ” kelimelerinin kısaltılmasıyla oluşmuştur. Bash kabuğunun bir çok popüler özellikleri de vardır ve bunlardan birkaçı aşağıda listelenmiştir;
  1. Komut dosyası oluşturma: Komutları bir dosyaya yerleştirme ve ardından dosyayı yorumlayabilir. Böylece tüm komutların yürütülmesi ile sonuçlanma yeteneği sağlar. Bu özellik aynı zamanda koşullu ifadeler ve işlevler oluşturma yeteneği gibi bazı programlama özelliklerine de sahiptir.
  2. Takma adlar: Daha uzun komutlar için kısa takma adlar oluşturma yeteneği vardır.
  3. Değişkenler: Bash kabuğu ve kullanıcı,c bilgi depolamak için kullanılır. Bu değişkenler, komutların ve özelliklerin çalışma şeklini değiştirmek ve önemli sistem bilgileri sağlamak için kullanılabilir.
  • KSH: sh kabuğunun atasıdır. UNIX V sistemlerin varsayılan kabuğudur. ksh’ın açık kaynak versiyonu pdksh paketinin bir parçası olarak çoğu rpm tabanlı sistemde orjinal olarak bulunur.
  • ZSH : sh kabuğunun klonlarından biridir. POSIX uyumludur ( bash gibi). İlk Mac OS X sistemleri zsh kabuğunu varsayılan kabuk olarak kullanmıştır.

Kabuk İşlemleri

Temel seviyede de olsa bazı bilgileri bilmemiz gerekmektedir.  Sistemde kullanılabilecek tüm kabuklar /etc/shells dosyasında tanımlanmaktadır.

cat /etc/shells 

Şimdi de, kullandığımız kabuğu görelim.

echo $SHELL 

Kullandığımız kabuğu geçici olarak değiştirmek için, tek yapmamız gereken komut satırına kabuğun adını yazmaktır.

sh 

Bunu kalıcı hale getirmek için, bir kaç yöntem vardır. En basit yolu ile, kendi kullanıcımız üzerinde işlem yapalım. Kullandığınız kabuğa göre değişiklik gösterebilir ancak, genelde yaygın olarak bash kabuğu kullanılmaktadır. Her kullanıcının ev dizininde, gizli bir dosya olarak .bashrc bulunmaktadır. Bunun üzerinde kullanıcılar ortam değişkenleri ve komutlar çalıştırabilir. Ev dizinine geçmek için cd komutunu çalıştırmamız yeterlidir. Dizini listelediğim zaman, .bashrc dosyasını görebiliyorum.

cd
ls -a 

Dosyaları düzenlemek için, bir editör ile açmamız gerekmektedir. Eğer yeni bir kullanıcıysanız nano editörü kullanabilirsiniz. Dosya içeriğini açtıktan sonra, boş bir yere kullanmak istediğim kabuğu yazıyorum.

vi .bashrc 

Dosyayı kayıt edip, çıkalım.

:wq!

İşlemin geçerli olması için iki seçenek vardır. Sistemden çıkmak ve tekrar oturum açmak. Yada dosya içeriğini tekrar okutmamız gerekir. Bunun için source komutunu kullanmamız yeterlidir.

source .bashrc 

Eski haline almak için, terminali kapatmadan exit ile tekrar bash kabuğuna dönüp, eklediğiniz kabuğu silmeniz ve dosyanın içeriğini tekrar okutmanız yeterlidir.

Komutlar (Commands)

syntax

Bir komutun tipik biçimi aşağıdaki gibidir.

command [options] [arguments]

Bir komutu yürütmek için ilk adım, komutun adını yazmaktır. Komutu veya betiği (script) çalıştırabilmek için programa ait dosyanın çalıştırma yetkisinin olması gerekmektedir. Bir komut eğer çalışma yolunda (PATH) ise herhangi bir dizinden çalıştırılabilir. Sistem komutları çalışma PATH’ine yerleştirildiği için tam yolunu vermeden çalıştırılabilir. Ancak kendi programlarımız veya scriptler genelde standart sistem PATH’inde olmadığı için tam yolu verilerek çalıştırılmalıdır.
Hemen bir komut çalıştıralım ve sonuçları görelim. Arkadaşlar genelde ilk öğrendiğimizde komut çıktılarına odaklanıyoruz. Bunlara çok takılmayalım, komutların nasıl biçimlendirileceğine ve çalıştırılmasına odaklanalım.

NOT: “ls” komutu, kendi başına, geçerli çalışma dizininde bulunan dosyaları ve dizinleri listeler. ls komutu sistemin çalışma yolunda olduğundan her yerden çalıştırılabilmektedir. İlerleye süreçlerde daha detaylı komutlara ele alacağız.

ls yazıp enter tuşuna basıyorum.

ls 

Birçok komut, başka girdi olmaksızın kendi başına kullanılabilir. Bazı komutların düzgün çalışması için ek girdi gerekir. Bu ek girdi iki biçimde gelir: seçenekler ve bağımsız değişkenler .

Seçenekler, bir komutun temel davranışını değiştirmek için kullanılırken, bağımsız değişkenler ek bilgi sağlamak için kullanılır (dosya adı veya kullanıcı adı gibi). Her seçenek ve bağımsız değişken normalde bir boşlukla ayrılır, ancak seçenekler genellikle birleştirilebilir.

NOT: Linux’un büyük / küçük harfe duyarlı olduğunu unutmayın. Komutlar, seçenekler, bağımsız değişkenler ve dosya adları tam olarak gösterildiği gibi girilmelidir.

Argümanlar (Arguments)

syntax

command [options] [arguments]

Komutun üzerinde hareket edeceği bir şeyi belirtmek için bir argüman kullanılabilir. Eğer ls komut bağımsız değişken olarak bir dizin ismini verilir, o dizinin içeriğini listeler. Aşağıdaki örnekte, ls /etc/cockpit dizin bir bağımsız değişken olarak kullanılmıştır. Ortaya çıkan çıktı, bu dizinde bulunan dosya ve dizinleri listelemektedir. Dizinleri Windows ortamındaki klasörler olarak düşünebiliriz.

ls komutu  aynı zamanda birden fazla bağımsız değişkenleri kabul eder. Her iki içeriği listelemek için ls /etc/cockpit/ ve /home/ kullanalım.

Seçenekler (Options)

syntax

command [options] [arguments]

Seçenekler, bir komutun davranış şeklini genişletmek veya değiştirmek için komutlarla birlikte kullanılabilir. Örneğin  ls -l komut seçeneğinin kullanılması, izinler, dosyanın boyutu ve diğer bilgiler gibi listelenen dosyalar hakkında ek bilgiler sağlayan bir liste çıktısı vermektedir.

ls -l 

Varsayılan olarak sonuçlar alfabetik sırada yazdırlır. Komuta seçenek eklemeden yazarsak alfabetik sıraya göre alırız veya -r(reverse)-(ters) seçeneği ekleyerek sonuçları ters alfabetik sırada yazdırabiliriz. Aşağıdaki görseli inceleyip uygulayalım.

ls -r 

Çoğu durumda, seçenekler diğer seçenekler ile birlikte kullanılabilir. Ayrı seçenekler olarak -l, -r veya kombine olarak -lr gibi. Bu iki seçeneğin kombinasyonu, ters alfabetik sırayla uzun bir liste çıkmasını sağlar. Kombine olarak kullanmanızı öneriyorum. Tercih sizin ?

Çoğu durumda birleşik seçeneklerin sırası önemli değildir. Tüm bu örneklerin çıktısı aynı olacaktır.
ls -l -r
ls -rl
ls -lr

Varsayılan -l olarak, ls komut seçeneği dosya boyutlarını bayt cinsinden görüntüler. Eğer -h seçeneğini eklersek dosya boyutları anlayabileceğimiz formatta gözükmektedir.

Seçenekler genellikle tek harflerdir; ancak bazen bunlar kelime veya kelime öbeğidir. Tipik olarak, eski komutlar tek harf kullanırken, daha yeni komutlar seçenekler için tam sözcükler kullanır. Tek harfli seçeneklerden önce "-h" seçenek gibi tek bir çizgi karakteri gelir . Tam sözcük seçeneklerinden önce iki kısa çizgi --karakteri gelir. “-h” eşdeğer bir tam kelime formatına sahiptir; ” –human-readable

Blog'a Dön