Komut satırı kabuğu, işletim sisteminiz için metin tabanlı bir kullanıcı arabirimidir. Sistem hizmetlerinin ve kaynaklarının grafik gösterimini kullanan bir GUI kabuğundan farklı olarak, komut satırı kabuğu yalnızca metin kullanır. Sizinle işletim sistemi arasındaki temel arabirimdir ve birçok durumda size sistem süreçleri üzerinde daha doğrudan kontrol sunar.
Shell ne için kullanılır?
İşletim sisteminizle iletişim kurmaya gelince, bir GUI ile yapabileceğiniz her şey komut satırından yapılabilir. Örneğin, her zaman yapmanız gereken bir şeyi alalım: dosyaları dosya sisteminizde taşıyın. Bir GUI kullanarak, dosyalarınızı temsil eden simgeleri seçebilir, bunları başka bir klasöre sürükleyebilir ve taşımak için oraya bırakabilirsiniz.

Ancak, komut satırı kullanılarak, bu işlem tek bir komut kullanılarak gerçekleştirilebilir:

Bir kez alıştıktan sonra komut satırı, sisteminizi bir GUI'den daha fazla verimlilik ve hassasiyetle kontrol etmenizi sağlar.
Neden "Shell" deniyor?
Kullanıcı arayüzüne "kabuk" denir, çünkü sizi işletim sisteminin en iç kısımlarından çekirdeğe ayıran dış katmandır. Teknik olarak, işletim sisteminizin GUI'si aynı zamanda "kabuk" dür, ancak komut satırı genellikle rasgele "kabuk" olarak adlandırılır.
Komut Satırı Kabuğuna nasıl girebilirim?
Komut satırı kabuğuna erişmenin en yaygın yolu bir terminal emülatörü kullanmaktır.
Bir Linux dağıtımı kullanıyorsanız, programları kendi pencerelerinde çalıştırmanıza ve fareyi kullanarak onlarla etkileşime geçmenize izin veren X Pencere Sistemine (veya "X") önyükleme yapabilir. X'te, bir terminal emülatörü başlatmanın farklı yolları vardır, ancak en yaygın olanı:
- Çoğu Linux dağıtımı, "Başlat Menüsü" olan Microsoft Windows'a benzer bir masaüstü ortamı kullanır. Bu menüden, terminal uygulamanız genellikle "Aksesuarlar" altında bulunur. Örneğin, Lubuntu önceden kurulmuş LXTerminal terminal emülatörü ile birlikte gelir ve kısayol Aksesuarlar menüsünde bulunur.
Terminal menü öğesini seçmek, terminal emülatörünü başlatır ve bir komut satırına yerleştirir.
- Farklı Linux sürümleri, her biri biraz farklı bir arayüze sahip farklı türlerde pencere yöneticileri kullanır. Birçok pencere yöneticisinde, masaüstünü sağ tıklatmak bir terminal seçeneği içeren bir menü gösterir. Örneğin, Crunchbang Linux'ta sağ tıklama menüsü bir "Terminal" seçeneğine sahiptir. Aşağıda masaüstünde herhangi bir yere sağ tıkladıktan sonra bu menünün nasıl göründüğü gösterilmektedir.
Burada, Aksesuarlar menüsünde ayrıca terminali çalıştırmak için bir seçenek olacaktır.
- Linux'un birçok sürümünde, Süper Tuş ve " T " tuşlarına aynı anda basmak, bir terminal başlatmak için varsayılan kısayol tuşudur. (Süper Anahtar, genellikle Windows tuşu olarak da bilinen boşluk çubuğunun solundaki ilk anahtardır).
Terminal emülatörünüzü nasıl başlatacağınızı bulamıyorsanız, işletim sisteminizin belgelerine bakın ve "terminal" i arayın.
Komut İstemi
Terminal emülatörünü başlattığınızda, size bir komut istemi sunulur.

