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

wish

Basit pencereli kabuk

Özet

       wish ?-encoding ad? ?dosyaAdı argüman argüman ...?

Seçenekler

  • -encoding ad: dosyaAdı içinde saklanan metnin kodlamasını (encoding) belirtir. Bu seçenek yalnızca dosyaAdı argümanından önce algılanır.

  • -colormap new: Pencerenin, ekran için varsayılan renk eşlemini (colormap) kullanmak yerine yeni bir özel renk eşlemine sahip olması gerektiğini belirtir.

  • -display display: Pencerenin görüntüleneceği ekranı (display) (ve ekran birimini) belirtir.

  • -geometry geometri: Pencere için kullanılacak ilk geometriyi belirtir. Bu seçenek belirtilirse, değeri uygulamanın Tcl yorumlayıcısının geometry genel değişkeninde saklanır.

  • -name ad: Pencerede görüntülenecek başlık olarak ad'ı ve gönderme (send) komutları için yorumlayıcı adı olarak ad'ı kullanır.

  • -sync: Tüm X sunucu komutlarını eşzamanlı (senkron) olarak yürütür; böylece hatalar anında rapor edilir. Bu, yürütmenin çok daha yavaş olmasına neden olur, ancak hata ayıklama için yararlıdır.

  • -use id: Uygulamanın ana penceresinin, bağımsız bir üst düzey (toplevel) pencere olarak oluşturulması yerine, tanımlayıcısı id olan pencerenin içine gömüleceğini belirtir. Id, üst düzey pencere öğeleri (widgets) için -use seçeneğinin değeriyle aynı şekilde belirtilmelidir (yani, winfo id komutu tarafından döndürülen biçimde olmalıdır). Bazı platformlarda bunun yalnızca, id'nin -container seçeneği etkinleştirilmiş bir Tk çerçevesine (frame) veya üst düzey pencereye referans vermesi durumunda doğru şekilde çalışacağını unutmayın.

  • -visual visual: Pencere için kullanılacak görsel türünü (visual) belirtir. visual, Tk_GetVisual prosedürü tarafından desteklenen formlardan herhangi birine sahip olabilir.

  • --: Kalan tüm argümanları yorumlamadan betiğin argv değişkenine iletir. Bu, wish'in yorumlaması yerine -name gibi argümanların bir betiğe iletilmesini sağlayan bir mekanizma sunar.


Açıklama

Wish; Tcl komut dili, Tk araç takımı (toolkit) ve standart girdiden ya da bir dosyadan komutları okuyan bir ana programdan oluşan basit bir programdır. Bir ana pencere oluşturur ve ardından Tcl komutlarını işler. Eğer wish argümanlarla çağrılırsa, ilk birkaç argüman, ?-encoding ad? ?dosyaAdı? bir betik dosyasının adını ve isteğe bağlı olarak o betik dosyasında saklanan metin verilerinin kodlamasını belirtir. İlgili argüman “-” ile başlamıyorsa dosyaAdı için bir değer kabul edilir.

Eğer hiçbir argüman yoksa veya argümanlar bir dosyaAdı belirtmiyorsa, wish Tcl komutlarını standart girdiden etkileşimli olarak okur. Tüm pencereler silinene veya standart girdide dosya sonuna (end-of-file) ulaşılana kadar komutları işlemeye devam edecektir. Kullanıcının ana dizininde “.wishrc” adında bir dosya mevcutsa, wish standart girdiden ilk komutu okumadan hemen önce bu dosyayı bir Tcl betiği olarak değerlendirir.

Eğer wish argümanları bir dosyaAdı belirtiyorsa, dosyaAdı bir betik dosyasının adı olarak kabul edilir. Wish, dosyaAdı içindeki betiği değerlendirecek (bu betik muhtemelen bir kullanıcı arayüzü oluşturur) ve ardından tüm pencereler silinene kadar olaylara (events) yanıt verecektir. Komutlar standart girdiden okunmayacaktır. wish komut satırında bir betik dosyasının adı sunulduğunda “.wishrc” dosyasının otomatik olarak değerlendirilmesi söz konusu değildir, ancak betik dosyası istenirse bunu her zaman dahil edebilir (source).

Windows'ta wishsürüm.exe programının tclshsürüm.exe programından ek bir önemli yönüyle ayrıldığını unutmayın: Standart bir Windows konsoluna bağlanmaz ve bunun yerine pencereli bir programdır. Bu nedenle, ek olarak kendi console komutuna erişim sağlar.

Seçeneklerin İşlenmesi

Wish, yukarıdaki SEÇENEKLER özetinde açıklanan tüm komut satırı seçeneklerini otomatik olarak işler. Bunların dışındaki diğer tüm komut satırı argümanları, daha sonra açıklanan argc ve argv değişkenleri kullanılarak uygulamaya iletilir.

