'Kabuk' terimi iyi adlandırılmıştır. Kelimenin tam anlamıyla kullanıcının bilgisayarla etkileşime girmesini sağlayan O / S'nin etrafında bir kabuktur. Başlangıçta tasarlandığında, grafiksel kullanıcı arayüzleri varsa çok az şey vardı (penceresiz :(). Her şey komut satırında yapıldı. Ama komut satırının bile yaşamak için bir yere ihtiyacı vardı. .
Basit bir ifadeyle, komut satırının yararlı olması için arayabileceği talimatlara ihtiyacı vardı. Böylece komut satırının kullanması için kabuk içinde programlar çalıştırıldı. Programlar kendi paketlerinde sıkı bir şekilde gruplandırılmış ve birlikte çalışması amaçlanmıştır. Bunlar "ls" ve "grep", "ps", "sed" vb. Programları içerir. Ayrıca, ">" ve "<" ve kanallar ("|") gibi dosya yönlendirme komutlarını da içerirler. Daha da önemlisi, koşullu işlemler gibi programlama yapılarını da içerir (eğer öyleyse, başka, döngüler için, döngüler için, bir deyim çalıştırdığınızda döndürülen durumu kontrol etme yolları (örneğin "ls" çalıştırırsanız bir şey buldunuz mu?), Şey bunun gibi). Bunlar daha karmaşık komut satırı (kabuk) komut dosyalarının temelleridir,
Birisi 'Bash Shell' terimini kullandığında, O / S kabuğunda çalışan 'Bash' adlı bir komut satırı yorumlayıcısından bahsediyorlar. Bunun 'Bash Shell Interpreter' için kısa olduğunu düşünebilirsiniz. Bourne gibi başka tercümanlar da var (Bash 'yeni ve geliştirilmiş bir Bourne Kabuğu ve Bourne Again Shell'in kısaltmasıdır). Ayrıca C-Shell, K-Shell (karmaşık kabuk komut dosyaları yazan birçok kişi tarafından tercih edilir) ve diğer GNU varyantları da vardır. Yıllar içinde kabuk olarak kullandığınız belirli komut satırı yorumlayıcısına atıf yapmak alışılmış hale gelmiştir, çünkü biri diğeri olmadan kullanılamaz. Ama gerçek şu ki farklılar.
Neden gerçek kabuk olarak değil de komut satırı yorumlayıcıları olarak biliniyorlar: Kabukta yaşıyorlar ve tüm komutları bir programda çalışıyormuş gibi yorumluyorlar. Ve kabuk, doğru standartları karşıladığı sürece hangi tercümanı çalıştırdığınızı umursamıyor.
Ve neden tercüman olarak adlandırıldıklarına gelince, bunun nedeni gerçekten tercüman olmalarıdır. Bir komut dosyasını açıkça çalıştırmasanız bile (ve bir komut dosyası yalnızca oluşturduğunuz komutların bir metin dosyasıdır, böylece aynı komutları tekrar yazmanıza gerek kalmadan tekrar tekrar çalıştırabilirsiniz). Örneğin, mütevazi 'ls' komutunu ele alalım. Çalıştırdığınızda, dosyaların bir listesini döndürür. Ancak nasıl çalıştığı sorunuz için daha önemlidir: Sadece basit bir kapalı komut olarak görünen şeyi çalıştırsanız bile, aslında komut satırı yorumlayıcısı bağlamında çalışır. Yani, sanki daha büyük bir programın bir ifadesiymiş gibi çalışır. Gerçekte bir kabuk komut dosyası dosyasında bulunmadan bir kabuk komut dosyası komut dosyasındaymış gibi çalışır. Anonim bir kabuk komut dosyası olduğu gibi.
Komut satırında çalıştırdığınız herhangi bir şeyin ortak bir özelliği vardır (ister 'ls' gibi tek bir komut veya komutlar ve yineleyiciler ve koşullu ifadelerle dolu bir komut dosyası olsun): hepsi komut satırı yorumlayıcısı tarafından işlenir; Bash, C-Shell, K-Shell (AIX btw'de varsayılan) olsun.
Ne demek istediğimi görmek için bir dizin 'test' yapın:
mkdir test
Girin ve aşağıdaki komutları çalıştırın
grep hello *
'Böyle bir dosya veya dizin yok' gibi bir tür yanıt alacaksınız. Şimdi komutu girin
echo $?
($? diyor, şifreli bilgisayar konuşmasında ne bulduğunu söyle.) Bir sayı döndürdüğünü görmelisin (olması gerekir) '2'. Bu, "böyle bir dosya veya dizin yok" anlamına gelen grep'in dönüş kodudur. Şimdi aşağıdakileri çalıştırın:
echo hello > hello.txt
grep hello *
echo $?
İlk grep komutundan döndürülen 'hello.txt' dosyasını göreceksiniz ve şimdi 'echo $?' '0' sayısını döndürmek, aslında bir şey bulduğunu gösterir.
Bu tek seferlik komutlar çalıştırılsa bile, komut satırı yorumlayıcısı daha büyük bir programın parçasıymış gibi davranır ve dönüş değerlerini izler. Bu yüzden grep komutunun sonunda * unutursanız, geri dönmez. İfadenin eksik olduğunu ve daha fazla girdi beklediğini biliyor. Sonuçta, komut satırında yazmak ve çalıştırmak için tamamen yasal olan bazı döngülerin sonuçlarını grep etmesini isteyebilirsiniz.
Alt satır, kabuk kabuğudur ve yorumlayıcı (kullandığınız kişinin adı ne olursa olsun, 'Bash', k-shell, vb.) Farklıdır. Ancak genellikle birbirlerinin yerine kullanılırlar, çünkü herhangi bir anda tamamen birbirine bağlanırlar.