Not: Bu örneklerin tümü, Linux'taki varsayılan komut satırı kabuğu olan Bourne-Again Shell ( bash ) kullanılarak gerçekleştirilir.
Bu komut istemine yakından bakalım. İstem, istediğiniz herhangi bir şey olarak yapılandırılabilir, ancak varsayılan olarak, burada gördüğümüze benziyor ve bize bir komut yazmadan önce bize yararlı bilgiler sağlıyor.
Özellikle, bize kim olduğumuzu (kullanıcı adı) ve nerede olduğumuzu (hangi sistemi kullandığımızı ve çalışma dizinimizi) söyler. İstemin tek tek kısımlarının anlamı:
Adınız | Kullanıcı adınızı. |
@ | Adresindeki bir at, kullanıcı adını ve ana bilgisayar adını ayırır. |
ev sahibi | Sistem ana bilgisayar adı. |
: | İki nokta, ana bilgisayar adını ve çalışma dizinini ayıran karakterdir. |
~ | Mevcut ("çalışıyor") dizinimiz. Tilde (" ~ "), giriş dizinimizi gösteren özel bir karakterdir. Bir kabuk oturumunu başlattığınızda, varsayılan olarak çalışmaya başladığınız dizin budur. |
$ | Süper kullanıcı ayrıcalıklarına sahip olmadığımızı gösteren özel bir karakter. Root olarak giriş yapmışsanız (superuser), bu karakter # olarak değişir. |
Komutları girme
İlk komutumuzu yazalım. Ana dizindeki dosyaları listeleyerek başlamalıyız. Tüm bu dosyaları görmenin en temel yolu ls komutunu kullanmak; komut istemine ls yazın ve enter tuşuna basın.

Yukarıda gösterildiği gibi, ls komutu dizinin içeriğini listeler ve bizi başka bir komut istemine yerleştirir.
Not: Unix ve Linux'taki tüm komutlar ve dosya adları büyük / küçük harf duyarlıdır. Örneğin, ls komutu, yukarıda olduğu gibi küçük harflerle yazılmalıdır.
Dizin içeriğinin daha ayrıntılı bir listesi için, anahtar olarak da bilinen komut satırı seçeneklerini belirleyebiliriz. Bunlar, çalışma şeklini değiştiren komuta ek argümanlardır. Burada, listemizden daha fazla bilgi almak için -l (uzun liste biçimini kullan) seçeneğini kullanacağız.

Yukarıda gösterildiği gibi, ls -l komutu bize ana dizininizin içeriği hakkında daha fazla bilgi sağlar. Şu anda, dikkat etmemiz gereken en önemli bilgi, girişlerin ilk harfinin d olduğu, yani bu dizin içeriğinin her birinin bir dizin olduğu anlamına geliyor.
Başka bir şey yapmadan önce, çıktının ürettiği karmaşayı önceki komutlarımızdan kaldırmak için ekranı temizleyelim. Yeni bir komut isteminde clear yazarak clear komutunu kullanın ve Enter tuşuna basın.

Enter tuşuna bastıktan sonra, ekran sizi temizler ve terminal ekranınızın en üstünde yeni bir komut istemine yerleştirir.

Dizini değiştirme
Cd ("change directory") komutunu kullanarak belgeler klasörümüze geçelim. Geçerli dizini değiştirmek için, " cd " ve sonra bir boşluk, sonra değiştirmek istediğiniz dizinin adını yazıp enter tuşuna basın.
Cd komutu, belirttiğiniz herhangi bir dizinin adının geçerli dizininize göre olduğunu varsayar. Bu nedenle, şu anki dizinde yer alan belgeler dizinine geçmek için " cd belgeler " yazın.

Komut istemi şimdi yeni çalışma dizinini yansıtıyor: ~ / belgeler, tam yol adına eşdeğer: / home / adınız / belgeler . Hangi kullanıcı olarak oturum açtıysanız, " ~ " her zaman ana dizininizi temsil eder. Örnekte, yeni çalışma dizini ayrıca terminal penceremizin başlık çubuğunda da görülmektedir.
Not: MS-DOS ve Microsoft Windows'dan farklı olarak, Linux'taki hiyerarşik dizin adları ters eğik çizgi (" \ ") yerine eğik çizgi (" / ") ile ayrılır. Bu sembol değişikliği, bu çeşitli işletim sistemleri arasındaki temel farktır.
İstediğiniz zaman pwd ("print working directory") komutunu kullanarak geçerli dizini doğrulayabilirsiniz.

Komut, geçerli dizinin adını terminale basar, bu durumda " / home / yourname / documents ". Yine, " ~ / belgeler " ile " ~ ", / home / adınız olan ev dizini temsil eder. Yani eğer ev dizinimizdeysek, " cd dökümanları ", "" cd / home / adınız / dökümanlar "veya" cd ~ / dökümanlar "yazmak hepimizi aynı dizine yerleştirir.
Şimdi bir dizini yukarı taşıyalım, ana dizine geri dönelim. Özel dizin adı " .. " (çift nokta) "bir dizin yukarı" anlamına gelir.

