Web konusu ile pek ilgili olmasa da bu konuyu belgeye dahil etmeyi uygun
      gördüm. Bir zamanlar kabuk betikleri konusu ile bayağı ilgilenmeyi
      istemiştim ama bir türlü tam olarak kendimi veremedim. Daha sonra PHP
      ile de kabuk betikleri yazılabildiğini öğrendiğim zaman çok sevinmiştim.
      Benim gibi bu konuya ilgi duyan bir okuyucum varsa belgenin bu kısmının
      faydalı bir kaynak olacağını tahmin ediyorum.
    
      Kabuk betikleri deyimi Unix veya türevi bir işletim sistemi kullanmamış
      okuyuculara biraz yabancı gelecektir. Kabuk betiklerinin yazım kuralları
      ve örneklerine geçmeden önce konuya yabancı olan okuyucular için kısa bir
      açıklama yapayım.
    
      Unix altında kullanılan kabuk betikleri çoğunlukla sh, bash ya da csh denen
      kabuk programları üzerinde çalışır. Her kabuğun kendine özgü bir programlama
      dili vardır. PHP ile kabuk betiklerinin yazarken normal PHP komutlarından
      başka bir şey kullanmıyoruz. İşin güzel kısmı da bu ;)
    
      Bir kabuk betiği MS-Dos’daki .bat dosyalarına benzetilebilir. Bu dosyalar
      kendi içerisinde yazılı olan komutları sıra ile işleten dosyalardır.
      Aşağıdaki betik bir iş yapmasa bile sıra ile komut işletimine güzel bir
      örnektir.
    
      Bu komutları Unix ya da türevi bir sistemde bir metin dosyasına yazıp
      chmod +x betik_adı komutunu verdikten sonra
      ./betik_adı komutu ile çalıştırın.
    
      Windows'da ise bir PHP kabuk betiğini c:\php\php.exe -q betik_adi
      gibi bir komut ile bir DOS penceresinden çalıştırabilirsiniz.
    
mkdir dizin
cd dizin
pwd > dosya_yolu
cd ..
      İşte bir kabuk betiği yukarıdaki komutları sanki siz sırası ile girmişsiniz
      gibi işleten dosyadır.
    
      Fakat PHP (sh, bash, csh ve perl) ile yazılan betiklerin içerisinde
      mantıksal ifadeler ve döngüler kullanmamız mümkündür. Kullandığınız bu
      döngüler sayesinde betiğinizin değişik durumlarda istediğiniz gibi
      dallanmasını sağlayabilirsiniz.
    
      Aşağıdaki betik örneklerinden ilki çalıştırıldığı dizindeki dosyaların
      uzantısını değiştirmek için kullanılıyor. Kullanımı
    
    
      şeklindedir. Bu komut bulunduğumuz dizinde uzantısı htm
      olan dosyaların uzantılarını html olarak değiştirmektedir.
    
      İkinci örneğimde ise betiğe komut satırından parametre olarak girilen
      kullanıcı adı ile ilgili bilgiler /etc/passwd
      dosyasından okunup ekrana basılmaktadır.
    
#!/usr/bin/php -q
<?
# Bu dosyayi cevir adi ile kaydedin
###############################
#   PHP UNIX Dosya Uzantisi   #
#     Degistirme Betigi       #
#      Fehmi Noyan ISI        #
###############################
if($argc != 3) {
  echo "Parametre Hatasi!\n";
  echo "Kullanim:\n";
  echo "   cevir [degisecek_uzanti] [yeni_uzanti]\n";
}
  else
{
  $dizin_ac = opendir("./");
  $i=0;
  while($dosya = readdir($dizin_ac)) {
    if (is_file($dosya) and strrpos($dosya, ".")) {
      $dosya_adi = explode(".", $dosya);
      $argnum = count($dosya_adi) - 1;
      if ($dosya_adi[$argnum] == $argv[1]) {
        $dosya_adi[$argnum] = $argv[2];
        $dosya_adi = implode(".", $dosya_adi);
        if (rename($dosya, $dosya_adi)) $i++;
      }
    }
  }
  echo "cevir: $i dosyanin uzantisi $argv[2] olarak degistirildi.\n";
}
?>
#!/usr/bin/php -q
<?php
# Bu dosyayi user adi ile kaydedin
###############################
# PHP UNIX Kullanici Sorgusu  #
#      Fehmi Noyan ISI        #
###############################
if ($argc != 2) {
  echo "Parametre Hatasi!\n\n";
  echo "Kullanim:\n";
  echo "         user [kullanici adi]\n";
} else {
  $satirlar = file("/etc/passwd");
  foreach ($satirlar as $satir) {
    $pwd_user_array = (explode(":", $satir));
    if ($pwd_user_array[0] == $argv[1]) {
      $kullanici_adi = $pwd_user_array[0];
      $isim = $pwd_user_array[4];
      $kabuk = $pwd_user_array[6];
      $dizin = $pwd_user_array[5];
    }
  }
  if ($kullanici_adi != $argv[1]) {
    echo " user: $argv[1] kullanicisi sistemde kayitli degil!\n";
  } else {
    echo " USER - Linux Kullanici Sorgusu -\n";
    echo " VER1.0\n\n";
    echo "Kullanici adi: $kullanici_adi\n";
    echo "         isim: $isim\n";
    echo "        dizin: $dizin\n";
    echo "        kabuk: $kabuk\n";
  }
}
?>
      Bu örneklerde normal PHP betiklerimizin dışında kullandığımız iki tane
      değişken var. argc ve argv[]
      değişkenleri. argc değişkeni betiğe komut satırından
      girilen parametre sayısını veren tamsayı değişkeni ve
      argv[] değişkeni ise bu parametrelerin kendilerini
      tutan dizi değişkeni. (argv[0] betiğinin kendi adıdır).
    
      Bir de iki dosyanında en başında kullandığımız
      #!/usr/bin/php -q ifadesi var. Bu ifade bu dosyada yazılı
      olan komutların sistemde kurulu olan PHP yorumlayıcısı tarafından
      yorumlanacağını anlatır.