Linux Komut Yapısı
UNIX ve benzeri işletim sitemlerinde kullanıcının komut yazmasını sağlayan, bu komutları yorumla***** gerekli işlemleri yapan programlara kabuk (shell) adı verilir. UNIX'te bir kullanıcı bir dizi kabuktan istediğini seçebilir. Kabuklar ile ilgili ayrıntılı bilgi ileride verilecektir. Kullandığınız kabuk ne olursa olsun, gerek kabuktan kaynaklanan, gerekse UNIX komutlarının hepsinin uyduğu bazı standartlardan kaynaklanan bazı geleneksel yapılar vardır. Bunları bilmeniz ilk kez duyduğunuz bir komutun kullanımını bile kolayca çıkarabilmenizin yanı sıra, bir dizi genel hatadan kaçınmanızı da sağlayacaktır.
UNIX'te (ve Linux'ta) bütün komutlar ve dosya isimlerinde büyük/küçük harf ayrımı önemlidir. Sistem komutlarının ve dosyaların çoğu küçük harfle yazılır.
Komut ve dosya adlarında kullanacağınız bazı karakterlerin gerek dosya ve dizin yapısı, gerekse kabuk ve diğer komutlar nedeniyle bazı özel anlamları vardır. Bu karakterlerden yeri geldikçe söz edilecektir. Örneğin, `/' karakteri hiçbir dosya adında bulunamaz (dosya ve dizinler için ayraç olarak kullanıldığından). `-' ile başlayan bir dosya oluşturulabilir olsa da silmeye kalktığında yeni bir UNIX kullanıcısının başına dert açabilir.
UNIX'te komutlara seçenek verirken seçenekten önce `-' karakteri kullanılır. Örneğin ls -l
UNIX komutları tersi istenmedikçe girdilerini standart girdiden (klavye) alır, çıktılarını standart çıktıya (ekran) yazar. Bu özellik ileride anlatılacak olan yönlendirme ve boru (pipe) öperatorleri ile birlikte komut satırından birçok işlemi kolayca yapmanızı sağlar.
UNIX kabukları komut satırından verilen komutu çalıştırmadan önce bir dizi karakteri yorumla***** dosya ad(lar)ına çevirirler. Bu karakterler:
* 0 dahil herhangi bir sayıda karakter yerine geçer. Örneğin rm * komutu bütün dosyaları siler, ls -l a* komutu `a' ile başlayan dosyaların listesini verir.
? tek bir karakter yerine geçer. Örneğin ?? adı iki karakterden oluşan bütün dosyalar anl***** gelir.
[] karakterleri arasında yazılan liste içindeki herhangi bir harfe dönüştürülür. Örneğin cp *[abc] /tmp komutu `a', `b' ya da `c' ile biten bütün dosyaları /tmp dizinine kopyalayacaktır. liste içinde aralarına `-' işareti ko***** aralıklar verebilirsiniz. Örneğin, [A-Z]* büyük harfle başlayan bütün dosyalar anl***** gelir. Liste içindeki `^' karakteri sonrasında belirtilen liste dışındaki bütün karakterler anl***** gelir. Örneğin *[^0-9]* adında rakam olmayan herhangi bir dosya anl***** gelecektir.