Şimdi ana dizine geri döndük.
Not: MS-DOS'a daha aşina iseniz, cd ve iki periyot arasında boşluk olması gerektiğini unutmayın.
Dosyaları taşıma
Şimdi dosyaları nasıl taşıyacağımızı öğrenelim.
Diyelim ki bir web tarayıcısıyla iki resim indirdik ve indirme klasörümüze kaydedildi. İçeri girip bir göz atalım. İlk önce, dizini indirilen dizine değiştiriyoruz.

Sonra dizindeki dosyaları ls komutu ile listeleyin.

Burada iki JPEG dosyası görüyoruz. Onları indirme klasöründen çıkaralım ve görüntüler klasörü gibi daha uygun bir yere koyalım. Bu dosyaları taşımak için mv ("move") komutunu kullanacağız.
Mv komutu aşağıdaki genel formu alır.
mv [ SEÇENEKLER ...] KAYNAK HEDEFİ
SEÇENEKLER köşeli parantez içine alınır, çünkü komutu tamamlamak için herhangi bir seçenek belirtmeniz gerekmez. KAYNAK ve HEDEF argümanlarının her ikisi de gereklidir.
SOURCE, taşımak istediğiniz dosyanın veya dosyaların adıdır. HEDEF onları taşımak istediğiniz yerdir. HEDEF, bir dizin adıysa, dosya veya dosyalar bu dizine taşınır.
Şu anda / home / adınız / indirilen dizinin içindeyiz ve dosyaları / home / adınız / resimlerin içine taşımak istiyoruz. HEDEFİMİZİ tam yol adını (" / ana sayfa / adınız / resimler ") kullanarak veya geçerli dizine göre bir yol adı (" ../images ") kullanarak veya ana dizininizin kısaltması olarak bir tilde kullanarak belirtebiliriz ( " ~ / görüntüler "). Bunların hepsi eşdeğerdir ve aynı sonucu verir. HEDEFİMİZ için göreceli yol adını kullanalım : ../images .
Öyleyse, SOURCE'umuzu nasıl belirleyeceğiz?
Her iki dosyayı da taşımak istiyoruz ve dizindeki tek dosya onlar. Bu yüzden, onları belirtmenin en basit yolu, mv'ye "bu dizindeki tüm dosyaları ../images içine taşı " dır . Bunu bir joker karakter kullanarak yapabiliriz.
Joker karakter, birden fazla dosya adını (veya dosya adının birden fazla bölümünü ) temsil edebilen özel bir karakterdir. Burada, yıldız işareti (" * ") kullanacağız. Eğer dosya ismimizin tamamı olarak * kullanırsak, kabuk komutumuzu çalışma dizinimizdeki her dosyaya uygular.
Bu nedenle, komutumuz şu şekilde okunacaktır: " mv * ../images ". Şimdi girelim.

Hiçbir şey olmamış gibi görünüyor, ama bu kabuğun bize hiçbir hata olmadığını söyleme şekli. Bir sorun olsaydı, bir hata mesajı veya bir çeşit uyarı görüntülerdi.
Dosyaların taşındığını doğrulayalım. Başka bir dizinin içeriğini ls çalıştırarak ve bir yol adı belirterek listeleyebiliriz. Bu durumda yolumuz " ../images " şeklindedir .

Görüntüler, zaten var olan başka bir dizinin yanında (" duvar kağıtları ") da var. Resimlerimizi daha iyi organize etmek ve ana resimler dizinini karışıklıktan korumak için kendimize ait yeni bir dizin oluşturmalıyız. Şimdi bunu yapalım.
Dizin oluşturma
Şimdi iki penguen resmimizin bulunduğu resimler dizinine geçelim.

Şimdi penguen görüntülerimiz için yeni bir dizin yapalım. Mkdir komutuyla yeni dizinler oluşturuluyor .
Mkdir komutunun en basit şekli tek bir argüman vermektir: yeni dizinin adı. Mevcut dizinimizde yeni bir dizin oluşturmak istiyoruz, bu yüzden mkdir'e tam bir yol adı vermek zorunda değiliz, dizinin kendisinin adı. Yeni dizin penguen-pix'i çağıralım.
Bu yüzden gireceğimiz komut yeni bir dizin oluşturmak için " mkdir penguin-pix " dır.

Şimdi dizin içeriğini listeleyerek orada olduğunu doğrulayalım.

