26 Nisan 2011 Salı

Shell Script (sh) calistirma problemi

Merhabalar,

Bugün shell script çalıştırırken karşılaştığım bir hatanın çözümünü sizlerle paylaşacağım. Ama öncesinde shell script nedir kısmına ufakça değinmek istiyorum.

Hepimizin bildiği gibi unix 4 temel bileşenden oluşur. Bunlar

  • Kernel
  • Shell
  • Command ve
  • File System 'dır.
Kernel, işletim sisteminin çekirdeğini oluşturan program olarak tanımlanabilir. Bilgisayarın kaynaklarını yöneten asıl merkezdir ve kullanıcıyla doğrudan bir iletişimi yoktur.

Shell (kabuk), kullanıcıdan aldığı komutları işletip Kernel'a ileten programdır. Kullanıcı ile Kernel arasında tercümanlık eder de denilebilir.

Command, bilgisayardaki çalıştırmak istediğimiz programlara verilen isimler denilebilir. Unix bu programları birleştirerek tool ismini verdiğimiz paketler oluşturarak kullanımımıza açar. Biz ise bu toolları shell üzerinden çağırarak uzun uzun programlar yazmaya gerek kalmadan basit işlerimizi hızlıca halledebiliriz. Hatta iyimser olmayalım, gayet karmaşık işlemleri de kolayca bitirebiliriz :)

İşte shell üzerisinde çalıştıracağımız komutları .sh uzantısını verdiğimiz shell script dosyalarında yazarız. Bu kodlarımız tüm kabuk dillerindeki gibi derlenmeye gerek kalmaksızın doğrudan çalıştırılabilir.

Bazı zamanlar ise unix olmayan bir makinada çalışır SSH (Secure Shell) kanallarından unix makinaya bağlanmamız gerekir. Genellikle scriptlerimizi lokalde yazar, FTP yardımıyla uzak makinaya gönderir ve SSH kanalından shellde komutlarımızı çalıştırırız.

Bu senaryoda dikkat edilmesi gereken husus şu. Örneğin ben Windows işletim sistemli bir makinede çalışıyorum. Ve dosyamı oluşturduktan sonra Unix makineye dosyamı gönderiyorum. Scriptimi çalıştırınca bir de görüyorum ki çalışmıyor, hatalı çalışıyor. Yani birşeyler istediğim gibi gitmiyor.

Sebep ise şu, dosya yapıları. Farklı işletim sistemleri dosyalarda farklı kaçış karakterleri kullanıyor. Örneğin Windows alt satıra geçme komutu için 'x' karakterini kullanırken Unix'te bu böyle değil. Dolayısıyla Unix kendisinin tanımlayamadığı bir karakteri görünce ne yapacağını bilemiyor.

Çözüm için notepad++ tarzı programlarla bu kaçış karakterlerini düzeltmemiz mümkün. Veya Ultra Edit tarzı bir programla hem metin editörlüğünü hem de FTP programını aynı anda kullanabilirsiniz. Böylece dosyayı Unix makinede yaratıp değişiklikleri sürekli o dosya üzerinde yapabilirsiniz. 

Herkese bol kodlu günler

2 yorum:

  1. slm bu shell script kodunu nereye yazıp çalıştrablrm .txt olurmu

    YanıtlaSil
  2. selam,

    genellikle uzantısını .sh şeklinde kullanırız. kodu çağırmak için konsoldan dosyanın olduğu dizine gidip "sh dosyaIsmi.sh" şeklinde bir çağırım yapabilirsin. ./dosyaIsmi.sh da kullanabilirsin, aslında çalıştığın ortama bağlı biraz da ;)

    YanıtlaSil