← man/dev_and_programming
tclsh — man tclsh — 80×24
ugur@toprak:~/man/dev_and_programming$man tclsh
Bölüm 1 Geliştirme & Programlama

tclsh

Tcl yorumlayıcısını (interpreter) içeren basit kabuk (shell)


Kullanım

       tclsh ?-encoding name? ?fileName arg arg ...?
____________________________________________________________________________________________________

Açıklama

Tclsh, kabuk benzeri bir uygulamadır; standart girdisinden veya bir dosyadan Tcl komutlarını okur ve bunları değerlendirir (evaluate). Herhangi bir argüman olmadan çağrılırsa etkileşimli (interactive) olarak çalışır, standart girdiden Tcl komutlarını okur ve komut sonuçları ile hata mesajlarını standart çıktıya yazdırır. exit komutu çağrılana kadar veya standart girdisinde dosya sonuna (end-of-file) ulaşana kadar çalışır. Kullanıcının ev dizininde (home directory) bir .tclshrc dosyası (veya Windows platformlarında tclshrc.tcl) varsa, etkileşimli tclsh standart girdiden ilk komutu okumadan hemen önce bu dosyayı bir Tcl betiği olarak değerlendirir.

Betik Dosyaları

Tclsh argümanlarla çağrılırsa, ilk birkaç argüman bir betik dosyasının adını ve isteğe bağlı olarak o betik dosyasında depolanan metin verilerinin kodlamasını (encoding) belirtir. Ek argümanlar değişkenler olarak betiğe sunulur (aşağıya bakın). Tclsh standart girdiden komutları okumak yerine, adı belirtilen dosyadan Tcl komutlarını okuyacaktır; tclsh dosyanın sonuna ulaştığında çıkacaktır. Dosyanın sonu, ortamın fiziksel sonuyla veya “\032” (“\u001a”, control-Z) karakteriyle işaretlenebilir. Dosyada bu karakter mevcutsa, tclsh uygulaması karakter dahil olmamak üzere karakterin bulunduğu yere kadar olan metni okuyacaktır. Dosyada bu karaktere ihtiyaç duyan bir uygulama, onu güvenle “\032”, “\x1a” veya “\u001a” olarak kodlayabilir; veya format ya da binary gibi komutları kullanarak üretebilir. tclsh komut satırında bir betik dosyasının adı sunulduğunda .tclshrc dosyasının otomatik olarak değerlendirilmesi söz konusu değildir, ancak istenirse betik dosyası bunu her zaman kaynak olarak (source) içe aktarabilir.

İlk satırı #!/usr/bin/tclsh olan bir dosyada Tcl betiği oluşturursanız, dosyayı yürütülebilir (executable) olarak işaretlediğiniz takdirde betik dosyasını doğrudan kabuğunuzdan çağırabilirsiniz. Bu, tclsh'in /usr/bin altındaki varsayılan konumuna kurulduğunu varsayar; başka bir yere kurulmuşsa, yukarıdaki satırı buna uyacak şekilde değiştirmeniz gerekecektir. Birçok UNIX sistemi #! satırının yaklaşık 30 karakterden uzun olmasına izin vermez, bu nedenle tclsh yürütülebilir dosyasına kısa bir dosya adıyla erişilebildiğinden emin olun.

Daha da iyi bir yaklaşım, betik dosyalarınıza aşağıdaki üç satırla başlamaktır: #!/bin/sh

the next line restarts using tclsh \

exec tclsh "$0" "$@" Bu yaklaşımın bir önceki paragrafa göre üç avantajı vardır. Birincisi, tclsh ikili dosyasının (binary) konumu betiğe sabit olarak kodlanmak zorunda değildir: kabuk arama yolunuzdaki (search path) herhangi bir yerde olabilir. İkincisi, önceki yaklaşımdaki 30 karakterlik dosya adı sınırını aşar. Üçüncüsü, bu yaklaşım tclsh kendisi bir kabuk betiği olsa bile çalışacaktır (bu, birden fazla mimariyi veya işletim sistemini işlemek amacıyla bazı sistemlerde yapılır: tclsh betiği çalıştırılacak birkaç ikili dosyadan birini seçer). Bu üç satır hem sh hem de tclsh'in betiği işlemesine neden olur, ancak exec yalnızca sh tarafından yürütülür. sh önce betiği işler; ikinci satırı bir yorum olarak kabul eder ve üçüncü satırı yürütür. exec ifadesi, kabuğun işlemeyi durdurmasına ve bunun yerine tüm betiği yeniden işlemek üzere tclsh'i başlatmasına neden olur. tclsh başladığında, ikinci satırın sonundaki ters eğik çizgi (backslash) üçüncü satırın ikinci satırdaki yorumun bir parçası olarak değerlendirilmesine neden olduğundan, üç satırı da yorum olarak kabul eder.

tclsh'i sürüm numarası adının bir parçası olacak şekilde kurmanın da yaygın bir uygulama olduğunu unutmamalısınız. Bu durum, aynı sistemde aynı anda birden fazla Tcl sürümünün bulunmasına izin verme avantajına sahiptir, ancak farklı Tcl sürümleri arasında tek tip olarak başlayan betikler yazmayı zorlaştırma dezavantajına da sahiptir.

Değişkenler

Tclsh aşağıdaki Tcl değişkenlerini ayarlar:

argc Betik dosyasının adını içermeyen, arg argümanlarının sayısını (yoksa 0) içerir.

argv Elemanları sırasıyla arg argümanları olan bir Tcl listesini veya arg argümanı yoksa boş bir dizeyi içerir.

argv0 Belirtilmişse fileName değerini içerir. Aksi takdirde, tclsh'in çağrıldığı adı içerir.

tcl_interactive tclsh etkileşimli olarak çalışıyorsa (fileName belirtilmemişse ve standart girdi terminal benzeri bir aygıtsa) 1, aksi takdirde 0 içerir.

Komut İstemleri (Prompts)

Tclsh etkileşimli olarak çağrıldığında, normalde her komut için “% ” istemi verir. Değişkenler tcl_prompt1 ve tcl_prompt2'yi ayarlayarak istemi değiştirebilirsiniz. tcl_prompt1 değişkeni mevcutsa, bir komut istemi çıktısı vermek için bir Tcl betiğinden oluşmalıdır; bir istem çıktısı vermek yerine tclsh, tcl_prompt1 içindeki betiği değerlendirecektir. tcl_prompt2 değişkeni, yeni bir satır yazıldığında ancak geçerli komut henüz tamamlanmadığında benzer bir şekilde kullanılır; tcl_prompt2 ayarlanmamışsa, tamamlanmamış komutlar için hiçbir istem çıktısı verilmez.

Standart Kanallar

Daha fazla açıklama için Tcl_StandardChannels kılavuzuna bakın.

Ayrıca Bakınız

encoding(n), fconfigure(n), tclvars(n)

Anahtar Kelimeler

argument, interpreter, prompt, script file, shell

Tcl tclsh(1)