Uygulama Adı Ve Sınıfı

Gönderme (send) komutları gibi amaçlar için kullanılan uygulamanın adı, belirtilmişse -name seçeneğinden alınır; aksi takdirde belirtilmişse dosyaAdı'ndan veya wish'in çağrıldığı komut adından alınır. Son iki durumda, eğer ad bir “/” karakteri içeriyorsa, uygulama adı olarak yalnızca son eğik çizgiden sonraki karakterler kullanılır.

RESOURCE_MANAGER özelliği veya .Xdefaults dosyası ile seçenekleri belirtmek gibi amaçlar için kullanılan uygulamanın sınıfı (class), ilk harfinin büyük yazılması dışında adıyla aynıdır.

Değişkenler

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

argc Yukarıda açıklanan seçenekler hariç, arg argümanlarının sayısını içerir (hiç yoksa 0).

argv Bir -- seçeneğinden sonra gelen veya yukarıda SEÇENEKLER bölümünde açıklanan seçeneklerden hiçbiriyle eşleşmeyen arg argümanlarını sırasıyla içeren bir Tcl listesi veya bu tür argümanlar yoksa boş bir dize içerir.

argv0 Belirtilmişse dosyaAdı'nı içerir. Aksi takdirde, wish'in çağrıldığı adı içerir.

geometry Eğer -geometry seçeneği belirtilmişse, wish bunun değerini bu değişkene kopyalar. DosyaAdı değerlendirildikten sonra değişken hala mevcutsa, wish ana pencerenin geometrisini ayarlamak için bir wm geometry komutunda bu değişkenin değerini kullanır.

tcl_interactive wish komutları etkileşimli olarak okuyorsa (dosyaAdı belirtilmemişse ve standart girdi terminal benzeri bir aygıt ise) 1, aksi takdirde 0 içerir.

Betik Dosyaları

Eğer ilk satırı

#!/usr/local/bin/wish

olan bir dosyada bir Tcl betiği oluşturursanız, betik dosyasını çalıştırılabilir olarak işaretlediğinizde doğrudan kabuğunuzdan çağırabilirsiniz. Bu, wish'in /usr/local/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 uzunluğunun yaklaşık 30 karakteri geçmesine izin vermez, bu nedenle wish 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
# bir sonraki satır wish kullanarak yeniden başlatır \
exec wish "$0" "$@"

Bu yaklaşımın bir önceki paragraftaki yaklaşıma göre üç avantajı vardır. Birincisi, wish ikili dosyasının konumunun betiğin içine sabit kodlanması gerekmez: kabuk arama yolunuzun herhangi bir yerinde olabilir. İkincisi, önceki yaklaşımdaki 30 karakterlik dosya adı sınırını aşar. Üçüncüsü, wish'in kendisi bir kabuk betiği olsa bile bu yaklaşım çalışacaktır (bu, bazı sistemlerde birden fazla mimariyi veya işletim sistemini işlemek için yapılır: wish betiği, çalıştırılacak birkaç ikili dosyadan birini seçer). Bu üç satır hem sh hem de wish'in betiği işlemesine neden olur, ancak exec yalnızca sh tarafından yürütülür. sh betiği önce 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 wish'i başlatmasına neden olur. Wish başlatıldığında, her üç satırı da yorum olarak kabul eder, çünkü ikinci satırın sonundaki ters eğik çizgi, üçüncü satırın ikinci satırdaki yorumun bir parçası olarak kabul edilmesine neden olur.

Bir betik dosyasının sonu, ortamın fiziksel sonuyla veya “\032” (“\u001a”, kontrol-Z) karakteriyle belirtilebilir. Bu karakter dosyada mevcutsa, wish uygulaması metni bu karaktere kadar okuyacak ancak bu karakteri dahil etmeyecektir. Dosyada bu karaktere ihtiyaç duyan bir uygulama bunu “\032”, “\x1a” veya “\u001a” olarak kodlayabilir; ya da format veya binary gibi komutları kullanarak üretebilir.

Komut İstemleri (Prompts)

Wish etkileşimli olarak çağrıldığında, normalde her komut için “% ” ile komut istemi sunar. Değişkenleri tcl_prompt1 ve tcl_prompt2 olarak ayarlayarak komut istemini değiştirebilirsiniz. Eğer tcl_prompt1 değişkeni mevcutsa, bir komut istemi çıktısı vermek için bir Tcl betiğinden oluşmalıdır; wish bir komut istemi çıktısı vermek yerine tcl_prompt1 içindeki betiği değerlendirecektir. Değişken tcl_prompt2, yeni bir satır yazıldığında ancak mevcut 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.

Anahtar Kelimeler

kabuk (shell), araç takımı (toolkit)