Not: Dizin içeriğini listelediğimizde, dosya ve dizin adlarının, farklı dosya ve dizinleri tanımlamanıza yardımcı olacak farklı renkler olduğunu görebilirsiniz. Renk vurgulama çoğu kabukta ortak olmasına rağmen, tüm kabuklar bunu varsayılan olarak yapmaz.
İsimlerin rengine göre söyleyemezsek, bu dosyaların hangisinin dizin olduğunu her zaman -s (uzun liste) seçeneğiyle ls'yi çağırarak kontrol edebiliriz.

Ek bilgi aşağıdakileri içerir.
- İzinler - dosyaya kimin erişimi var ve ne tür bir erişim.
- Sahiplik - dosyanın sahibi kimdir.
- Yazarlık - dosyayı kim oluşturdu.
- Dosya boyutu - dosyanın bayt olarak boyutu.
- mtime - dosyanın en son değiştirildiği tarih ve saat.
Penguen-pix ve duvar kâğıtları satırlarındaki ilk harf, bunların dizin olduğunu belirten bir " d " dir. Dosya listeleri hakkında daha fazla bilgi için chmod komutunun belgelerine bakın.
Artık resimlerimizi yeni dizine taşıyabiliriz. Mv'ye hangi dosyaların taşınacağını söylemek için tekrar bir joker karakter kullanabiliriz, ancak bu kez dizinleri değil, yalnızca resim dosyalarını taşımayı bildiğinden emin olalım. Her iki resim dosyası da JPEG uzantılı .jpg ile bittiğinden, " * .jpg " dosya adını belirleyebiliriz: bu, "taşımak istediğim dosyaların geçerli dizinde .jpg ile biten herhangi bir dosya" olduğunu gösterir. Böylece emrimiz şöyle görünecek: " mv * .jpg penguin-pix ."

Hata mesajı verilmedi, yani komut başarıyla tamamlandı. Penguin-pix içeriğini listeleyerek dosyaların taşındığını doğrulayalım.

Dosyaları kaldırma
İki penguen resmimiz var, ancak belki de sadece gerçek penguin.jpg dosyasına ihtiyacımız olduğuna karar verdik ve artık smokin-penguen.jpg dosyasına ihtiyacımız yok. Bu dosyayı rm ("remove") komutunu kullanarak silebiliriz.
Silmek için dosya adını rm olarak vermemiz gerekiyor. Şu anda resimler dizinindeyiz, ancak resimlerimiz artık penguen-pix alt dizininde. Çalışma dizinimizi penguin-pix olarak değiştirebilir ve sonra komutu çalıştırabiliriz, ancak bu yalnızca fazladan bir iştir, dizini yolun bir parçası olarak kullanarak bu adımı atlayabiliriz.
Komutumuz şöyle görünecek: " rm penguin-pix / tux-the-penguin.jpg ."

Bir kez daha, kabuk komutlarımızı herhangi bir geri bildirim vermeden uygular. Komut başarıyla yürütüldü, böylece kabuk bizi komut istemine geri döndürdü, başka bir komut için hazır olduğunu bize bildirdi.
Uyarı: Bir dosyayı çöp kutusuna ya da Microsoft Windows geri dönüşüm kutusuna sürüklemekten farklı olarak, rm ile dosya silme işlemini geri almanın bir yolu yoktur. Dosyalarınızı dikkatlice kaldırın! Bir kez gittikten sonra, geri almak hemen hemen imkansızdır.
Dosyanın gerçekten gittiğini doğrulayalım.

Dizinleri kaldırmak
Bu dosyalar için harika, ama ya dizinler? Varsayılan olarak, rm dizinleri değil, yalnızca dosyaları kaldırır.
Rmdir ("remove directory") komutu, boş olduğunu varsayarak bir dizini siler. " Mkdir test-directory " komutunu kullanarak yeni, boş bir dizin oluşturarak test edelim.

" Ls -l " komutu ile orada olduğunu doğrulayalım.

Şimdi " rmdir test-directory " komutunu kullanarak yeni dizinimizi kaldırabilir ve " ls -l " komutunu tekrar çalıştırarak çalışıp çalışmadığını kontrol edebiliriz.

Evet, gitti.
Ancak, " penguin-pix " rmdir'i denemeye çalışsak ne olur?

Boş değil çünkü bu dizini rmdir yapamayız.
Penguin-pix'i ve içindeki her şeyi kaldırmak istediğinizden eminseniz (tüm dosyalar ve içerebileceği tüm dizinler dahil), rm komutunu -r seçeneğiyle kullanabilirsiniz.
Normalde, rm bir dizinde çalışmaz. Bununla birlikte, -r seçeneğiyle çağrılırsa, rm bir dizini yinelemeli olarak kaldırır; bu, dizini de içeren her şeyi silerek dizine ve herhangi bir alt dizine geçer. Yani, eğer " rm -r penguin-pix " komutunu çalıştırırsak, dizini ve içindeki dosyayı kaldırır. İçinde herhangi bir dizin varsa, onlar da silinirdi.

Uyarı! Bir kez daha, bu komut için geri alma yok. Bir dizini rm -r, bu dizin ve içindeki her şey sonsuza dek silinir! Çoğu Linux komutunda olduğu gibi, rm çok güçlüdür ve dikkatli kullanılmalıdır.
Bir dosyayı kopyalamak için cp komutunu kullanın.
cp KAYNAK HEDEFİ
SOURCE, kopyalamak istediğiniz dosyanın adı ve HEDEF, yeni dosyanın hedefini belirleyen dosya adıdır. Hedef, yeni bir dosya adı veya bir kopyanın bulunmasını istediğiniz dizinin adı olabilir.
Diyelim ki, orig.txt adındaki belgeler klasörümüzde bir metin dosyası var ve bunun copy.txt adında bir kopyasını yapmak istiyoruz. Kullanmamız gereken komut " cp orig.txt copy.txt ."

Öte yandan, cp komutunun hedefi olarak bir dizin belirtirsek, hedef dizindeki orijinalle aynı adı taşıyan bir kopya oluşturur. Bir sonraki örnekte altı şey yapıyoruz.
- Çalışma dizininin içeriğini listeleyin.
- Kopya adı verilen yeni bir dizin oluşturun.
- Şimdi kopya dizinini içeren çalışma dizininin içeriğini listeleyin.
- Kopya dizininin içeriğini listeleyin (yok. Boş.)
- Copy.txt dosyasını kopyalar dizinine kopyalayın.
- Şimdi copy.txt dosyasının bir kopyasını içeren kopya dizini içeriğini listeleyin .

Bir dosyayı yeniden adlandırma
Mv komutu bir dosyanın adını değiştirmek için de kullanılabilir. Örneğin, " mv orig.txt original.txt " komutu orig.txt dosyasını original.txt olarak yeniden adlandırır.

Bir dizini yeniden adlandırma
Dizinleri yeniden adlandırmak, mv komutuyla dosyaları yeniden adlandırmak gibi çalışır. Burada, " kopya " adında bir dizin oluşturuyoruz, ancak " kopya kopya " komutunu kullanarak onu " kopya " olarak yeniden adlandırıyoruz.

Copy dizini herhangi bir dosya veya dizini içeriyorsa, bunlar değişmez. Değişecek tek şey, onları içeren dizinin adıdır.
Otomatik tamamlama
Çoğu Linux komut satırı kabuğu, Tab tuşuna basarsanız yazmaya başladığınız sözcüğü otomatik olarak tamamlar. Otomatik tamamlama, özellikle uzun dosya adlarıyla zaman kazanmanıza yardımcı olabilir. Örneğin, belgeler klasörünüzde üç dosya olduğunu varsayalım : penguin-diving.jpg, penguin.jpg ve penguins.jpg .

Bir komut yazıp " p " yazıp Sekme tuşuna basarsanız, kabuk sizin için "penguen" kelimesini tamamlar.

Orada durur çünkü tüm dosyalar penguen kelimesiyle başlar, fakat bundan sonra hangi dosyayı belirtmek istediğinizden emin değildir.
Daha önce yazdıklarınız için birden fazla otomatik tamamlama eşleşmesinin olduğu bir durumdaysanız, Tab tuşuna iki kez basmak, kabuğun tüm olası eşleşmeleri listelemesini ister. Yani yukarıdaki durumda p ve Tab yazdığınız ve kabuk sizin için pengueni otomatik olarak tamamlar . Sekmeye iki kez daha basmak, size tüm olası seçenekleri verir ve komutunuzu bıraktığınız yere kadar dolu olacak şekilde isteminize geri koyun.

Otomatik tamamlama ayrıca yol adlarını ve komut adlarını tamamlamak için de çalışır.
Kabuktan çıkılıyor
Exit komutunun yazılması komut kabuğundan çıkar ve ya terminal penceresini kapatır ya da terminal penceresini elle kapatılacak şekilde hazırlar.