man/shells_and_env
man · Kabuklar & Ortam

$ tcsh

Bölüm 1 · Kabuklar & Ortam

Dosya adı tamamlama ve komut satırı düzenleme özelliklerine sahip C shell (C kabuğu)

Özet

       tcsh [-bcdefFimnqstvVxX] [-Dname[=value]] [arg ...]
       tcsh -l

Açıklama

tcsh, Berkeley UNIX C shell olan csh(1) kabuğunun geliştirilmiş ancak tamamen uyumlu bir sürümüdür. Hem etkileşimli bir giriş kabuğu (login shell) hem de kabuk betiği (shell script) komut işlemcisi olarak kullanılabilen bir komut dili yorumlayıcısıdır. Bir komut satırı düzenleyicisi (bkz. Komut satırı düzenleyicisi), programlanabilir kelime tamamlama (bkz. Tamamlama ve listeleme), yazım düzeltme (bkz. Yazım düzeltme), bir geçmiş mekanizması (bkz. Geçmiş ikamesi), iş kontrolü (bkz. İşler) ve C benzeri bir söz dizimi içerir. YENİ ÖZELLİKLER bölümü, tcsh'in csh(1) üzerindeki büyük geliştirmelerini açıklamaktadır. Bu kılavuz boyunca, çoğu csh(1) uygulamasında (özellikle 4.4BSD csh) bulunmayan tcsh özellikleri (+) ile, csh(1)'de bulunan ancak genellikle belgelenmemiş olan özellikler ise (u) ile etiketlenmiştir.

Argüman listesi işleme Kabuğa verilen ilk argüman (argüman 0) `-' ise bu bir giriş kabuğudur (login shell). Bir giriş kabuğu, tek argüman olarak -l bayrağı ile kabuk çağrılarak da belirtilebilir.

Geri kalan bayrak argümanları aşağıdaki gibi yorumlanır:

  • -b: Seçenek işlemesinden zorla bir "kesme" (break) gerçekleştirerek sonraki kabuk argümanlarının seçenek dışı argümanlar olarak ele alınmasını sağlar. Kalan argümanlar kabuk seçenekleri olarak yorumlanmayacaktır. Bu, bir kabuk betiğine kafa karışıklığı veya olası hileler olmaksızın seçenekler geçirmek için kullanılabilir. Kabuk, bu seçenek olmadan set-user ID betiğini çalıştırmaz.

  • -c: Komutlar takip eden argümandan (mevcut olmalı ve tek bir argüman olmalıdır) okunur, referans için command kabuk değişkeninde saklanır ve yürütülür. Kalan tüm argümanlar argv kabuk değişkenine yerleştirilir.

  • -d: Kabuk, bir giriş kabuğu olsun ya da olmasın, Başlangıç ve kapatma altında açıklandığı gibi ~/.cshdirs dosyasından dizin yığınını yükler. (+)

-Dname[=value] name çevre değişkenini value değerine ayarlar. (Yalnızca Domain/OS) (+)

  • -e: Çağrılan herhangi bir komut anormal şekilde sonlanırsa veya sıfır dışı bir çıkış durumu döndürürse kabuktan çıkılır.

  • -f: Kabuk hiçbir kaynak veya başlangıç dosyasını yüklemez ve herhangi bir komut karma işlemini (hashing) gerçekleştirmez, bu nedenle daha hızlı başlar.

  • -F: Kabuk, süreçleri oluşturmak için vfork(2) yerine fork(2) kullanır. Bu artık varsayılandır ve bu seçenek göz ardı edilir. (+)

  • -i: Kabuk etkileşimlidir ve terminal gibi görünmese bile en üst düzey girdisi için istemde bulunur. Kabuklar, girdileri ve çıktıları terminal ise bu seçenek olmadan da etkileşimlidir.

  • -l: Kabuk bir giriş kabuğudur (login shell). Yalnızca -l belirtilen tek bayrak ise geçerlidir.

  • -m: Kabuk, etkin kullanıcıya ait olmasa bile ~/.tcshrc dosyasını yükler. su(1) komutunun daha yeni sürümleri kabuğa -m parametresini geçirebilir. (+)

  • -n: Kabuk komutları ayrıştırır ancak çalıştırmaz. Bu, kabuk betiklerinde hata ayıklamaya yardımcı olur.

  • -q: Kabuk SIGQUIT sinyalini kabul eder (bkz. Sinyal işleme) ve bir hata ayıklayıcı altında kullanıldığında buna göre davranır. İş kontrolü devre dışı bırakılır. (u)

  • -s: Komut girdisi standart girdiden alınır.

  • -t: Kabuk tek bir girdi satırını okur ve yürütür. Bu satırın sonundaki yeni satır karakterinden kaçmak ve başka bir satıra devam etmek için bir \ kullanılabilir.

  • -v: verbose kabuk değişkenini ayarlar, böylece geçmiş ikamesinden sonra komut girdisi yankılanır.

  • -x: echo kabuk değişkenini ayarlar, böylece komutlar yürütülmeden hemen önce yankılanır.

  • -V: verbose kabuk değişkenini ~/.tcshrc yürütülmeden önce bile ayarlar.

  • -X: -v için -V neyse, -x için de odur.

--help Standart çıktıya bir yardım mesajı yazdırır ve çıkar. (+)

--version Standart çıktıya sürüm/platform/derleme seçeneklerini yazdırır ve çıkar. Bu bilgi aynı zamanda version kabuk değişkeninde de bulunur. (+)

Bayrak argümanlarının işlenmesinden sonra, eğer argümanlar kalırsa ancak -c, -i, -s veya -t seçeneklerinden hiçbiri verilmemişse, ilk argüman yürütülecek komutların bulunduğu bir dosyanın adı veya "betik" (script) olarak alınır. Kabuk bu dosyayı açar ve $0 tarafından olası yeniden ikame için adını kaydeder. Birçok sistem, kabuk betikleri bu kabukla uyumlu olmayan standart sürüm 6 veya sürüm 7 kabuklarını kullandığından, kabuk ilk karakteri # olmayan, yani bir yorumla başlamayan bir betiği yürütmek için böyle bir "standart" kabuk kullanır.

Kalan argümanlar argv kabuk değişkenine yerleştirilir.

Başlangıç ve kapatma Bir giriş kabuğu (login shell) işe /etc/csh.cshrc ve /etc/csh.login sistem dosyalarındaki komutları yürüterek başlar. Ardından kullanıcının ev dizinindeki dosyalardan komutları yürütür: önce ~/.tcshrc (+) veya ~/.tcshrc bulunamazsa ~/.cshrc, ardından ~/.history içeriği (veya histfile kabuk değişkeninin değeri) belleğe yüklenir, sonra ~/.login ve son olarak ~/.cshdirs (veya dirsfile kabuk değişkeninin değeri) (+). Kabuk, eğer bu şekilde derlenmişse, /etc/csh.login dosyasını /etc/csh.cshrc dosyasından sonra değil önce okuyabilir ve ~/.login dosyasını ~/.tcshrc veya ~/.cshrc ve ~/.history dosyalarından sonra değil önce okuyabilir; bkz. version kabuk değişkeni. (+)

Giriş kabuğu olmayan kabuklar başlangıçta yalnızca /etc/csh.cshrc ve ~/.tcshrc veya ~/.cshrc dosyalarını okur.

Başlangıç dosyası örnekleri için lütfen http://tcshrc.sourceforge.net adresine başvurun.

Giriş başına yalnızca bir kez çalıştırılması gereken stty(1) ve tset(1) gibi komutlar genellikle kişinin ~/.login dosyasına konur. Hem csh(1) hem de tcsh ile aynı dosya kümesini kullanması gereken kullanıcılar, tcsh'e özgü komutları kullanmadan önce tcsh kabuk değişkeninin (q.v.) varlığını kontrol eden tek bir ~/.cshrc dosyasına sahip olabilirler veya hem bir ~/.cshrc hem de ~/.cshrc dosyasını kaynak alan (bkz. yerleşik komut) bir ~/.tcshrc dosyasına sahip olabilirler. Bu kılavuzun geri kalanı ~/.tcshrc ifadesini ~/.tcshrc veya ~/.tcshrc bulunamazsa ~/.cshrc anlamında kullanır.

Normal durumda kabuk, > istemiyle terminalden komutları okumaya başlar. (Argümanların işlenmesi ve komut betikleri içeren dosyaları işlemek için kabuğun kullanılması daha sonra açıklanacaktır.) Kabuk, tekrarlı olarak bir komut girdi satırını okur, kelimelere ayırır, komut geçmişi listesine yerleştirir, ayrıştırır ve satırdaki her komutu yürütür.

Boş bir satırda ^D, logout veya login yazarak ya da kabuğun autologout mekanizması aracılığıyla (bkz. autologout kabuk değişkeni) çıkış yapılabilir. Bir giriş kabuğu sonlandığında logout kabuk değişkenini uygun şekilde normal veya automatic olarak ayarlar, ardından /etc/csh.logout ve ~/.logout dosyalarındaki komutları yürütür. Kabuk, bu şekilde derlenmişse çıkışta DTR'yi düşürebilir; bkz. version kabuk değişkeni.

Sistem giriş ve çıkış dosyalarının adları, farklı csh(1) varyantlarıyla uyumluluk için sistemden sisteme değişir; bkz. DOSYALAR (FILES).

Düzenleme Önce Komut satırı düzenleyicisini açıklayacağız. Tamamlama ve listeleme ile Yazım düzeltme bölümleri, düzenleyici komutları olarak uygulanan ancak kendi başlarına ele alınmayı hak eden iki işlevsellik kümesini açıklamaktadır. Son olarak, Düzenleyici komutları, kabuğa özgü düzenleyici komutlarını ve bunların varsayılan tuş atamalarını (bindings) listeler ve açıklar.

Komut satırı düzenleyicisi (+) Komut satırı girdisi, emacs(1) veya vi(1) içinde kullanılanlara çok benzer tuş dizileri kullanılarak düzenlenebilir. Düzenleyici yalnızca edit kabuk değişkeni ayarlandığında etkindir ve bu değişken etkileşimli kabuklarda varsayılan olarak ayarlıdır. bindkey yerleşik komutu tuş atamalarını görüntüleyebilir ve değiştirebilir. Varsayılan olarak emacs(1) stili tuş atamaları kullanılır (kabuk aksine derlenmemişse; bkz. version kabuk değişkeni), ancak bindkey tuş atamalarını topluca vi(1) stiline değiştirebilir.

Kabuk, ok tuşlarını (TERMCAP çevre değişkeninde tanımlandığı gibi) her zaman şunlara atar:

down down-history up up-history left backward-char right forward-char

Bunun yapılması başka bir tek karakterli atamayı değiştirecek olmadıkça bu durum geçerlidir. Bu atamaları önlemek için settc ile ok tuşu kaçış dizileri boş dizeye ayarlanabilir. Ok tuşları için ANSI/VT100 dizileri her zaman atanmıştır.

Diğer tuş atamaları, büyük ölçüde emacs(1) ve vi(1) kullanıcılarının bekleyeceği şekildedir ve bindkey ile kolayca görüntülenebilir, bu nedenle burada listelenmelerine gerek yoktur. Benzer şekilde bindkey, düzenleyici komutlarını her birinin kısa bir açıklamasıyla listeleyebilir. Belirli tuş atamaları, emacs(1) veya vi(1) tarzı atamaların kullanılmasına bağlı olarak farklı davranışlar gösterir; daha fazla bilgi için bkz. vimode.

Düzenleyici komutlarının kabukla aynı "kelime" kavramına sahip olmadığını unutmayın. Düzenleyici, kelimeleri wordchars kabuk değişkeninde bulunmayan alfasayısal olmayan karakterlerle sınırlandırırken, kabuk yalnızca boşlukları ve Sözcük yapısı altında listelenen kendisi için özel anlamları olan bazı karakterleri tanır.

Tamamlama ve listeleme (+) Kabuk, benzersiz bir kısaltma verildiğinde genellikle kelimeleri tamamlayabilir. Bir kelimenin bir kısmını yazın (örneğin ls /usr/lost) ve complete-word düzenleyici komutunu çalıştırmak için sekme (tab) tuşuna basın. Kabuk, /usr/lost dosya adını /usr/lost+found/ olarak tamamlar ve girdi tamponundaki eksik kelimeyi tam kelimeyle değiştirir. (Sondaki / karakterine dikkat edin; tamamlama, yazmayı hızlandırmak ve başarılı tamamlamanın görsel bir göstergesini sağlamak amacıyla tamamlanan dizinlerin sonuna bir / ve diğer tamamlanan kelimelerin sonuna bir boşluk ekler. Bunu önlemek için addsuffix kabuk değişkeninin tanımı kaldırılabilir.) Eşleşme bulunamazsa (belki /usr/lost+found mevcut değildir), terminal zili çalar. Kelime zaten tamamsa (belki sisteminizde bir /usr/lost vardır ya da belki çok ilerisini düşünüp tamamını yazdınız) zaten yoksa sonuna bir / veya boşluk eklenir.

Tamamlama satırın sadece sonunda değil, herhangi bir yerinde çalışır; tamamlanan metin satırın geri kalanını sağa iter. Kelimenin ortasında tamamlama yapmak genellikle imlecin sağında silinmesi gereken artık karakterlerin kalmasına neden olur.

Komutlar ve değişkenler de hemen hemen aynı şekilde tamamlanabilir. Örneğin, em[tab] yazmak, sisteminizde em ile başlayan tek komut emacs ise em kelimesini emacs olarak tamamlar. Tamamlama, path içindeki herhangi bir dizinde veya tam bir yol adı verilmişse bir komutu bulabilir. echo $ar[tab] yazmak, ar ile başlayan başka bir değişken yoksa $ar ifadesini $argv olarak tamamlar.

Kabuk, tamamlamak istediğiniz kelimenin dosya adı mı, komut mu yoksa değişken olarak mı tamamlanacağını belirlemek için girdi tamponunu ayrıştırır. Tampondaki ilk kelime ve ;, |, |&, && veya || işaretlerinden sonraki ilk kelime komut olarak kabul edilir. $ ile başlayan bir kelime değişken olarak kabul edilir. Diğer her şey bir dosya adıdır. Boş bir satır, bir dosya adı olarak "tamamlanır".

delete-char-or-list-or-eof düzenleyici komutunu çalıştırmak için istediğiniz zaman ^D yazarak bir kelimenin olası tamamlamalarını listeleyebilirsiniz. Kabuk, ls-F yerleşik komutunu (q.v.) kullanarak olası tamamlamaları listeler ve istemi ile bitmemiş komut satırını yeniden yazdırır, örneğin:

ls /usr/l[^D] lbin/ lib/ local/ lost+found/ ls /usr/l

Eğer autolist kabuk değişkeni ayarlanmışsa, tamamlama başarısız olduğunda kabuk kalan seçenekleri (varsa) listeler:

set autolist nm /usr/lib/libt[tab] libtermcap.a@ libtermlib.a@ nm /usr/lib/libterm

Eğer autolist değeri ambiguous olarak ayarlanmışsa, seçenekler yalnızca tamamlama başarısız olduğunda ve tamamlanan kelimeye yeni bir karakter eklemediğinde listelenir.

Tamamlanacak bir dosya adı; değişkenler, ~ ile kısaltılmış kendi ev dizininiz veya başkalarının ev dizinleri (bkz. Dosya adı ikamesi) ve = ile kısaltılmış dizin yığını girdileri (bkz. Dizin yığını ikamesi) içerebilir. Örneğin,

ls ~k[^D] kahn kas kellogg ls ~ke[tab] ls ~kellogg/

veya

set local = /usr/local ls $lo[tab] ls $local/[^D] bin/ etc/ lib/ man/ src/ ls $local/

Değişkenlerin, expand-variables düzenleyici komutuyla açıkça da genişletilebileceğini unutmayın.

delete-char-or-list-or-eof yalnızca satırın sonunda listeleme yapar; satırın ortasında imlecin altındaki karakteri siler ve boş bir satırda oturumu kapatır veya ignoreeof ayarlanmışsa hiçbir şey yapmaz. list-choices düzenleyici komutuna atanmış olan M-^D, satırın herhangi bir yerinde tamamlama olasılıklarını listeler ve list-choices (veya delete-char-or-list-or-eof altında listelenen, silen veya silmeyen, listeleyen ve/veya oturumu kapatan ilgili düzenleyici komutlarından herhangi biri) istenirse bindkey yerleşik komutuyla ^D tuşuna atanabilir.

complete-word-fwd ve complete-word-back düzenleyici komutları (varsayılan olarak herhangi bir tuşa atanmamıştır), olası tamamlamalar listesinde yukarı ve aşağı doğru gezinmek, mevcut kelimeyi listedeki bir sonraki veya bir önceki kelimeyle değiştirmek için kullanılabilir.

fignore kabuk değişkeni, tamamlama tarafından yok sayılacak soneklerin bir listesine ayarlanabilir. Şunu düşünün:

ls Makefile condiments.h~ main.o side.c README main.c meal side.o condiments.h main.c~ set fignore = (.o ~) emacs ma[^D] main.c main.c~ main.o emacs ma[tab] emacs main.c

main.c~ ve main.o tamamlama tarafından (listeleme tarafından değil) yok sayılır çünkü fignore içindeki soneklerle biterler. Dosya adı ikamesi altında açıklandığı gibi, ev dizinine genişletilmesini önlemek amacıyla ~ işaretinin önüne bir \ konulması gerektiğine dikkat edin. Yalnızca tek bir tamamlama mümkünse fignore yok sayılır.

Eğer complete kabuk değişkeni enhance olarak ayarlanmışsa, tamamlama 1) büyük/küçük harf ayrımını yok sayar ve 2) noktaları, tireleri ve alt çizgileri (., - ve _) kelime ayırıcı olarak kabul eder, tire ve alt çizgileri ise eşdeğer sayar. Aşağıdaki dosyalara sahip olduğunuzu

comp.lang.c comp.lang.perl comp.std.c++ comp.lang.c++ comp.std.c

ve mail -f c.l.c[tab] yazdığınızı varsayalım; bu girdi mail -f comp.lang.c olarak tamamlanır ve ^D tuşu comp.lang.c ile comp.lang.c++ dosyalarını listeler. mail -f c..c++[^D] girdisi comp.lang.c++ ve comp.std.c++ dosyalarını listeler. Aşağıdaki dizinde rm a--file[^D] yazmak

A_silly_file a-hyphenated-file another_silly_file

her üç dosyayı da listeler, çünkü büyük/küçük harf ayrımı yok sayılır, tireler ve alt çizgiler eşdeğerdir. Ancak noktalar, tirelere veya alt çizgilere eşdeğer değildir.

Eğer complete kabuk değişkeni Enhance olarak ayarlanmışsa, tamamlama büyük/küçük harf duyarlılığını ve bir tire ile bir alt çizgi kelime ayırıcısı arasındaki farkları yalnızca kullanıcı küçük harf veya tire yazdığında yok sayar. Bir büyük harf veya alt çizgi girilmesi, ilgili küçük harf veya tire kelime ayırıcısıyla eşleşmeyecektir. Önceki örneğin dizininde rm a--file[^D] yazmak hala her üç dosyayı da listeler, ancak rm A--file yazmak yalnızca A_silly_file' ile eşleşir ve rm a__file[^D]yazmak yalnızcaA_silly_file' ve `another_silly_file' ile eşleşir çünkü kullanıcı açıkça bir büyük harf veya alt çizgi karakteri kullanmıştır.

Tamamlama ve listeleme, diğer bazı kabuk değişkenlerinden de etkilenir: recexact, daha fazla yazmak daha uzun bir eşleşmeyle sonuçlanabilecek olsa bile, mümkün olan en kısa benzersiz eşleşmede tamamlanacak şekilde ayarlanabilir:

ls fodder foo food foonly set recexact rm fo[tab]

sadece bip sesi çıkarır, çünkü fo ifadesi fod veya foo olarak genişletilebilir, ancak bir o daha yazarsak,

rm foo[tab] rm foo

food ve foonly de eşleşmesine rağmen tamamlama foo üzerinde tamamlanır. autoexpand, her tamamlama girişiminden önce expand-history düzenleyici komutunu çalıştıracak şekilde ayarlanabilir, autocorrect, her tamamlama girişiminden önce tamamlanacak kelimenin yazımını düzeltecek şekilde (bkz. Yazım düzeltme) ayarlanabilir ve correct, 'return' (giriş) tuşuna basıldıktan sonra komutları otomatik olarak tamamlayacak şekilde ayarlanabilir. matchbeep, tamamlamanın çeşitli durumlarda bip sesi çıkarmasını veya çıkarmamasını sağlayacak şekilde ayarlanabilir ve nobeep, hiçbir zaman bip sesi çıkarmayacak şekilde ayarlanabilir. nostat, tamamlama mekanizmasının bu dizinlerde stat(2) çağrısı yapmasını önlemek amacıyla dizinlerin ve/veya dizinlerle eşleşen şablonların bir listesine ayarlanabilir. listmax ve listmaxrows, önce sormadan listelenen öğelerin ve satırların sayısını (sırasıyla) sınırlamak için ayarlanabilir. recognize_only_executables, kabuğun komutları listelerken yalnızca yürütülebilir dosyaları listelesmesini sağlamak için ayarlanabilir, ancak bu oldukça yavaştır.

Son olarak, complete yerleşik komutu kabuğa dosya adları, komutlar ve değişkenler dışındaki kelimeleri nasıl tamamlayacağını söylemek için kullanılabilir. Tamamlama ve listeleme glob şablonlarında (bkz. Dosya adı ikamesi) çalışmaz, ancak list-glob ve expand-glob düzenleyici komutları glob şablonları için eşdeğer işlevleri gerçekleştirir.

Yazım düzeltme (+) Kabuk bazen dosya adlarının, komutların ve değişken adlarının yazımını düzeltebilir, ayrıca bunları tamamlayıp listeleyebilir.

Münferit kelimeler spell-word düzenleyici komutuyla (genellikle M-s ve M-S tuşlarına atanmıştır) ve tüm girdi tamponu spell-line (genellikle M-$ tuşuna atanmıştır) ile yazım açısından düzeltilebilir. correct kabuk değişkeni, her return tuşuna basıldığında komut adını düzeltmek için cmd veya tüm satırı düzeltmek için all olarak ayarlanabilir ve autocorrect, her tamamlama girişiminden önce tamamlanacak kelimeyi düzeltecek şekilde ayarlanabilir.

Yazım düzeltme bu yollardan herhangi biriyle çağrıldığında ve kabuk komut satırının herhangi bir bölümünün yanlış yazıldığını düşündüğünde, düzeltilmiş satırla birlikte istemde bulunur:

set correct = cmd lz /usr/bin CORRECT>ls /usr/bin (y|n|e|a)?

Kişi düzeltilmiş satırı yürütmek için y veya boşluk tuşuna basabilir, düzeltilmemiş komutu girdi tamponunda bırakmak için e tuşuna basabilir, komutu sanki ^C tuşuna basılmış gibi iptal etmek için a tuşuna basabilir ve orijinal satırı değiştirmeden yürütmek için başka herhangi bir şeye basabilir.

Yazım düzeltme, kullanıcı tanımlı tamamlamaları tanır (bkz. complete yerleşik komutu). Bir tamamlama tanımlanmış olan bir konumdaki girdi kelimesi tamamlama listesindeki bir kelimeye benziyorsa, yazım düzeltme bir yazım hatası kaydeder ve düzeltme olarak ikinci kelimeyi önerir. Ancak girdi kelimesi o konum için olası tamamlamalardan hiçbiriyle eşleşmiyorsa yazım düzeltme bir yazım hatası kaydetmez.

Tamamlama gibi, yazım düzeltme de satırın herhangi bir yerinde çalışır, satırın geri kalanını sağa iter ve imlecin sağında fazdan karakterler bırakabilir.

Düzenleyici komutları (+) bindkey tuş atamalarını listeler ve bindkey -l düzenleyici komutlarını listeler ve kısaca açıklar. Burada yalnızca yeni veya özellikle ilginç olan düzenleyici komutları açıklanmıştır. Her düzenleyicinin tuş atamalarının açıklamaları için bkz. emacs(1) ve vi(1).

Her komutun varsayıalan olarak atandığı karakter veya karakterler parantez içinde verilmiştir. ^karakter bir kontrol karakteri anlamına gelir ve M-karakter meta tuşu olmayan terminallerde kaçış karakteri (escape) olarak yazılan bir meta karakteri ifade eder. Büyük/küçük harf önemlidir, ancak kolaylık sağlamak amacıyla varsayılan olarak harflere atanan komutlar hem küçük hem de büyük harflere atanmıştır.

backward-char (^B, left) Bir karakter geri gider. İmleç davranışı vimode tarafından değiştirilir.

backward-delete-word (M-^H, M-^?) Mevcut kelimenin başından imlece kadar olan kısmı keser - kesme tamponunda (cut buffer) saklanır. Kelime sınırı davranışı vimode tarafından değiştirilir.

backward-word (M-b, M-B) Mevcut kelimenin başına gider. Kelime sınırı ve imleç davranışı vimode tarafından değiştirilir.

beginning-of-line (^A, home) Satırın başına gider. İmleç davranışı vimode tarafından değiştirilir.

capitalize-word (M-c, M-C) İmleçten mevcut kelimenin sonuna kadar olan karakterleri büyük harfle başlatır (ilk harflerini büyük yapar). Kelime sınırı davranışı vimode tarafından değiştirilir.

complete-word (tab) Tamamlama ve listeleme altında açıklandığı gibi bir kelimeyi tamamlar.

complete-word-back (atanmamış) complete-word-fwd gibidir, ancak listenin sonundan yukarı doğru adımlar.

complete-word-fwd (atanmamış) Mevcut kelimeyi olası tamamlamalar listesindeki ilk kelimeyle değiştirir. Listede aşağı doğru ilerlemek için tekrarlanabilir. Listenin sonunda bip sesi çıkarır ve tamamlanmamış kelimeye geri döner.

complete-word-raw (^X-tab) complete-word gibidir, ancak kullanıcı tanımlı tamamlamaları yok sayar.

copy-prev-word (M-^_) Geçerli satırdaki önceki kelimeyi girdi tamponuna kopyalar. Ayrıca bkz. insert-last-word. Kelime sınırı davranışı vimode tarafından değiştirilir.

dabbrev-expand (M-/) Mevcut kelimeyi, kendisinin bir başlangıç alt dizesi olduğu en yakın önceki kelimeye genişletir, gerekirse geçmiş listesinde (bir kez) başa döner. Araya herhangi bir şey yazmadan dabbrev-expand komutunu tekrarlamak, history-search-backward komutunun yaptığına çok benzer şekilde aynı eşleşmeleri atlayarak bir sonraki önceki kelimeye vb. geçiş yapar.

delete-char (atanmamış) İmlecin altındaki karakteri siler. Ayrıca bkz. delete-char-or-list-or-eof. İmleç davranışı vimode tarafından değiştirilir.

delete-char-or-eof (atanmamış) İmlecin altında bir karakter varsa delete-char, boş bir satırda ise dosya sonu (end-of-file) işlemini gerçekleştirir. Ayrıca bkz. delete-char-or-list-or-eof. İmleç davranışı vimode tarafından değiştirilir.

delete-char-or-list (atanmamış) İmlecin altında bir karakter varsa delete-char, satırın sonunda ise list-choices işlemini gerçekleştirir. Ayrıca bkz. delete-char-or-list-or-eof.

delete-char-or-list-or-eof (^D) İmlecin altında bir karakter varsa delete-char, satırın sonunda ise list-choices, boş bir satırda ise dosya sonu (end-of-file) işlemini gerçekleştirir. Her biri yalnızca tek bir eylem gerçekleştiren bu üç komuta ve üç eylemden farklı ikisini gerçekleştiren delete-char-or-eof, delete-char-or-list ve list-or-eof komutlarına da bakın.

delete-word (M-d, M-D) İmleçten mevcut kelimenin sonuna kadar olan kısmı keser - kesme tamponunda saklar. Kelime sınırı davranışı vimode tarafından değiştirilir.

down-history (aşağı ok, ^N) up-history gibidir, ancak aşağı doğru adımlar ve orijinal girdi satırında durur.

downcase-word (M-l, M-L) İmleçten mevcut kelimenin sonuna kadar olan karakterleri küçük harfe dönüştürür. Kelime sınırı davranışı vimode tarafından değiştirilir.

end-of-file (atanmamış) Dosya sonu sinyali vererek, bunu önlemek için ignoreeof kabuk değişkeni (q.v.) ayarlanmadığı sürece kabuktan çıkılmasına neden olur. Ayrıca bkz. delete-char-or-list-or-eof.

end-of-line (^E, end) İmleci satırın sonuna götürür. İmleç davranışı vimode tarafından değiştirilir.

expand-history (M-boşluk) Mevcut kelimedeki geçmiş ikamelerini genişletir. Bkz. Geçmiş ikamesi. Ayrıca bkz. magic-space, toggle-literal-history ve autoexpand kabuk değişkeni.

expand-glob (^X-*) İmlecin solundaki glob şablonunu genişletir. Bkz. Dosya adı ikamesi.

expand-line (atanmamış) expand-history gibidir, ancak girdi tamponundaki her kelimede geçmiş ikamelerini genişletir.

expand-variables (^X-$) İmlecin solundaki değişkeni genişletir. Bkz. Değişken ikamesi.

forward-char (^F, right) Bir karakter ileri gider. İmleç davranışı vimode tarafından değiştirilir.

forward-word (M-f, M-F) Mevcut kelimenin sonuna kadar ileri gider. Kelime sınırı ve imleç davranışı vimode tarafından değiştirilir.

history-search-backward (M-p, M-P) Geçmiş listesinde geriye doğru, girdi tamponunun imlece kadar olan mevcut içeriğiyle başlayan bir komut arar ve bunu girdi tamponuna kopyalar. Arama dizesi *, ?, [] veya {} içeren bir glob şablonu (bkz. Dosya adı ikamesi) olabilir. up-history ve down-history geçmiş listesindeki uygun noktadan devam edecektir. Yalnızca Emacs modu. Ayrıca bkz. history-search-forward ve i-search-back.

history-search-forward (M-n, M-N) history-search-backward gibidir, ancak ileriye doğru arar.

i-search-back (atanmamış) history-search-backward gibi geriye doğru arama yapar, ilk eşleşmeyi imleç şablonun sonuna gelecek şekilde girdi tamponuna kopyalar ve bck: ile ilk eşleşmeyi içeren bir istem görüntüler. Aramayı genişletmek için ek karakterler yazılabilir, aynı şablonla aramaya devam etmek için (gerekirse geçmiş listesinde başa dönerek) i-search-back yazılabilir (bunun çalışması için i-search-back tek bir karaktere atanmış olmalıdır) veya aşağıdaki özel karakterlerden biri yazılabilir:

^W İmlecin altındaki kelimenin geri kalanını arama şablonuna ekler. delete (veya backward-delete-char komutuna atanmış herhangi bir karakter) Son yazılan karakterin etkisini geri alır ve uygunsa arama şablonundan bir karakter siler. ^G Önceki arama başarılı olduysa tüm aramayı iptal eder. Başarılı olmadıysa son başarılı aramaya geri döner. escape Aramayı sonlandırarak geçerli satırı girdi tamponunda bırakır.

self-insert-command komutuna atanmamış diğer herhangi bir karakter aramayı sonlandırarak geçerli satırı girdi tamponunda bırakır ve ardından normal girdi olarak yorumlanır. Özellikle, bir satır başı (carriage return) geçerli satırın yürütülmesine neden olur. Ayrıca bkz. i-search-fwd ve history-search-backward. Kelime sınırı davranışı vimode tarafından değiştirilir.

i-search-fwd (atanmamış) i-search-back gibidir, ancak ileriye doğru arar. Kelime sınırı davranışı vimode tarafından değiştirilir.

insert-last-word (M-_) Önceki girdi satırının son kelimesini (!$) girdi tamponuna ekler. Ayrıca bkz. copy-prev-word.

list-choices (M-^D) Tamamlama ve listeleme altında açıklandığı gibi tamamlama olasılıklarını listeler. Ayrıca bkz. delete-char-or-list-or-eof ve list-choices-raw.

list-choices-raw (^X-^D) list-choices gibidir, ancak kullanıcı tanımlı tamamlamaları yok sayar.

list-glob (^X-g, ^X-G) İmlecin solundaki glob şablonuyla (bkz. Dosya adı ikamesi) eşleşenleri (ls-F yerleşik komutu aracılığıyla) listeler.

list-or-eof (atanmamış) Boş bir satırda list-choices veya dosya sonu (end-of-file) işlemini gerçekleştirir. Ayrıca bkz. delete-char-or-list-or-eof.

magic-space (atanmamış) expand-history gibi geçerli satırdaki geçmiş ikamelerini genişletir ve bir boşluk ekler. magic-space, boşluk tuşuna atanacak şekilde tasarlanmıştır ancak varsayılan olarak atanmamıştır.

normalize-command (^X-?) Mevcut kelimeyi PATH içinde arar ve bulunursa bunu yürütülebilir dosyanın tam yoluyla değiştirir. Özel karakterler tırnak içine alınır. Takma adlar (aliases) genişletilir ve tırnak içine alınır, ancak takma adlar içindeki komutlar genişletilmez. Bu komut, komutları argüman olarak alan dbx ve sh -x gibi komutlarla kullanışlıdır.

normalize-path (^X-n, ^X-N) Mevcut kelimeyi symlinks kabuk değişkeninin expand ayarı altında açıklandığı gibi genişletir.

overwrite-mode (atanmamış) Ekleme (input) ve üzerine yazma (overwrite) modları arasında geçiş yapar.

run-fg-editor (M-^Z) Geçerli girdi satırını kaydeder ve ilk kelimesinin dosya adı kısmı editors kabuk değişkeninde bulunan durdurulmuş bir iş arar. Eğer editors ayarlanmamışsa, EDITOR çevre değişkeninin dosya adı kısmı (ayarlanmamışsa ed) ve VISUAL çevre değişkeni (ayarlanmamışsa vi) kullanılır. Böyle bir iş bulunursa, sanki fg %job yazılmış gibi yeniden başlatılır. Bu, bir düzenleyici ile kabuk arasında kolayca geçiş yapmak için kullanılır. Bazı insanlar bu komutu ^Z tuşuna atarlar, böylece bunu daha da kolay yapabilirler.

run-help (M-h, M-H) Tamamlama rutinleriyle aynı "geçerli komut" kavramını kullanarak geçerli komutla ilgili belgeleri arar ve yazdırır. Bir sayfalayıcı (pager) kullanma imkanı yoktur; run-help kısa yardım dosyaları için tasarlanmıştır. Özel takma ad helpcommand tanımlanmışsa, tek argüman olarak komut adıyla çalıştırılır. Aksi takdirde, belgeler HPATH çevre değişkeninde listelenen dizinlerden birinde bulunması gereken command.help, command.1, command.6, command.8 veya command adlı bir dosyada olmalıdır. Birden fazla yardım dosyası varsa yalnızca ilki yazdırılır.

self-insert-command (metin karakterleri) Ekleme (insert) modunda (varsayılan), yazılan karakteri girdi satırına imlecin altındaki karakterden sonra ekler. Üzerine yazma (overwrite) modunda, imlecin altındaki karakteri yazılan karakterle değiştirir. Girdi modu normalde satırlar arasında korunur, ancak her satırın başında düzenleyiciyi o moda sokmak için inputmode kabuk değişkeni insert veya overwrite olarak ayarlanabilir. Ayrıca bkz. overwrite-mode.

sequence-lead-in (ok öneki, meta öneki, ^X) Aşağıdaki karakterlerin çok tuşlu bir dizinin parçası olduğunu belirtir. Bir komutu çok tuşlu bir diziye atamak aslında iki atama oluşturur: ilk karakter sequence-lead-in'e ve tüm dizi komuta atanır. sequence-lead-in'e atanmış bir karakterle başlayan tüm diziler, başka bir komuta atanmadığı sürece etkin olarak undefined-key'e atanmış olur.

spell-line (M-$) spell-word gibi girdi tamponundaki her kelimenin yazımını düzeltmeye çalışır, ancak anahtarlar, ikameler ve benzerleriyle ilgili sorunları önlemek için ilk karakteri -, !, ^ veya % olan ya da \, * veya ? içeren kelimeleri yok sayar. Bkz. Yazım düzeltme.

spell-word (M-s, M-S) Mevcut kelimenin yazımını Yazım düzeltme altında açıklandığı gibi düzeltmeye çalışır. Bir yol adı gibi görünen bir kelimenin her bir bileşenini kontrol eder.

toggle-literal-history (M-r, M-R) Girdi tamponundaki geçmiş ikamelerini genişletir veya "daraltır" (genişletmeyi geri alır). Ayrıca bkz. expand-history ve autoexpand kabuk değişkeni.

undefined-key (atanmamış herhangi bir tuş) Bip sesi çıkarır.

up-history (yukarı ok, ^P) Geçmiş listesindeki önceki girdiyi girdi tamponuna kopyalar. histlit ayarlanmışsa, girdinin düz (literal) biçimini kullanır. Geçmiş listesinde yukarı doğru ilerlemek için tekrarlanabilir ve en üstte durur.

upcase-word (M-u, M-U) İmleçten mevcut kelimenin sonuna kadar olan karakterleri büyük harfe dönüştürür. Kelime sınırı davranışı vimode tarafından değiştirilir.

vi-beginning-of-next-word (atanmamış) Vi bir sonraki kelimenin başına gider. Kelime sınırı ve imleç davranışı vimode tarafından değiştirilir.

vi-eword (atanmamış) Vi mevcut kelimenin sonuna gider. Kelime sınırı davranışı vimode tarafından değiştirilir.

vi-search-back (?) Arama dizesi için (history-search-backward komutunda olduğu gibi bir glob şablonu olabilir) ? ile istemde bulunur, bunu arar ve girdi tamponuna kopyalar. Eşleşme bulunamazsa zil çalar. Return tuşuna basılması aramayı sonlandırır ve son eşleşmeyi girdi tamponunda bırakır. Escape tuşuna basılması aramayı sonlandırır ve eşleşmeyi yürütür. Yalnızca vi modu.

vi-search-fwd (/) vi-search-back gibidir, ancak ileriye doğru arar.

which-command (M-?) Girdi tamponunun ilk kelimesinde bir which işlemi (bkz. yerleşik komut açıklaması) gerçekleştirir.

yank-pop (M-y) Bir yank (yapıştırma) veya başka bir yank-pop komutunun hemen ardından yürütüldüğünde, yapıştırılan dizeyi killring (silme halkası) içindeki bir önceki dizeyle değiştirir. Bu aynı zamanda killring'i döndürme etkisine de sahiptir, böylece bu dize daha sonraki bir yank komutu tarafından en son silinen dize olarak kabul edilecektir. yank-pop komutunu tekrarlamak killring içinde istenen sayıda döngü yapacaktır.

Sözcük yapısı Kabuk, girdi satırlarını boşluk ve sekme (tab) karakterlerinde kelimelere ayırır. &, |, ;, <, >, ( ve ) özel karakterleri ile çift karakterli &&, ||, << ve >> ifadeleri, etraflarında boşluk olsun ya da olmasın her zaman ayrı birer kelimedir.

Kabuğun girdisi bir terminal olmadığında, # karakteri bir yorumun başlangıcı olarak kabul edilir. Her bir # ve göründüğü girdi satırının geri kalanı, daha sonraki ayrıştırmadan önce atılır.

Özel bir karakterin (boşluk veya sekme dahil) özel anlamına sahip olması engellenebilir ve önüne bir ters eğik çizgi (\) getirilerek veya tek ('), çift (") ya da ters (`) tırnak içine alınarak başka bir kelimenin parçası haline getirilebilir. Başka bir şekilde tırnak içine alınmadığında, önünde \ bulunan bir yeni satır karakteri bir boşluğa eşdeğerdir, ancak tırnak içinde bu dizi yeni bir satırla sonuçlanır.

Dahası, Geçmiş ikamesi hariç tüm İkameler (aşağıya bakın), içinde göründükleri dizeleri (veya dizelerin parçalarını) tek tırnak içine alarak ya da kritik karakter(ler)i (örneğin Değişken ikamesi için $ veya Komut ikamesi için sırasıyla `) \ ile kaçırarak engellenebilir. (Takma ad ikamesi de bir istisna değildir: tanımlanmış bir takma ada sahip bir kelimenin herhangi bir karakterini herhangi bir şekilde tırnak içine almak, takma adın ikame edilmesini önler. Bir takma adı tırnak içine almanın olağan yolu, önüne bir ters eğik çizgi getirmektir.) Geçmiş ikamesi ters eğik çizgilerle engellenir ancak tek tırnaklarla engellenmez. Çift veya ters tırnak içine alınan dizeler Değişken ikamesine ve Komut ikamesine tabi tutulur, ancak diğer ikameler engellenir.

Tek veya çift tırnak içindeki metin tek bir kelime (veya bir kelimenin parçası) haline gelir. Boşluklar ve sekmeler dahil bu dizelerdeki meta karakterler ayrı kelimeler oluşturmaz. Yalnızca tek bir özel durumda (aşağıdaki Komut ikamesine bakın) çift tırnaklı bir dize birden fazla kelimenin parçalarını üretebilir; tek tırnaklı dizeler bunu asla yapmaz. Ters tırnaklar özeldir: Komut ikamesine (q.v.) işaret ederler, bu da birden fazla kelimeyle sonuçlanabilir.

Karmaşık dizeleri tırnak içine almak, özellikle de kendileri tırnak karakterleri içeren dizeleri tırnak içine almak kafa karıştırıcı olabilir. Tırnakların insan yazısında olduğu gibi kullanılmak zorunda olmadığını unutmayın! Tüm bir dizeyi değil, yalnızca tizeyi tırnak içine alması gereken kısımları, uygunsa farklı tırnak tipleri kullanarak tırnak içine almak daha kolay olabilir.

backslash_quote kabuk değişkeni (q.v.), ters eğik çizgilerin her zaman \, ' ve " işaretlerini kaçırmasını sağlamak için ayarlanabilir. (+) Bu, karmaşık tırnak içine alma işlemlerini kolaylaştırabilir ancak csh(1) betiklerinde söz dizimi hatalarına neden olabilir.

İkameler Şimdi kabuğun girdi üzerinde gerçekleştirdiği çeşitli dönüşümleri gerçekleşme sırasına göre açıklayacağız. Geçerken ilgili veri yapılarını ve bunları etkileyen komutları ve değişkenleri not edeceğiz. İkamelerin, Sözcük yapısı altında açıklandığı gibi tırnak içine alınarak önlenebileceğini unutmayın.

Geçmiş ikamesi Terminalden girilen her bir komut veya "olay" (event) geçmiş listesinde saklanır. Önceki komut her zaman kaydedilir ve history kabuk değişkeni, o kadar sayıda komut kaydetmek üzere bir sayıya ayarlanabilir. histdup kabuk değişkeni, yinelenen olayları veya ardışık yinelenen olayları kaydetmeyecek şekilde ayarlanabilir.

Kaydedilen komutlar 1'den başlayarak sırayla numaralandırılır ve zaman damgasıyla işaretlenir. Olay numaralarını kullanmak genellikle gerekli değildir, ancak prompt kabuk değişkenine bir ! yerleştirilerek mevcut olay numarası istemin bir parçası haline getirilebilir.

Kabuk aslında geçmişi genişletilmiş ve düz (literal - genişletilmemiş) biçimlerde kaydeder. Eğer histlit kabuk değişkeni ayarlanmışsa, geçmişi görüntüleyen ve saklayan komutlar düz biçimi kullanır.

history yerleşik komutu, geçmiş listesini istediğiniz zaman yazdırabilir, bir dosyada saklayabilir, geri yükleyebilir ve temizleyebilir; savehist ve histfile kabuk değişkenleri ise geçmiş listesini çıkışta otomatik olarak kaydedecek ve girişte geri yükleyecek şekilde ayarlanabilir.

Geçmiş ikameleri, geçmiş listesindeki kelimeleri girdi akışına dahil ederek komutları tekrarlamayı, geçerli komutta önceki bir komutun argümanlarını tekrarlamayı veya önceki komuttaki yazım hatalarını az yazarak ve yüksek bir güven derecesiyle düzeltmeyi kolaylaştırır.

Geçmiş ikameleri ! karakteriyle başlar. Girdi akışının herhangi bir yerinde başlayabilirler, ancak iç içe geçmezler. Özel anlamını önlemek için ! işaretinin önüne bir \ getirilebilir; kolaylık sağlamak amacıyla, arkasından boşluk, sekme, yeni satır, = veya ( geldiğinde ! işareti değiştirilmeden aktarılır. Geçmiş ikameleri, bir girdi satırı ^ ile başladığında da gerçekleşir. Bu özel kısaltma daha sonra açıklanacaktır. Geçmiş ikamesini işaret etmek için kullanılan karakterler (! ve ^) histchars kabuk değişkeni ayarlanarak değiştirilebilir. Geçmiş ikamesi içeren herhangi bir girdi satırı yürütülmeden önce yazdırılır.

Bir geçmiş ikamesi, kelimelerin hangi olaydan alınacağını gösteren bir "olay belirtimi" (event specification), seçilen olaydan belirli kelimeleri seçen bir "kelime belirteci" (word designator) ve/veya seçilen kelimeleri manipüle eden bir "değiştirici" (modifier) içerebilir.

Bir olay belirtimi şunlar olabilir:

n Belirli bir olaya atıfta bulunan bir sayı

  • -n: Geçerli olaydan n önceki olaya atıfta bulunan bir kaydırma değeri (offset)

Geçerli olay. Bu, özyineleme kontrolünün olmadığı csh(1) içinde dikkatli kullanılmalıdır. tcsh 10 düzeyde özyinelemeye izin verir. (+)

! Önceki olay (-1 ile eşdeğerdir) s İlk kelimesi s dizesiyle başlayan en son olay ?s? s dizesini içeren en son olay. İkinci ?, hemen ardından yeni bir satır geliyorsa atlanabilir.

Örneğin, birinin geçmiş listesinden alınan şu bölüme bakın:

9 8:30 nroff -man wumpus.man 10 8:31 cp wumpus.man wumpus.man.old 11 8:36 vi wumpus.man 12 8:37 diff wumpus.man.old wumpus.man

Komutlar, olay numaraları ve zaman damgalarıyla gösterilmektedir. Henüz yazmadığımız geçerli olay, 13. olaydır. !11 ve !-2 ifadeleri 11. olaya atıfta bulunur. !! ifadesi önceki olay olan 12'ye atıfta bulunur. !! ifadesi, ardından : gelirse ! olarak kısaltılabilir (: aşağıda açıklanmıştır). !n ifadesi, n ile başlayan 9. olaya atıfta bulunur. !?old? ifadesi de old içeren 12. olaya atıfta bulunur. Kelime belirteçleri veya değiştiriciler olmadan, geçmiş referansları basitçe tüm olaya genişletilir; bu nedenle kopyalama komutunu yeniden çalıştırmak için !cp veya diff çıktısı ekranın üstünden kaydıysa !!|more yazabiliriz.

Geçmiş referansları gerekirse süslü parantezlerle etrafındaki metinden yalıtılabilir. Örneğin, !vdoc ifadesi vdoc ile başlayan bir komut arar ve bu örnekte bulamaz, ancak !{v}doc ifadesi net bir şekilde vi wumpus.mandoc olarak genişletilir. Süslü parantezler içinde bile geçmiş ikameleri iç içe geçmez.

(+) csh(1), örneğin !3d ifadesini sonuna d harfi eklenmiş 3. olay olarak genişletirken, tcsh bunu 3d ile başlayan son olay olarak genişletir; yalnızca tamamen sayısal olan argümanlar olay numarası olarak kabul edilir. Bu, sayılarla başlayan olayların geri çağrılmasını mümkün kılar. !3d ifadesini csh(1)'de olduğu gibi genişletmek için !{3}d deyin.

Bir olaydan kelimeler seçmek için olay belirtiminin ardından bir : ve istenen kelimeler için bir belirteç getirebiliriz. Bir girdi satırının kelimeleri 0'dan başlayarak numaralandırılır, ilk (genellikle komut) kelime 0, ikinci kelime (ilk argüman) 1, vb. olur. Temel kelime belirteçleri şunlardır:

0 İlk (komut) kelime n n. argüman ^ İlk argüman, 1 ile eşdeğerdir $ Son argüman % Bir ?s? aramasıyla eşleşen kelime x-y Bir kelime aralığı

  • -y: 0-y ile eşdeğerdir
  •  `^-$` ile eşdeğerdir, ancak olay yalnızca 1 kelime içeriyorsa hiçbir şey döndürmez

x* x-$ ile eşdeğerdir x- x* ile eşdeğerdir, ancak son kelimeyi ($) hariç tutar

Seçilen kelimeler komut satırına tek birer boşlukla ayrılarak eklenir. Örneğin, önceki örnekteki diff komutu diff !!:1.old !!:1 şeklinde yazılmış olabilir (önceki olaydan ilk argümanı seçmek için :1 kullanılarak) veya cp komutundaki argümanları seçip yerlerini değiştirmek için diff !-2:2 !-2:1 yazılmış olabilir. diff komutunun sırasını umursamasaydık, diff !-2:1-2 veya basitçe diff !-2:* diyebilirdik. cp komutu, geçerli olaya atıfta bulunmak için # kullanılarak cp wumpus.man !#:1.old şeklinde yazılabilirdi. !n:-hurkle.man komutu, nroff komutundan ilk iki kelimeyi yeniden kullanarak nroff -man hurkle.man demek için kullanılabilirdi.

Eğer argüman seçici ^, $, *, % veya - ile başlıyorsa, olay belirtimini kelime belirtecinden ayıran : işareti atlanabilir. Örneğin, diff komutumuz diff !!^.old !!^ veya eşdeğer olarak diff !!$.old !!$ olabilirdi. Ancak !! ifadesi ! olarak kısaltılırsa, - ile başlayan bir argüman seçici bir olay belirtimi olarak yorumlanacaktır.

Bir geçmiş referansının kelime belirteci olabilir ancak olay belirtimi olmayabilir. Bu durumda bir önceki komuta atıfta bulunur. diff örneğimize devam edersek, basitçe diff !^.old !^ veya argümanları ters sırada almak için sadece diff !* diyebilirdik.

Bir geçmiş referansındaki kelime veya kelimeler, arkasından her birinin önüne : getirilerek bir veya daha fazla değiştirici eklenerek düzenlenebilir veya "değiştirilebilir":

h Sondaki yol adı bileşenini kaldırarak baş (head) kısmı bırakır. t Baştaki tüm yol adı bileşenlerini kaldırarak kuyruk (tail) kısmı bırakır. r Bir dosya adı uzantısını .xxx kaldırarak kök adı (root name) bırakır. e Uzantı hariç her şeyi kaldırır. u İlk küçük harfi büyük harfe dönüştürür. l İlk büyük harfi küçük harfe dönüştürür. s/l/r/ l yerine r ikame eder. l, aynı adlı ed(1) komutundaki gibi bir düzenli ifade (regular expression) değil, r gibi basit bir dizedir. / yerine herhangi bir karakter sınırlayıcı olarak kullanılabilir; l ve r içindeki sınırlayıcıyı kaçırmak için \ kullanılabilir. r içindeki & karakteri l ile değiştirilir; \ ayrıca & işaretini de kaçırır. l boş ise (""), önceki bir ikameden gelen l veya önceki bir aramadan gelen s ya da olay belirtimindeki olay numarası kullanılır. Sondaki sınırlayıcı, hemen ardından yeni satır geliyorsa atlanabilir. & Önceki ikameyi tekrarlar. g Aşağıdaki değiştiriciyi her kelimeye bir kez uygular. a (+) Aşağıdaki değiştiriciyi tek bir kelimeye mümkün olduğunca çok kez uygular. a ve g, bir değiştiriciyi küresel olarak uygulamak için birlikte kullanılabilir. s değiştiricisi ile yalnızca orijinal kelimenin içerdiği şablonlar ikame edilir, herhangi bir ikame sonucunu içeren şablonlar ikame edilmez. p Yeni komut satırını yazdırır ancak yürütmez. q İkame edilen kelimeleri tırnak içine alarak daha sonraki ikameleri engeller. x q gibidir, ancak boşluklarda, sekmelerde ve yeni satırlarda kelimelere ayırır.

Değiştiriciler yalnızca ilk değiştirilebilir kelimeye uygulanır (g kullanılmadığı sürece). Hiçbir kelimenin değiştirilemez olması bir hatadır. Örneğin, diff komutu, aynı satırdaki ilk argümandan (!#^) .old kısmını kaldırmak için :r kullanılarak diff wumpus.man.old !#^:r şeklinde yazılmış olabilir. echo hello out there yazdıktan sonra, hello kelimesinin ilk harfini büyük yapmak için echo !*:u, bunu yüksek sesle söylemek için echo !*:au veya gerçekten bağırmak için echo !*:agu diyebiliriz. mail -s "I forgot my password" rot komutunu, root yazımını düzeltmek için !:s/rot/root ile takip edebiliriz (ancak farklı bir yaklaşım için bkz. Yazım düzeltme).

İkameler için özel bir kısaltma vardır. Girdi satırındaki ilk karakter ^ olduğunda, !:s^ ifadesine eşdeğerdir. Böylece önceki örnekteki yazım düzeltmesini yapmak için ^rot^root diyebilirdik. Bu, açıkça ! ile başlamayan tek geçmiş ikamesidir.

(+) csh içinde, her bir geçmiş veya değişken genişletmesine yalnızca bir değiştirici uygulanabilir. tcsh'te ise birden fazlası kullanılabilir, örneğin:

% mv wumpus.man /usr/man/man1/wumpus.1 % man !$:t:r man wumpus

csh'te sonuç wumpus.1:r olurdu. Bir iki noktadan sonra gelen bir ikameyi, iki noktadan süslü parantezlerle yalıtmak gerekebilir:

mv a.out /usr/games/wumpus setenv PATH !$:h:$PATH Bad ! modifier: $. setenv PATH !{-2$:h}:$PATH setenv PATH /usr/games:/bin:/usr/bin:.

İlk deneme csh'te başarılı olurdu ancak tcsh'te başarısız olur, çünkü tcsh ikinci iki noktadan sonra $ yerine başka bir değiştirici bekler.

Son olarak, geçmişe az önce açıklanan ikamelerin yanı sıra düzenleyici aracılığıyla da erişilebilir. up-history ve down-history, history-search-backward ve -forward, i-search-back ve -fwd, vi-search-back ve -fwd, copy-prev-word ve insert-last-word düzenleyici komutları geçmiş listesindeki olayları arar ve bunları girdi tamponuna kopyalar. toggle-literal-history düzenleyici komutu, girdi tamponundaki geçmiş satırlarının genişletilmiş ve düz (literal) biçimleri arasında geçiş yapar. expand-history ve expand-line sırasıyla geçerli kelimedeki ve tüm girdi tamponundaki geçmiş ikamelerini genişletir.

Takma ad ikamesi (Alias substitution) Kabuk, alias ve unalias komutlarıyla ayarlanabilen, kaldırılabilen ve yazdırılabilen bir takma adlar listesi tutar. Bir komut satırı basit komutlara ayrıştırıldıktan sonra (bkz. Komutlar), her bir komutun ilk kelimesi, soldan sağa doğru kontrol edilerek bir takma adı olup olmadığına bakılır. Varsa, ilk kelime takma adla değiştirilir. Eğer takma ad bir geçmiş referansı içeriyorsa, orijinal komut bir önceki girdi satırıymış gibi Geçmiş ikamesine (q.v.) tabi tutulur. Eğer takma ad bir geçmiş referansı içermiyorsa, argüman listesine dokunulmaz.

Böylece ls için takma ad ls -l ise ls /usr komutu, buradaki argüman listesine dokunulmaksızın ls -l /usr haline gelir. lookup için takma ad grep !^ /etc/passwd ise lookup bill komutu grep bill /etc/passwd haline gelir. Takma adlar, ayrıştırıcı meta söz dizimini tanıtmak için kullanılabilir. Örneğin, alias print 'pr \!* | lpr' ifadesi, argümanlarını pr(1) ile satır yazıcısına gönderen bir "komut" (print) tanımlar.

Takma ad ikamesi, komutun ilk kelimesinin artık bir takma adı kalmayana kadar tekrarlanır. Bir takma ad ikamesi ilk kelimeyi değiştirmezse (önceki örnekte olduğu gibi), bir döngüyü önlemek için işaretlenir. Diğer döngüler algılanır ve bir hataya neden olur.

Bazı takma adlara kabuk tarafından atıfta bulunulur; bkz. Özel takma adlar.

Değişken ikamesi (Variable substitution) Kabuk, her birinin değeri sıfır veya daha fazla kelimeden oluşan bir liste olan bir değişkenler listesi tutar. Kabuk değişkenlerinin değerleri set ve unset komutlarıyla görüntülenebilir ve değiştirilebilir. Sistem, kendi "çevre" (environment) değişkenleri listesini tutar. Bunlar printenv, setenv ve unsetenv ile görüntülenebilir ve değiştirilebilir.

(+) Değişkenler set -r (q.v.) ile salt okunur hale getirilebilir. Salt okunur değişkenler değiştirilemez veya kaldırılamaz; bunu yapmaya çalışmak bir hataya neden olur. Bir kez salt okunur yapıldıktan sonra, bir değişken yazılabilir hale getirilemez, bu nedenle set -r dikkatli kullanılmalıdır. Çevre değişkenleri salt okunur yapılamaz.

Bazı değişkenler kabuk tarafından ayarlanır veya kabuk tarafından bunlara atıfta bulunulur. Örneğin, argv değişkeni kabuğun argüman listesinin bir görüntüsüdür ve bu değişkenin değerinin kelimelerine özel yollarla atıfta bulunulur. Kabuk tarafından atıfta bulunulan değişkenlerden bazıları iki durumlu anahtarlardır (toggles); kabuk bunların değerinin ne olduğuyla ilgilenmez, yalnızca ayarlanıp ayarlanmadığına bakar. Örneğin, verbose değişkeni, komut girdisinin yankılanmasına neden olan bir anahtardır. -v komut satırı seçeneği bu değişkeni ayarlar. Özel kabuk değişkenleri, kabuk tarafından atıfta bulunulan tüm değişkenleri listeler.

Diğer işlemler değişkenleri sayısal olarak ele alır. @ komutu sayısal hesaplamaların yapılmasını ve sonucun bir değişkene atanmasını sağlar. Ancak değişken değerleri her zaman (sıfır veya daha fazla) dize olarak temsil edilir. Sayısal işlemler amacıyla, boş dize sıfır olarak kabul edilir ve çok kelimeli değerlerin ikinci ve sonraki kelimeleri yok sayır.

Girdi satırı takma adla değiştirilip ayrıştırıldıktan sonra ve her bir komut yürütülmeden önce, $ karakterleriyle anahtarlanan değişken ikamesi gerçekleştirilir. Bu genişletme, $ işaretinin önüne bir \ getirilerek önlenebilir; ancak çift tırnak (") içinde her zaman gerçekleşir ve tek tırnak (') içinde asla gerçekleşmez. Ters tırnak (`) ile tırnak içine alınan dizeler daha sonra yorumlanır (aşağıdaki Komut ikamesine bakın), bu nedenle orada $ ikamesi daha sonraya kadar (eğer gerçekleşirse) gerçekleşmez. Arkasından boşluk, sekme veya satır sonu geliyorsa $ işareti değiştirilmeden aktarılır.

Girdi/çıktı yönlendirmeleri, değişken genişletilmesinden önce algılanır ve ayrı olarak değişken genişletilmesine tabi tutulur. Aksi takdirde, komut adı ve tüm argüman listesi birlikte genişletilir. Dolayısıyla, (bu noktaya kadar) ilk (komut) kelimenin birden fazla kelime üretmesi mümkündür; bunlardan ilki komut adı olur ve geri kalanı argümanlar haline gelir.

Çift tırnak (") içine alınmadıkça veya :q değiştiricisi verilmedikçe, değişken ikamesinin sonuçları en nihayetinde komut ve dosya adı ikamesine tabi tutulabilir. Çift tırnak (") içinde, değeri birden fazla kelimeden oluşan bir değişken, değişkenin değerinin kelimeleri boşluklarla ayrılmış olarak tek bir kelimeye (veya bir kelimenin bir kısmına) genişler. Bir ikameye :q değiştiricisi uygulandığında, değişken, her bir kelime bir boşlukla ayrılmış ve daha sonraki komut veya dosya adı ikamesini önlemek için tırnak içine alınmış olarak birden fazla kelimeye genişler.

Kabuk girdisine değişken değerlerini dahil etmek için aşağıdaki metadiziler sağlanmıştır. Belirtilenler dışında, ayarlanmamış bir değişkene atıfta bulunmak bir hatadır.

$name ${name} name değişkeninin değerinin kelimelerini, her biri bir boşlukla ayrılmış olarak ikame eder. Süslü parantezler, name değişkenini aksi takdirde onun bir parçası olacak olan sonraki karakterlerden yalıtır. Kabuk değişkenleri, bir harfle başlayan harf ve rakamlardan oluşan isimlere sahiptir. Alt çizgi karakteri bir harf olarak kabul edilir. Eğer name bir kabuk değişkeni değilse, ancak çevrede (environment) ayarlanmışsa, o değer döndürülür (ancak aşağıda verilen diğer bazı biçimler bu durumda mevcut değildir).

$name[selector] ${name[selector]} name değerinden yalnızca seçilen kelimeleri ikame eder. Seçici, $ ikamesine tabi tutulur ve tek bir sayıdan veya - ile ayrılmış iki sayıdan oluşabilir. Bir değişkenin değerinin ilk kelimesi 1 olarak numaralandırılır. Bir aralığın ilk sayısı atlanırsa varsayılan olarak 1 alınır. Bir aralığın son üyesi atlanırsa varsayılan olarak $#name alınır. Seçici * tüm kelimeleri seçer. İkinci argüman atlanmış veya aralık içindeyse bir aralığın boş olması bir hata değildir.

$0 Komut girdisinin okunduğu dosyanın adını ikame eder. Ad bilinmiyorsa bir hata oluşur.

$number ${number} $argv[number] ifadesine eşdeğerdir.

$* $argv ifadesine eşdeğerdir, bu da $argv[*] ifadesine eşdeğerdir.

Geçmiş ikamesi altında açıklanan : değiştiricileri, :p hariç, yukarıdaki ikamelere uygulanabilir. Birden fazlası kullanılabilir. (+) Değişken ikamesini Geçmiş ikamesinde (q.v.) olduğu gibi düz bir iki noktadan yalıtmak için süslü parantezler gerekebilir; herhangi bir değiştirici süslü parantezler içinde görünmelidir.

Aşağıdaki ikameler : değiştiricileriyle değiştirilemez.

$?name ${?name} name ayarlanmışsa 1 dizesini, ayarlanmamışsa 0 dizesini ikame eder.

$?0 Geçerli girdi dosyasının adı biliniyorsa 1 dizesini, bilinmiyorsa 0 dizesini ikame eder. Etkileşimli kabuklarda her zaman 0dır.

$#name ${#name} name içindeki kelime sayısını ikame eder.

$# $#argv ifadesine eşdeğerdir. (+)

$%name ${%name} name içindeki karakter sayısını ikame eder. (+)

$%number ${%number} $argv[number] içindeki karakter sayısını ikame eder. (+)

$? $status ifadesine eşdeğerdir. (+)

$$ (Ana) kabuğun (ondalık) süreç numarasını ikame eder.

$! Bu kabuk tarafından başlatılan son arka plan sürecinin (ondalık) süreç numarasını ikame eder. (+)

$_ Yürütülen son komutun komut satırını ikame eder. (+)

$< Standart girdiden bir satırı, daha sonra başka bir yorumlama yapmadan ikame eder. Bir kabuk betiğinde klavyeden okuma yapmak için kullanılabilir. (+) csh her zaman < işaretini sank $<:q ifadesine eşdeğer gibi tırnak içine alırken, tcsh bunu yapmaz. Dahası, tcsh bir satırın yazılmasını beklerken kullanıcı, satırın ikame edileceği diziyi kesmek için bir kesme (interrupt) yazabilir, ancak csh buna izin vermez.

Düzenleyici komutu expand-variables (normalde ^X-$ tuşuna atanmıştır), bireysel değişkenleri etkileşimli olarak genişletmek için kullanılabilir.

Komut, dosya adı ve dizin yığını ikamesi (Command, filename and directory stack substitution) Kalan ikameler, yerleşik komutların argümanlarına seçici olarak uygulanır. Bu, ifadelerin değerlendirilmeyen kısımlarının bu genişletmelere tabi tutulmadığı anlamına gelir. Kabuğa dahil olmayan komutlar için, komut adı argüman listesinden ayrı olarak ikame edilir. Bu işlem çok geç, girdi-çıktı yönlendirmesi gerçekleştirildikten sonra ve ana kabuğun bir alt sürecinde gerçekleşir.

Komut ikamesi (Command substitution) Komut ikamesi, ters tırnak (`) içine alınmış bir komutla belirtilir. Böyle bir komutun çıktısı boşluklarda, sekmelerde ve yeni satırlarda ayrı kelimelere ayrılır ve boş kelimeler atılır. Çıktı değişken ve komut ikamesine tabi tutulur ve orijinal dize yerine yerleştirilir.

Çift tırnak (") içindeki komut ikameleri boşlukları ve sekmeleri korur; yalnızca yeni satırlar yeni kelimeleri zorunlu kılar. Tek bir sondaki yeni satır hiçbir durumda yeni bir kelimeyi zorunlu kılmaz. Bu nedenle, bir komut ikamesinin, komut tam bir satır çıkış yapsa bile, bir kelimenin yalnızca bir kısmını vermesi mümkündür.

Varsayılan olarak, sürüm 6.12'den beri kabuk, komuttaki tüm yeni satır ve satır başı (carriage return) karakterlerini boşluklarla değiştirir. Bu durum csubstnonl değişkeni kaldırılarak kapatılırsa, yeni satırlar komutları her zamanki gibi ayırır.

Dosya adı ikamesi (Filename substitution) Bir kelime *, ?, [ veya { karakterlerinden herhangi birini içeriyorsa veya ~ karakteriyle başlıyorsa, "globbing" olarak da bilinen dosya adı ikamesi için bir adaydır. Bu kelime daha sonra bir şablon ("glob-pattern") olarak kabul edilir ve şablonla eşleşen dosya adlarının alfabetik olarak sıralanmış bir listesiyle değiştirilir.

Dosya adlarını eşleştirirken, bir dosya adının başındaki veya hemen bir / işaretini takip eden . karakterinin yanı sıra / karakteri de açıkça eşleştirilmelidir (globdot veya globstar ya da her ikisi birden ayarlanmadıkça(+)). * karakteri, boş dize dahil herhangi bir karakter dizisiyle eşleşir. ? karakteri herhangi bir tek karakterle eşleşir. [...] dizisi, içine alınan karakterlerden herhangi biriyle eşleşir. [...] içinde, - ile ayrılmış bir karakter çifti, sözlüksel olarak ikisi arasındaki herhangi bir karakterle eşleşir.

(+) Bazı glob şablonları olumsuzlanabilir: [^...] dizisi, parantez içindeki karakterler ve/veya karakter aralıkları tarafından belirtilmeyen herhangi bir tek karakterle eşleşir.

Tüm bir glob şablonu ^ ile de olumsuzlanabilir:

echo * bang crash crunch ouch echo ^cr* bang ouch

?, * veya [] kullanmayan veya {} ya da ~ (aşağıya bakın) kullanan glob şablonları doğru şekilde olumsuzlanmaz.

a{b,c,d}e meta gösterimi, abe ace ade için bir kısaltmadır. Soldan sağa sıra korunur: /usr/source/s1/{oldls,ls}.c ifadesi /usr/source/s1/oldls.c /usr/source/s1/ls.c olarak genişler. Eşleşmelerin sonuçları, bu sırayı korumak için düşük bir düzeyde ayrı ayrı sıralanır: ../{memo,*box} ifadesi ../memo ../box ../mbox olarak genişleyebilir. ( memo kelimesinin *box eşleştirme sonuçlarıyla birlikte sıralanmadığına dikkat edin.) Bu yapının var olmayan dosyalara genişlemesi bir hata değildir, ancak genişletilmiş listenin geçirildiği bir komuttan hata almak mümkündür. Bu yapı iç içe geçebilir. Özel bir durum olarak {, } ve {} kelimeleri dokunulmadan aktarılır.

Bir dosya adının başındaki ~ karakteri ev dizinlerine atıfta bulunur. Tek başına durduğunda, yani ~, home kabuk değişkeninin değerinde yansıtıldığı gibi çağıranın ev dizinine genişler. Arkasından harflerden, rakamlardan ve - karakterlerinden oluşan bir isim geldiğinde, kabuk bu isme sahip bir kullanıcıyı arar ve onun ev dizinini ikame eder; böylece ~ken ifadesi /usr/ken olarak ve ~ken/chmach ifadesi /usr/ken/chmach olarak genişleyebilir. Eğer ~ karakterini bir harf veya / dışında bir karakter takip ediyorsa veya bir kelimenin başlangıcından başka bir yerde görünüyorsa, dokunulmadan bırakılır. Bu nedenle setenv MANPATH /usr/man:/usr/local/man:~/lib/man gibi bir komut, umulduğu gibi ev dizini ikamesi yapmaz.

*, ?, [ veya ~ içeren bir glob şablonunun, ^ ile veya olmadan, hiçbir dosyayla eşleşmemesi bir hatadır. Ancak, bir glob şablonları listesindeki yalnızca bir şablonun bir dosyayla eşleşmesi yeterlidir (böylece, örneğin rm *.a *.c *.o komutu yalnızca geçerli dizinde .a, .c veya .o ile biten hiçbir dosya yoksa başarısız olur) ve nonomatch kabuk değişkeni ayarlanmışsa, hiçbir şeyle eşleşmeyen bir şablon (veya şablon listesi) bir hataya neden olmak yerine değiştirilmeden bırakılır.

globstar kabuk değişkeni, ** veya *** işaretlerinin, / dahil herhangi bir karakter dizisiyle eşleşen ve mevcut herhangi bir alt dizini yinelemeli (recursive) olarak tarayan bir dosya glob şablonu olmasına izin verecek şekilde ayarlanabilir. Örneğin, ls **.c geçerli dizin ağacındaki tüm .c dosyalarını listeleyecektir. Tek başına kullanılırsa, sıfır veya daha fazla alt dizinle eşleşir (örneğin, ls /usr/include/**/time.h ifadesi /usr/include dizin ağacında adı time.h olan tüm dosyaları listeleyecektir; ls /usr/include/**time.h ifadesi /usr/include dizin ağacında time.h ile biten tüm dosyalarla eşleşecektir; ve ls /usr/include/**time**.h ifadesi, alt dizin adında veya dosya adının kendisinde time geçen tüm .h dosyalarıyla eşleşecektir). Yineleme ile ilgili sorunları önlemek için, ** glob şablonu bir dizin içeren bir sembolik bağın (symbolic link) içine inmeyecektir. Bunu geçersiz kılmak için *** kullanın. (+)

noglob kabuk değişkeni dosya adı ikamesini önlemek için ayarlanabilir ve normalde ^X-* tuşuna atanan expand-glob düzenleyici komutu, tek tek dosya adı ikamelerini etkileşimli olarak genişletmek için kullanılabilir.

Dizin yığını ikamesi (Directory stack substitution) (+) Dizin yığını, pushd, popd ve dirs yerleşik komutları (q.v.) tarafından kullanılan, sıfırdan başlayarak numaralandırılmış bir dizinler listesidir. dirs dizin yığınını istediğiniz zaman yazdırabilir, bir dosyada saklayabilir, geri yükleyebilir ve temizleyebilir; savedirs ve dirsfile kabuk değişkenleri ise çıkışta dizin yığınını otomatik olarak kaydedecek ve girişte geri yükleyecek şekilde ayarlanabilir. dirstack kabuk değişkeni dizin yığınını görmek için incelenebilir ve dizin yığınına rastgele dizinler koymak için ayarlanabilir.

= karakterini takip eden bir veya daha fazla rakam, dizin yığınındaki bir girdiye genişler. Özel durum olan =-, yığındaki son dizine genişler. Örneğin,

dirs -v 0 /usr/bin 1 /usr/spool/uucp 2 /usr/accts/sys echo =1 /usr/spool/uucp echo =0/calendar /usr/bin/calendar echo =- /usr/accts/sys

noglob ve nonomatch kabuk değişkenleri ile expand-glob düzenleyici komutu, dosya adının yanı sıra dizin yığını ikamelerine de uygulanır.

Diğer ikameler (Other substitutions) (+) Dosya adlarıyla ilgili, tam olarak yukarıdakilerle ilgili olmayan ancak eksiksiz olması açısından burada bahsedilen birkaç dönüşüm daha vardır. symlinks değişkeni (q.v.) expand olarak ayarlandığında herhangi bir dosya adı tam bir yola genişletilebilir. Tırnak içine almak bu genişletmeyi önler ve normalize-path düzenleyici komutu bunu talep üzerine yapar. normalize-command düzenleyici komutu, PATH içindeki komutları talep üzerine tam yollara genişletir. Son olarak, cd ve pushd - işaretini eski çalışma dizini olarak yorumlar (kabuk değişkeni owd ile eşdeğerdir). Bu hiç de bir ikame değildir, ancak yalnızca bu komutlar tarafından tanınan bir kısaltmadır. Yine de, bu da tırnak içine alınarak önlenebilir.

Komutlar (Commands) Sonraki üç bölüm kabuğun komutları nasıl yürüttüğünü ve girdi ve çıktılarıyla nasıl ilgilendiğini açıklar.

Basit komutlar, boru hatları ve diziler (Simple commands, pipelines and sequences) Basit bir komut, ilki yürütülecek komutu belirten bir kelimeler dizisidir. | karakterleriyle birleştirilen bir dizi basit komut bir boru hattı (pipeline) oluşturur. Bir boru hattındaki her bir komutun çıktısı bir sonrakinin girdisine bağlanır.

Basit komutlar ve boru hatları ; ile diziler halinde birleştirilebilir ve sırayla yürütülür. Komutlar ve boru hatları, C dilinde olduğu gibi, ikincisinin sırasıyla yalnızca ilki başarısız olduğunda veya başarılı olduğunda yürütüleceğini belirtmek üzere || veya && ile diziler halinde de birleştirilebilir.

Basit bir komut, boru hattı veya dizi, bir boru hattının veya dizinin bir bileşeni olabilen basit bir komut oluşturmak üzere parantez () içine alınabilir. Bir komut, boru hattı veya dizi, sonuna & getirilerek sonlanmasını beklemeden yürütülebilir.

Yerleşik ve yerleşik olmayan komutların yürütülmesi (Builtin and non-builtin command execution) Yerleşik komutlar kabuk içinde yürütülür. Sonuncusu hariç bir boru hattının herhangi bir bileşeni yerleşik bir komut ise, boru hattı bir alt kabukta (subshell) yürütülür.

Parantez içindeki komutlar her zaman bir alt kabukta yürütülür.

(cd; pwd); pwd

böylece ev dizinini yazdırır ve sizi bulunduğunuz yerde bırakırken (bunu ev dizininden sonra yazdırır),

cd; pwd

sizi ev dizininde bırakır. Parantez içindeki komutlar çoğunlukla cd komutunun geçerli kabuğu etkilemesini önlemek için kullanılır.

Yürütülecek bir komutun yerleşik bir komut olmadığı anlaşıldığında kabuk, komutu execve(2) aracılığıyla yürütmeye çalışır. path değişkenindeki her bir kelime, kabuğun komutu arayacağı bir dizini belirtir. Kabuğa -f seçeneği verilmemişse kabuk, bu dizinlerdeki isimleri dahili bir tabloya karma hale getirir (hash), böylece execve(2) işlemini yalnızca komutun orada bulunma olasılığı olan bir dizinde dener. Bu, arama yolunda çok sayıda dizin bulunduğunda komut konumlandırmayı büyük ölçüde hızlandırır. Bu karma (hashing) mekanizması şu durumlarda kullanılmaz:

  1. Karma işlemi unhash aracılığıyla açıkça kapatılmışsa.
  2. Kabuğa -f argümanı verilmişse.
  3. path vektörünün / ile başlamayan her bir dizin bileşeni için.
  4. Komut bir / içeriyorsa.

Yukarıdaki dört durumda kabuk, path vektörünün her bir bileşenini verilen komut adıyla birleştirerek bir dosyanın yol adını oluşturur ve ardından bunu yürütmeyi dener. Yürütme başarılı olursa arama durur.

Dosya yürütme izinlerine sahipse ancak sistem için bir yürütülebilir dosya değilse (yani, ne yürütülebilir bir ikili ne de yorumlayıcısını belirten bir betikse), o zaman kabuk komutları içeren bir dosya olduğu varsayılır ve bunu okumak için yeni bir kabuk oluşturulur. shell özel takma adı, kabuğun kendisinden başka bir yorumlayıcı belirtmek için ayarlanabilir.

#! betik yorumlayıcı kuralını anlamayan sistemlerde, kabuk bunu taklit edecek şekilde derlenebilir; bkz. version kabuk değişkeni. Eğer öyleyse, kabuk dosyanın ilk satırını kontrol ederek #!interpreter arg ... biçiminde olup olmadığına bakar. Eğer öyleyse, kabuk verilen argümanlarla interpreter'ı başlatır ve dosyayı standart girdiden ona besler.

Girdi/Çıktı (Input/output) Bir komutun standart girdisi ve standart çıktısı aşağıdaki söz dizimiyle yönlendirilebilir:

< name Standart girdi olarak name dosyasını (önce değişken, komut ve dosya adı genişletilmiş olarak) açar.

<< word word ile birebir aynı olan bir satıra kadar kabuk girdisini okur. word değişken, dosya adı veya komut ikamesine tabi tutulmaz ve bu girdi satırında herhangi bir ikame yapılmadan önce her girdi satırı word ile karşılaştırılır. word içinde bir tırnak \, ", ' veya ` görünmedikçe, aradaki satırlarda değişken ve komut ikamesi gerçekleştirilir ve \ işaretinin $, \ ve ` işaretlerini kaçırmasına izin verilir. İkame edilen komutların tüm boşlukları, sekmeleri ve yeni satırları korunur, ancak sondaki son yeni satır atılır. Elde edilen metin, standart girdi olarak komuta verilen isimsiz geçici bir dosyaya yerleştirilir.

name ! name & name &! name name dosyası standart çıktı olarak kullanılır. Dosya mevcut değilse oluşturulur; dosya mevcutsa kesilir (boyutu sıfırlanır), önceki içeriği kaybolur.

Eğer noclobber kabuk değişkeni ayarlanmışsa, dosyanın mevcut olmaması veya bir karakter özel dosyası (örneğin, bir terminal veya /dev/null) olması gerekir, aksi takdirde bir hata oluşur. Bu, dosyaların kazara yok edilmesini önlemeye yardımcı olur. Bu durumda ! içeren biçimler bu kontrolü bastırmak için kullanılabilir. noclobber içinde notempty verilmişse, boş dosyalarda > işlemine izin verilir; ask ayarlanmışsa, bir hata yerine etkileşimli bir onay sunulur.

& içeren biçimler, standart çıktının yanı sıra tanı (hata) çıktısını da belirtilen dosyaya yönlendirir. name, < girdi dosya adlarıyla aynı şekilde genişletilir.

name & name ! name &! name > gibidir, ancak çıktıyı name dosyasının sonuna ekler. Eğer noclobber kabuk değişkeni ayarlanmışsa, ! içeren biçimlerden biri verilmedikçe dosyanın mevcut olmaması bir hatadır.

Bir komut, girdi-çıktı parametreleri ve komutun bir boru hattındaki varlığı ile değiştirilen kabuğun çağrıldığı ortamı alır. Dolayısıyla, bazı önceki kabukların aksine, kabuk komutları dosyasından çalıştırılan komutların varsayılan olarak komutların metnine erişimi yoktur; bunun yerine kabuğun orijinal standart girdisini alırlar. Satır içi verileri sunmak için << mekanizması kullanılmalıdır. Bu, kabuk komut betiklerinin boru hatlarının bileşenleri olarak çalışmasına izin verir ve kabuğun girdisini blok halinde okumasını sağlar. Ayrılmış olarak çalıştırılan bir komut için varsayılan standart girdinin boş dosya /dev/null değil, kabuğun orijinal standart girdisi olduğunu unutmayın. Eğer bu bir terminal ise ve süreç terminalden okumaya çalışırsa, süreç bloke olur ve kullanıcı bilgilendirilir (bkz. İşler).

Tanı (hata) çıktısı, standart çıktıyla birlikte bir boru hattından geçirilebilir. Sadece | yerine |& biçimini kullanın.

Kabuk şu anda standart çıktıyı da yönlendirmeden tanı çıktısını tek başına yönlendiremez, ancak (command > output-file) >& error-file genellikle kabul edilebilir bir geçici çözümdür. Çıktıyı terminale göndermek için output-file veya error-file /dev/tty olabilir.

Özellikler (Features) Kabuğun komut satırlarını nasıl kabul ettiğini, ayrıştırdığını ve yürüttüğünü açıkladıktan sonra, şimdi çeşitli yararlı özelliklerine dönüyoruz.

Akış kontrolü (Control flow) Kabuk, komut dosyalarında (kabuk betikleri) ve (sınırlı ancak yararlı yollarla) terminal girdisinden kontrol akışını düzenlemek için kullanılabilen bir dizi komut içerir. Bu komutların tümü, kabuğu girdisinde yeniden okumaya veya atlamaya zorlayarak çalışır ve uygulamadan dolayı bazı komutların yerleşimini kısıtlar.

foreach, switch ve while ifadeleri ile if ifadesinin if-then-else biçimi, anahtar kelimelerin aşağıda gösterildiği gibi bir girdi satırındaki tek bir basit komut içinde görünmesini gerektirir.

Kabuğun girdisi aranabilir (seekable) olmadığında, kabuk bir döngü okunduğunda girdiyi arabelleğe alır ve döngünün ima ettiği yeniden okumayı gerçekleştirmek için bu dahili arabellekte aramalar yapar. (Bunun izin verdiği ölçüde, geriye doğru gitmeler (goto) aranabilir olmayan girdilerde başarılı olacaktır.)

İfadeler (Expressions) if, while ve exit yerleşik komutları ortak bir söz dizimine sahip ifadeler kullanır. İfadeler sonraki üç bölümde açıklanan operatörlerden herhangi birini içerebilir. @ yerleşik komutunun (q.v.) kendi ayrı söz dizimi olduğunu unutmayın.

Mantıksal, aritmetik ve karşılaştırma operatörleri (Logical, arithmetical and comparison operators) Bu operatörler C'dekiler benzerdir ve aynı önceliğe sahiptir. Şunları içerirler:

|| && | ^ & == != =~ !~ <= >= < > << >> + - * / % ! ~ ( )

Burada öncelik sağa doğru artar; == != =~ ve !~, <= >= < ve >, << ve >>, + ve -, * / ve % gruplar halinde aynı seviyededir. == != =~ ve !~ operatörleri argümanlarını dize olarak karşılaştırır; diğer tüm operatörler sayılar üzerinde çalışır. =~ ve !~ operatörleri != ve == gibidir, ancak sağ taraf, sol taraftaki işlenenin eşleştirildiği bir glob şablonudur (bkz. Dosya adı ikamesi). Bu, tek ihtiyaç duyulan şablon eşleştirme olduğunda kabuk betiklerinde switch yerleşik komutunun kullanılması ihtiyacını azaltır.

Boş veya eksik argümanlar 0 olarak kabul edilir. Tüm ifadelerin sonuçları ondalık sayıları temsil eden dizelerdir. Bir ifadenin hiçbir iki bileşeninin aynı kelimede görünemeyeceğini unutmamak önemlidir; ayrıştırıcı için söz dizimsel olarak önemli olan ifade bileşenlerine (& | < > ( )) bitişik olduğu durumlar hariç, etrafları boşluklarla çevrelenmelidir.

Komut çıkış durumu (Command exit status) Komutlar ifadeler içinde yürütülebilir ve çıkış durumları süslü parantez ({}) içine alınarak döndürülebilir. Süslü parantezlerin komutun kelimelerinden boşluklarla ayrılması gerektiğini unutmayın. Komut yürütmeleri başarılı olur, yani komut 0 durumuyla çıkarsa doğru, yani 1 döndürür, aksi takdirde başarısız olur, yani 0 döndürür. Daha ayrıntılı durum bilgisi gerekiyorsa, komut bir ifadenin dışında yürütülmeli ve status kabuk değişkeni incelenmelidir.

Dosya sorgulama operatörleri (File inquiry operators) Bu operatörlerden bazıları dosyalar ve ilgili nesneler üzerinde doğru/yanlış testleri gerçekleştirir. -op dosya biçimindedirler, burada op aşağıdakilerden biridir:

r Okuma erişimi w Yazma erişimi x Yürütme erişimi X Arama yolunda (path) veya kabuk yerleşiğinde yürütülebilir, örneğin, -X ls ve -X ls-F genellikle doğrudur, ancak -X /bin/ls değildir (+) e Varlık o Sahiplik z Sıfır boyut s Sıfır olmayan boyut (+) f Düz dosya d Dizin l Sembolik bağ (+) * b Blok özel dosya (+) c Karakter özel dosya (+) p Adlandırılmış boru (fifo) (+) * S Soket özel dosya (+) * u Set-user-ID biti ayarlanmış (+) g Set-group-ID biti ayarlanmış (+) k Sticky biti ayarlanmış (+) t dosya (bir rakam olmalı) bir terminal cihazı için açık bir dosya tanımlayıcısıdır (+) R Taşınmış (yalnızca Convex) (+) L Çoklu operatör testinde sonraki operatörleri, bağın işaret ettiği dosya yerine sembolik bağın kendisine uygular (+) *

dosya, değişken ve dosya adı genişletildikten sonra gerçek kullanıcıyla belirtilen ilişkiye sahip olup olmadığını görmek için test edilir. Eğer dosya mevcut değilse veya erişilemezse ya da * ile gösterilen operatörler için, belirtilen dosya türü geçerli sistemde mevcut değilse, tüm sorgulamalar yanlış, yani 0 döndürür.

Bu operatörler kısalık sağlamak için birleştirilebilir: -xy dosya ifadesi -x dosya && -y dosya ifadesine eşdeğerdir. (+) Örneğin, -fx düz yürütülebilir dosyalar için doğrudur (1 döndürür), ancak dizinler için değildir.

L, çoklu operatör testinde sonraki operatörleri, bağın işaret ettiği dosya yerine sembolik bağın kendisine uygulamak için kullanılabilir. Örneğin, -lLo çağıran kullanıcıya ait bağlar için doğrudur. Lr, Lw ve Lx bağlar için her zaman doğru ve bağ olmayanlar için yanlıştır. L, çoklu operatör testindeki son operatör olduğunda farklı bir anlama sahiptir; aşağıya bakın.

dosya parametresinin bir dosya olmasını bekleyen operatörleri, bunu beklemeyen operatörlerle (örneğin, X ve t) birleştirmek mümkündür ancak yararlı değildir ve bazen yanıltıcıdır. L operatörünü dosya olmayan bir operatörle takip etmek özellikle garip sonuçlara yol açabilir.

Diğer operatörler başka bilgiler döndürür, yani sadece 0 veya 1 değil. (+) Öncekiyle aynı biçime sahiptirler; op aşağıdakilerden biri olabilir:

A Epoch'tan (milat) beri saniye cinsinden son dosya erişim süresi A: A gibidir, ancak zaman damgası biçimindedir, örneğin, Fri May 14 16:36:10 1993 M Son dosya değişiklik süresi M: M gibidir, ancak zaman damgası biçimindedir C Son inode değişiklik süresi C: C gibidir, ancak zaman damgası biçimindedir D Cihaz numarası I Inode numarası F device:inode biçiminde birleşik dosya tanımlayıcı L Sembolik bir bağın işaret ettiği dosyanın adı N (Sabit) bağ sayısı P Sekizlik (octal) düzende, başında sıfır olmadan izinler P: P gibidir, başında sıfır ile Pmode -P dosya & mode ifadesine eşdeğerdir, örneğin, -P22 dosya dosya grup ve diğerleri tarafından yazılabilirse 22, yalnızca grup tarafından yazılabilirse 20 ve her ikisi tarafından da yazılamazsa 0 döndürür Pmode: Pmode gibidir, başında sıfır ile U Sayısal kullanıcı kimliği (userid) U: Kullanıcı adı veya kullanıcı adı bilinmiyorsa sayısal kullanıcı kimliği G Sayısal grup kimliği (groupid) G: Grup adı veya grup adı bilinmiyorsa sayısal grup kimliği Z Bayt cinsinden boyut

Bu operatörlerden yalnızca biri çoklu operatör testinde görünebilir ve en sonda olmalıdır. L operatörünün çoklu operatör testinin sonunda ve başka yerlerinde farklı bir anlama sahip olduğuna dikkat edin. 0 bu operatörlerin çoğu için geçerli bir dönüş değeri olduğundan, başarısız olduklarında 0 döndürmezler: çoğu -1 döndürür ve F : döndürür.

Kabuk POSIX tanımlı olarak derlenmişse (bkz. version kabuk değişkeni), bir dosya sorgulamasının sonucu access(2) sistem çağrısının sonucuna değil, dosyanın izin bitlerine dayanır. Örneğin, izinleri normalde yazmaya izin veren ancak salt okunur olarak bağlanmış bir dosya sisteminde bulunan bir dosya -w ile test edilirse, test POSIX kabuğunda başarılı olur ancak POSIX olmayan kabukta başarısız olur.

Dosya sorgulama operatörleri filetest yerleşik komutu (q.v.) ile de değerlendirilebilir (+).

İşler (Jobs) Kabuk, her bir boru hattıyla bir işi ilişkilendirir. jobs komutuyla yazdırılan güncel işlerin bir tablosunu tutar ve bunlara küçük tamsayılar atar. Bir iş & ile eşzamansız (asenkron) olarak başlatıldığında kabuk şuna benzer bir satır yazdırır:

[1] 1234

bu, eşzamansız olarak başlatılan işin 1 numaralı iş olduğunu ve süreç kimliği (PID) 1234 olan bir adet (en üst düzey) sürece sahip olduğunu gösterir.

Bir işi çalıştırırken başka bir şey yapmak isterseniz, geçerli işe bir STOP sinyali gönderen askıya alma tuşuna (genellikle ^Z) basabilirsiniz. Kabuk daha sonra normalde işin Askıya alındığını (Suspended) belirtir ve başka bir istem yazdırır. listjobs kabuk değişkeni ayarlanmışsa, tüm işler jobs yerleşik komutu gibi listelenecektir; long olarak ayarlanmışsa listeleme jobs -l gibi uzun biçimde olacaktır. Daha sonra askıya alınan işin durumunu manipüle edebilirsiniz. bg komutuyla "arka plana" (background) alabilir veya başka bazı komutları çalıştırıp sonunda fg ile işi tekrar "ön plana" (foreground) getirebilirsiniz. (Ayrıca bkz. run-fg-editor düzenleyici komutu.) Bir ^Z hemen etki eder ve yazıldığında bekleyen çıktının ve okunmamış girdinin atılması bakımından bir kesmeye (interrupt) benzer. wait yerleşik komutu kabuğun tüm arka plan işlerinin tamamlanmasını beklemesine neden olur.

^] tuşu, geçerli işe, bir program onu read(2) ile okumaya çalışana kadar bir STOP sinyali üretmeyen gecikmeli bir askıya alma sinyali gönderir. Bu, okumasını bitirdikten sonra durdurmak istediğiniz bir iş için bazı komutlar hazırladığınızda önceden yazılabilir. ^Y tuşu bu işlevi csh içinde gerçekleştirir; tcsh'te ^Y bir düzenleme komutudur. (+)

Arka planda çalıştırılan bir iş, terminalden okumaya çalışırsa durur. Arka plan işlerinin normalde çıktı üretmesine izin verilir, ancak bu stty tostop komutu verilerek devre dışı bırakılabilir. Bu tty seçeneğini ayarlarsanız, arka plan işleri girdi okumaya çalıştıklarında olduğu gibi çıktı üretmeye çalıştıklarında da duracaktır.

Kabukta işlere atıfta bulunmanın birkaç yolu vardır. % karakteri bir iş adını tanıtır. 1 numaralı işe atıfta bulunmak istiyorsanız, onu %1 olarak adlandırabilirsiniz. Sadece bir işi adlandırmak onu ön plana getirir; bu nedenle %1 ifadesi fg %1 ifadesinin bir eş anlamlısıdır ve iş 1'i ön plana geri getirir. Benzer şekilde, %1 & demek, tıpkı bg %1 gibi iş 1'i arka planda devam ettirir. Bir iş, onu başlatmak için yazılan dizeye ait benzersiz bir ön ek ile de adlandırılabilir: %ex ifadesi, adı ex dizesiyle başlayan yalnızca bir askıya alınmış iş varsa, askıya alınmış bir ex(1) işini normal şekilde yeniden başlatır. Böyle tek bir iş varsa, metni string içeren bir işi belirtmek için %?string demek de mümkündür.

Kabuk, geçerli ve önceki işler kavramını korur. İşlerle ilgili çıktılarda, geçerli iş + ile ve önceki iş - ile işaretlenir. %+, % ve (geçmiş mekanizmasının söz dizimiyle analoji kurarak) %% kısaltmalarının tümü geçerli işe atıfta bulunur ve %- önceki işe atıfta bulunur.

İş kontrol mekanizması bazı sistemlerde stty(1) seçeneği newin ayarlanmasını gerektirir. Bu, tty sürücüsünün klavyeden işlerin durmasını söyleyen kesme karakterlerinin üretilmesine izin veren 'yeni' bir uygulamasının kalıntısıdır. Yeni tty sürücüsünde seçeneklerin ayarlanmasına ilişkin ayrıntılar için stty(1) ve setty yerleşik komutuna bakın.

Durum raporlama (Status reporting) Bir sürecin durumu değiştiğinde kabuk bunu hemen öğrenir. Normalde bir işin bloke olduğunu, böylece daha fazla ilerleme kaydedilemeyeceğini size bildirir, ancak bunu yalnızca bir istem yazdırmadan hemen önce yapar. Bu, çalışmanızı başka türlü rahatsız etmemek için yapılır. Ancak, notify kabuk değişkenini ayarlarsanız, kabuk arka plan işlerindeki durum değişikliklerini size hemen bildirecektir. Durum değişikliklerinin hemen bildirilmesi için tek bir süreci işaretleyen bir notify kabuk komutu da vardır. Varsayılan olarak notify geçerli süreci işaretler; bir arka plan işini başlattıktan sonra onu işaretlemek için sadece notify deyin.

İşler durdurulmuşken kabuktan ayrılmaya çalıştığınızda, 'Askıya alınmış işler var.' (There are suspended jobs.) şeklinde uyarılırsınız. Bunların ne olduğunu görmek için jobs komutunu kullanabilirsiniz. Bunu yaparsanız veya hemen tekrar çıkmaya çalışırsanız, kabuk sizi ikinci kez uyarmaz ve askıya alınan işler sonlandırılır.

Otomatik, periyodik ve zamanlanmış olaylar (Automatic, periodic and timed events) (+) Kabuğun "yaşam döngüsü" içinde çeşitli zamanlarda komutları otomatik olarak çalıştırmanın ve diğer eylemleri gerçekleştirmenin çeşitli yolları vardır. Burada özetlenmiştir ve ilgili Yerleşik komutlar, Özel kabuk değişkenleri ve Özel takma adlar altında ayrıntılı olarak açıklanmıştır.

sched yerleşik komutu, komutları belirli bir zamanda kabuk tarafından yürütülmek üzere bir zamanlanmış olaylar listesine koyar.

beepcmd, cwdcmd, periodic, precmd, postcmd ve jobcmd Özel takma adları, kabuk zili çalmak istediğinde, çalışma dizini değiştiğinde, her tperiod dakikada bir, her istemden önce, her komut yürütülmeden önce, her komut yürütüldükten sonra ve bir iş başlatıldığında veya ön plana getirildiğinde komutları yürütmek üzere sırasıyla ayarlanabilir.

autologout kabuk değişkeni, belirli bir dakika hareketsizlikten sonra oturumu kapatacak veya kabuğu kilitleyecek şekilde ayarlanabilir.

mail kabuk değişkeni, periyodik olarak yeni e-posta kontrolü yapacak şekilde ayarlanabilir.

printexitvalue kabuk değişkeni, sıfır dışındaki bir durumla çıkan komutların çıkış durumunu yazdırmak için ayarlanabilir.

rmstar kabuk değişkeni, rm * yazıldığında kullanıcıya bunun gerçekten kastedilip kastedilmediğini sormak üzere ayarlanabilir.

time kabuk değişkeni, verilen CPU saniyesinden daha uzun süren herhangi bir sürecin tamamlanmasından sonra time yerleşik komutunu yürütmek üzere ayarlanabilir.

watch ve who kabuk değişkenleri, seçilen kullanıcılar oturum açtığında veya kapattığında rapor verecek şekilde ayarlanabilir ve log yerleşik komutu bu kullanıcıları herhangi bir zamanda rapor eder.

Yerel Dil Sistemi desteği (Native Language System support) (+) Kabuk sekiz bit temizdir (eğer bu şekilde derlenmişse; bkz. version kabuk değişkeni) ve bu nedenle bu yeteneğe ihtiyaç duyan karakter setlerini destekler. NLS desteği, kabuğun sistemin NLS'sini kullanacak şekilde derlenip derlenmediğine bağlı olarak farklılık gösterir (yine bkz. version). Her iki durumda da, 7-bit ASCII varsayılan karakter kodudur (örneğin, hangi karakterlerin yazdırılabilir olduğunun sınıflandırılması) ve sıralamadır; LANG veya LC_CTYPE çevre değişkenlerinin değiştirilmesi, bu açılardan olası değişikliklerin kontrol edilmesine neden olur.

Sistemin NLS'si kullanılırken, uygun karakter kodu/sınıflandırmasını ve sıralamasını belirlemek için setlocale(3) işlevi çağrılır (örneğin, 'en_CA.UTF-8' karakter kodu olarak "UTF-8" sonucunu verecektir). Bu işlev tipik olarak LANG ve LC_CTYPE çevre değişkenlerini inceler; daha fazla ayrıntı için sistem belgelerine başvurun. Sistemin NLS'si kullanılmadığında, kabuk, değerlerine bakılmaksızın LANG ve LC_CTYPE değişkenlerinden biri ayarlandığında ISO 8859-1 karakter setinin kullanıldığını varsayarak bunu taklit eder. Benzetimli NLS için sıralama etkilenmez.

Buna ek olarak, hem gerçek hem de benzetimli NLS ile, \200-\377 aralığındaki tüm yazdırılabilir karakterler, yani M-char atamalarına sahip olanlar, otomatik olarak self-insert-command komutuna yeniden atanır. Varsa, escape-char dizisi için karşılık gelen atama olduğu gibi bırakılır. NOREBIND çevre değişkeni ayarlanmışsa bu karakterler yeniden atanmaz. Bu, benzetimli NLS veya tam ISO 8859-1 varsayan ilkel bir gerçek NLS için yararlı olabilir. Aksi takdirde, \240-\377 aralığındaki tüm M-char atamaları etkili bir şekilde geri alınır. İlgili tuşların bindkey ile açıkça yeniden atanması elbette hala mümkündür.

Bilinmeyen karakterler (yani ne yazdırılabilir ne de kontrol karakteri olanlar) \nnn biçiminde yazdırılır. Eğer tty 8 bit modunda değilse, diğer 8 bit karakterler ASCII'ye dönüştürülerek ve standout modu kullanılarak yazdırılır. Kabuk hiçbir zaman tty'nin 7/8 bit modunu değiştirmez ve tty'nin kullanıcı tarafından başlatılan 7/8 bit modu değişikliklerini izler. NLS kullanıcılarının (veya bu konuda bir meta tuşu kullanmak isteyenlerin), örneğin ~/.login dosyasındaki uygun stty(1) komutu aracılığıyla tty'yi açıkça 8 bit moduna ayarlaması gerekebilir.

İşletim sistemi varyantı desteği (OS variant support) (+) Belirli işletim sistemlerindeki özellikleri desteklemek için bir dizi yeni yerleşik komut sağlanmıştır. Tümü Yerleşik komutlar bölümünde ayrıntılı olarak açıklanmıştır.

TCF'yi destekleyen sistemlerde (aix-ibm370, aix-ps2), getspath ve setspath sistem yürütme yolunu alır ve ayarlar, getxvers ve setxvers deneysel sürüm ön ekini alır ve ayarlar ve migrate süreçleri siteler arasında taşır. jobs yerleşik komutu, her bir işin hangi sitede yürütüldüğünü yazdırır.

BS2000 altında, bs2cmd altta yatan BS2000/OSD işletim sisteminin komutlarını yürütür.

Domain/OS altında, inlib paylaşılan kitaplıkları geçerli ortama ekler, rootnode kök düğümü değiştirir ve ver sistype'ı değiştirir.

Mach altında, setpath Mach'ın setpath(1) komutuna eşdeğerdir.

Masscomp/RTU ve Harris CX/UX altında, universe evreni (universe) ayarlar.

Harris CX/UX altında, ucb veya att belirtilen evren altında bir komut çalıştırır.

Convex/OS altında, warp evreni yazdırır veya ayarlar.

VENDOR, OSTYPE ve MACHTYPE çevre değişkenleri, sırasıyla kabuğun üzerinde çalıştığını düşündüğü sistemin satıcısını, işletim sistemini ve makine tipini (mikroişlemci sınıfı veya makine modeli) gösterir. Bunlar, özellikle ev dizinini birkaç tip makine arasında paylaşırken yararlıdır; örneğin, biri

set path = (~/bin.$MACHTYPE /usr/ucb /bin /usr/bin .)

yazabilir ~/.login dosyasına ve her makine için derlenmiş yürütülebilir dosyaları uygun dizine koyabilir.

version kabuk değişkeni, kabuk derlenirken hangi seçeneklerin seçildiğini gösterir.

Ayrıca newgrp yerleşik komutuna, afsuser ve echo_style kabuk değişkenlerine ve kabuğun girdi dosyalarının sisteme bağlı konumlarına (bkz. DOSYALAR) dikkat edin.

Sinyal işleme (Signal handling) Giriş kabukları (login shells) ~/.logout dosyasını okurken kesmeleri (interrupts) yok sayar. Kabuk, -q ile başlatılmadığı sürece quit sinyallerini yok sayar. Giriş kabukları sonlandırma (terminate) sinyalini yakalar, ancak giriş kabuğu olmayan kabuklar sonlandırma davranışını ebeveynlerinden miras alır. Diğer sinyaller, kabuğun ebeveyninden miras aldığı değerlere sahiptir.

Kabuk betiklerinde, kabuğun kesme ve sonlandırma sinyallerini işlemesi onintr ile kontrol edilebilir ve askıda kalma (hangup) sinyallerini işlemesi hup ve nohup ile kontrol edilebilir.

Kabuk bir askıda kalma durumunda çıkar (ayrıca bkz. logout kabuk değişkeni). Varsayılan olarak, kabuğun çocukları da öyle yapar, ancak kabuk çıkarken onlara bir askıda kalma sinyali göndermez. hup kabuğun çıkarken bir çocuğa askıda kalma sinyali göndermesini ayarlar ve nohup bir çocuğu askıda kalma sinyallerini yok sayacak şekilde ayarlar.

Terminal yönetimi (Terminal management) (+) Kabuk üç farklı terminal ("tty") modu kümesi kullanır: düzenleme yaparken kullanılan edit, harfi harfine karakterleri tırnak içine alırken kullanılan quote ve komutları yürütürken kullanılan execute. Kabuk her moddaki bazı ayarları sabit tutar, böylece tty'yi karmaşık bir durumda bırakan komutlar kabuğa müdahale etmez. Kabuk ayrıca tty'nin hızındaki ve dolgusundaki değişiklikleri de eşleştirir. Sabit tutulan tty modlarının listesi setty yerleşik komutu ile incelenebilir ve değiştirilebilir. Düzenleyicinin CBREAK modunu (veya eşdeğerini) kullanmasına rağmen, yine de önceden yazılmış (typed-ahead) karakterleri aldığını unutmayın.

echotc, settc ve telltc komutları, komut satırından terminal yeteneklerini manipüle etmek ve hata ayıklamak için kullanılabilir.

SIGWINCH veya SIGWINDOW destekleyen sistemlerde, kabuk pencere yeniden boyutlandırmasına otomatik olarak uyum sağlar ve ayarlanmışsa LINES ve COLUMNS çevre değişkenlerini ayarlar. Eğer TERMCAP çevre değişkeni li# ve co# alanlarını içeriyorsa, kabuk bunları yeni pencere boyutunu yansıtacak şekilde ayarlar.

Referans (Reference)

Bu kılavuzun sonraki bölümleri mevcut tüm Yerleşik komutları, Özel takma adları ve Özel kabuk değişkenlerini açıklar.

Yerleşik komutlar (Builtin commands) %job fg yerleşik komutunun bir eş anlamlısıdır.

%job & bg yerleşik komutunun bir eş anlamlısıdır.

: Hiçbir şey yapmaz, başarıyla.

@ @ name = expr @ name[index] = expr @ name++|-- @ name[index]++|-- İlk biçim tüm kabuk değişkenlerinin değerlerini yazdırır.

İkinci biçim expr değerini name değişkenine atar. Üçüncü biçim expr değerini name değişkeninin index'inci bileşenine atar; hem name hem de index'inci bileşeni zaten mevcut olmalıdır.

expr, C'de olduğu gibi *, + vb. operatörleri içerebilir. Eğer expr <, >, & veya ' içeriyorsa, expr ifadesinin en azından o kısmı () içine yerleştirilmelidir. expr ifadesinin söz diziminin İfadeler altında açıklananla hiçbir ilgisi olmadığını unutmayın.

Dördüncü ve beşinci biçimler name değişkenini veya onun index'inci bileşenini artırır (++) veya azaltır (--).

@ ile name arasındaki boşluk zorunludur. name ile = ve = ile expr arasındaki boşluklar isteğe bağlıdır. expr bileşenleri boşluklarla ayrılmalıdır.

alias [name [wordlist]] Argümansız olarak tüm takma adları yazdırır. name ile, name için takma adı yazdırır. name ve wordlist ile, wordlist'i name'in takma adı olarak atar. wordlist komut ve dosya adı ikamesine tabi tutulur. name, alias veya unalias olamaz. Ayrıca bkz. unalias yerleşik komutu.

alloc Kullanılan ve boş belleğe bölünmüş olarak elde edilen dinamik bellek miktarını gösterir. Bir argümanla, her boyut kategorisindeki boş ve kullanılan blokların sayısını gösterir. Kategoriler 8 boyutundan başlar ve her adımda ikiye katlanır. Bu komutun çıktısı sistem tiplerine göre değişebilir, çünkü VAX dışındaki sistemler farklı bir bellek ayırıcı kullanabilir.

bg [%job ...] Belirtilen işleri (veya argümansız olarak geçerli işi) arka plana koyar ve durdurulmuşsa her birini devam ettirir. job, İşler altında açıklandığı gibi bir sayı, bir dize, ``, %, + veya - olabilir.

bindkey [-l|-d|-e|-v|-u] (+) bindkey [-a] [-b] [-k] [-r] [--] key (+) bindkey [-a] [-b] [-k] [-c|-s] [--] key command (+) Seçenekler olmadan, ilk biçim tüm bağlı tuşları ve her birinin bağlı olduğu düzenleyici komutunu listeler, ikinci biçim key tuşunun bağlı olduğu düzenleyici komutunu listeler ve üçüncü biçim command düzenleyici komutunu key tuşuna bağlar. Seçenekler şunları içerir:

  • -l: Tüm düzenleyici komutlarını ve her birinin kısa bir açıklamasını listeler.
  • -d: Tüm tuşları, aşağıdaki -e ve -v uyarınca varsayılan düzenleyici için standart atamalara bağlar.
  • -e: Tüm tuşları emacs(1) tarzı atamalara bağlar. vimode değişkenini kaldırır.
  • -v: Tüm tuşları vi(1) tarzı atamalara bağlar. vimode değişkenini ayarlar.
  • -a: Alternatif tuş haritasındaki tuş atamalarını listeler veya değiştirir. Bu, vimode komut modunda kullanılan tuş haritasıdır.
  • -b: key bir kontrol karakteri olarak ^karakter (örneğin, ^A) veya C-karakter (örneğin, C-A), M-karakter (örneğin, M-A) şeklinde yazılan bir meta karakter, F-dize (örneğin, F-string) şeklinde yazılan bir işlev tuşu veya X-karakter (örneğin, X-A) şeklinde yazılan uzatılmış bir ön ek tuşu olarak yorumlanır.
  • -k: key; down, up, left veya right yön tuşlarından biri olabilen sembolik bir ok tuşu adı olarak yorumlanır.
  • -r: key tuşunun atamasını kaldırır. Dikkatli olun: bindkey -r key tuşunu self-insert-command (q.v.) komutuna bağlamaz, key tuşunun atamasını tamamen kaldırır.
  • -c: command, bir düzenleyici komutu yerine bir yerleşik veya harici komut olarak yorumlanır.
  • -s: key tuşuna basıldığında command düz bir dize olarak alınır ve terminal girdisi olarak işlem görür. command içindeki bağlı tuşlar da yeniden yorumlanır ve bu durum on seviyeli yorumlama boyunca devam eder.
  • --: Seçenek işlemesinden zorla bir çıkış gerçekleştirir, böylece sonraki kelime '-' ile başlasa bile key olarak alınır.
  • -u (veya geçersiz herhangi bir seçenek): Kullanım mesajını yazdırır.

key tek bir karakter veya bir dize olabilir. Bir komut bir dizeye bağlandığında, dizenin ilk karakteri sequence-lead-in'e bağlanır ve tüm dize komuta bağlanır.

key içindeki kontrol karakterleri düz olabilir (önlerine normalde ^V tuşuna bağlı olan quoted-insert düzenleyici komutu getirilerek yazılabilirler) veya ^A gibi şapka-karakter tarzında yazılabilirler. Delete tuşu ^? (şapka-soru işareti) şeklinde yazılır. key ve command, aşağıdaki gibi ters eğik çizgili kaçış dizileri (System V echo(1) tarzında) içerebilir:

\a Zil (Bell) \b Geri al (Backspace) \e Esc (Escape) \f Form besleme (Form feed) \n Yeni satır (Newline) \r Satır başı (Carriage return) \t Yatay sekme (Horizontal tab) \v Dikey sekme (Vertical tab) \nnn nnn sekizlik sayısına karşılık gelen ASCII karakteri

\, başta \ ve ^ olmak üzere takip eden karakterin varsa özel anlamını geçersiz kılar.

bs2cmd bs2000-command (+) bs2000-command komutunu yürütülmek üzere BS2000 komut yorumlayıcısına geçirir. Yalnızca etkileşimli olmayan komutlar yürütülebilir ve /EXECUTE veya /CALL-PROCEDURE gibi geçerli sürecin görüntüsünün üzerine yazacak herhangi bir komutun yürütülmesi mümkün değildir. (Yalnızca BS2000)

break En yakın kapsayan foreach veya while döngüsünün sonundan sonra yürütmenin devam etmesine neden olur. Geçerli satırdaki kalan komutlar yürütülür. Böylece hepsini tek bir satıra yazarak çok seviyeli kesmeler (breaks) yapmak mümkündür.

breaksw Bir switch ifadesinden çıkılmasını sağlar ve endsw ifadesinden sonra devam eder.

builtins (+) Tüm yerleşik komutların adlarını yazdırır.

bye (+) logout yerleşik komutunun bir eş anlamlısıdır. Yalnızca kabuk bu şekilde derlenmişse kullanılabilir; bkz. version kabuk değişkeni.

case label: Aşağıda tartışılan bir switch ifadesindeki bir etiket.

cd [-p] [-l] [-n|-v] [--] [name] Bir dizin adı verilirse, kabuğun çalışma dizinini name olarak değiştirir. Verilmezse, cdtohome değişkeni ayarlanmadığı sürece home dizinine değiştirir; bu durumda bir name gereklidir. name - ise önceki çalışma dizini olarak yorumlanır (bkz. Diğer ikameler). (+) Eğer name geçerli dizinin bir alt dizini değilse (ve /, ./ veya ../ ile başlamıyorsa), cdpath değişkeninin her bir bileşeni bir alt dizin adı içerip içermediğini görmek için kontrol edilir. Son olarak, her şey başarısız olursa ancak name değeri / veya . ile başlayan bir kabuk değişkeniyse, bunun bir dizin olup olmadığı denenir ve -p seçeneği ima edilir.

-p ile, tıpkı dirs gibi son dizin yığınını yazdırır. -l, -n ve -v bayrakları cd üzerinde dirs ile aynı etkiye sahiptir ve -p seçeneğini ima eder. (+) -- kullanılması seçenek işlemesinden çıkmaya zorlar, böylece sonraki kelime '-' ile başlasa bile dizin adı olarak alınır. (+)

Ayrıca bkz. implicitcd ve cdtohome kabuk değişkenleri.

chdir cd yerleşik komutunun bir eş anlamlısıdır.

complete [command [word/pattern/list[:select]/[[suffix]/] ...]] (+) Argümansız olarak tüm tamamlamaları listeler. command ile, command için tamamlamaları listeler. command ve word vb. ile tamamlamaları tanımlar.

command tam bir komut adı veya bir glob şablonu (bkz. Dosya adı ikamesi) olabilir. Tamamlamanın yalnızca command belirsiz olduğunda kullanılması gerektiğini belirtmek için - ile başlayabilir.

word, geçerli kelimeye göre hangi kelimenin tamamlanacağını belirtir ve aşağıdakilerden biri olabilir:

c Geçerli kelime tamamlama (Current-word completion). pattern, komut satırındaki geçerli kelimenin başlangıcıyla eşleşmesi gereken bir glob şablonudur. pattern geçerli kelime tamamlanırken yok sayılır. C c gibidir, ancak geçerli kelimeyi tamamlarken pattern'ı dahil eder. n Bir sonraki kelime tamamlama (Next-word completion). pattern, komut satırındaki önceki kelimenin başlangıcıyla eşleşmesi gereken bir glob şablonudur. N n gibidir, ancak geçerli kelimeden iki önceki kelimenin başlangıcıyla eşleşmelidir. p Konuma bağlı tamamlama (Position-dependent completion). pattern, kabuk değişkenlerini indekslemek için kullanılan aynı söz dizimine sahip, geçerli kelimeyi içermesi gereken sayısal bir aralıktır.

list, olası tamamlamaların listesi, aşağıdakilerden biri olabilir:

a Takma adlar (Aliases) b Atamalar (Bindings - düzenleyici komutları) c Komutlar (Yerleşik veya harici komutlar) C Sağlanan yol ön eki ile başlayan harici komutlar d Dizinler (Directories) D Sağlanan yol ön eki ile başlayan dizinler e Çevre değişkenleri (Environment variables) f Dosya adları (Filenames) F Sağlanan yol ön eki ile başlayan dosya adları g Grup adları (Groupnames) j İşler (Jobs) l Limitler (Limits) n Hiçbir şey (Nothing) s Kabuk değişkenleri (Shell variables) S Sinyaller (Signals) t Düz ("metin") dosyalar T Sağlanan yol ön eki ile başlayan düz ("metin") dosyalar v Herhangi bir değişken u Kullanıcı adları (Usernames) x n gibidir, ancak list-choices kullanıldığında select yazdırır. X Tamamlamalar (Completions) $var var değişkeninden kelimeler (...) Verilen listeden kelimeler ... command çıktısından kelimeler

select isteğe bağlı bir glob şablonudur. Verilirse, yalnızca list içinden select ile eşleşen kelimeler dikkate alınır ve fignore kabuk değişkeni yok sayılır. Son üç tamamlama türü bir select şablonuna sahip olamaz ve list-choices düzenleyici komutu kullanıldığında x, select parametresini açıklayıcı bir mesaj olarak kullanır.

suffix, başarılı bir tamamlamaya eklenecek tek bir karakterdir. Boşsa (null), hiçbir karakter eklenmez. Atlanırsa (bu durumda dördüncü sınırlayıcı da atlanabilir), dizinlerin sonuna bir eğik çizgi ve diğer kelimelerin sonuna bir boşluk eklenir.

... sürümünden çağrılan command ek bir çevre değişkenine sahiptir; değişkenin adı COMMAND_LINE'dır ve (adının da gösterdiği gibi) geçerli (zaten yazılmış olan) komut satırının içeriğini içerir. Kişi, daha gelişmiş tamamlamalar oluşturmak için kendi özel betiğinde COMMAND_LINE değişkeninin içeriğini inceleyebilir ve kullanabilir (bu paketle birlikte gelen svn(1) tamamlamasına bakın).

Şimdi bazı örnekler verelim. Bazı komutlar argüman olarak yalnızca dizinleri alır, bu nedenle düz dosyaları tamamlamanın bir anlamı yoktur.

complete cd 'p/1/d/'

yalnızca cd komutunu takip eden ilk kelimeyi (p/1) bir dizinle tamamlar. p-tipi tamamlama, komut tamamlamayı daraltmak için de kullanılabilir:

co[^D] complete compress complete -co* 'p/0/(compress)/' co[^D] compress

Bu tamamlama, co ile başlayan (böylece co* ile eşleşen) komutları (0. konumdaki kelimeler, p/0) compress (listedeki tek kelime) olarak tamamlar. Baştaki -, bu tamamlamanın yalnızca belirsiz komutlarla kullanılacağını gösterir.

complete find 'n/-user/u/'

n-tipi tamamlamaya bir örnektir. find komutunu takip eden ve hemen -user sonrasında gelen herhangi bir kelime, kullanıcılar listesinden tamamlanır.

complete cc 'c/-I/d/'

c-tipi tamamlamayı gösterir. cc komutunu takip eden ve -I ile başlayan herhangi bir kelime bir dizin olarak tamamlanır. Küçük harf c kullandığımız için -I dizinin bir parçası olarak alınmaz.

Farklı komutlarla farklı listeler yararlıdır.

complete alias 'p/1/a/' complete man 'p/*/c/' complete set 'p/1/s/' complete true 'p/1/x:Truth has no options./'

Bunlar alias komutunu takip eden kelimeleri takma adlarla, man komutunu takip eden kelimeleri komutlarla ve set komutunu takip eden kelimeleri kabuk değişkenleriyle tamamlar. true komutunun hiçbir seçeneği yoktur, bu nedenle tamamlama denendiğinde x hiçbir şey yapmaz ve tamamlama seçenekleri listelendiğinde Truth has no options. yazdırır.

man örneğinin ve aşağıdaki diğer bazı örneklerin 'p/' yerine 'c/' veya 'n/*' de kullanabileceğini unutmayın.

Kelimeler, tamamlama zamanında değerlendirilen bir değişkenden tamamlanabilir,

complete ftp 'p/1/$hostnames/' set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu) ftp [^D] rtfm.mit.edu tesla.ee.cornell.edu ftp [^C] set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net) ftp [^D] rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net

veya tamamlama zamanında çalıştırılan bir komuttan tamamlanabilir:

complete kill 'p/*/ps | awk \{print\ \$1\}/' kill -9 [^D] 23113 23377 23380 23406 23429 23529 23530 PID

complete komutunun argümanlarını kendisinin tırnak içine almadığını, bu nedenle {print $1} içindeki süslü parantezlerin, boşluğun ve $ işaretinin açıkça tırnak içine alınması (kaçırılması) gerektiğini unutmayın.

Bir komut birden fazla tamamlamaya sahip olabilir:

complete dbx 'p/2/(core)/' 'p/*/c/'

dbx komutuna verilen ikinci argümanı core kelimesiyle ve diğer tüm argümanları komutlarla tamamlar. Konumsal tamamlamanın bir sonraki kelime tamamlamasından önce belirtildiğine dikkat edin. Tamamlamalar soldan sağa doğru değerlendirildiğinden, bir sonraki kelime tamamlaması ilk sırada belirtilseydi her zaman o eşleşirdi ve konumsal tamamlama asla yürütülmezdi. Bu, bir tamamlama tanımlarken sıkça yapılan bir hatadır.

select şablonu, bir komut argüman olarak yalnızca belirli biçimlerdeki dosyaları aldığında kullanışlıdır. Örneğin,

complete cc 'p//f:.[cao]/'

cc argümanlarını yalnızca .c, .a veya .o ile biten dosyalarla tamamlar. select, Dosya adı ikamesi altında açıklandığı gibi bir glob şablonunun olumsuzlanmasını kullanarak dosyaları hariç de tutabilir. Biri

complete rm 'p//f:^.{c,h,cc,C,tex,1,man,l,y}/'

kullanarak değerli kaynak kodlarını rm tamamlamasından hariç tutabilir. Tabii ki, hariç tutulan adlar yine de manuel olarak yazılabilir veya complete-word-raw ya da list-choices-raw düzenleyici komutları (q.v.) kullanılarak tamamlama mekanizması geçersiz kılınabilir.

C, D, F ve T listeleri sırasıyla c, d, f ve t gibidir, ancak select argümanını farklı bir şekilde kullanırlar: tamamlamayı belirli bir yol ön eki ile başlayan dosyalarla sınırlandırmak için. Örneğin, Elm posta programı, kişinin posta dizini için bir kısaltma olarak = kullanır. Biri

complete elm c@=@F:$HOME/Mail/@

kullanarak elm -f = komutunu sanki elm -f ~/Mail/miş gibi tamamlayabilir. select argümanıyla karışıklığı önlemek için / yerine @ kullandığımıza ve ev dizini ikamesi yalnızca bir kelimenin başında çalıştığı için ~ yerine $HOME kullandığımıza dikkat edin.

suffix, tamamlanan kelimelere standart olmayan bir sonek (dizinler için boşluk veya / değil) eklemek için kullanılır.

complete finger 'c/*@/$hostnames/' 'p/1/u/@'

finger argümanlarını kullanıcılar listesinden tamamlar, bir @ ekler ve ardından @ işaretinden sonra hostnames değişkeninden tamamlar. Tamamlamaların belirtilme sırasına tekrar dikkat edin.

Son olarak, ilham vermesi için karmaşık bir örnek:

complete find
'n/-name/f/' 'n/-newer/f/' 'n/-{,n}cpio/f/'
'n/-exec/c/' 'n/-ok/c/' 'n/-user/u/'
'n/-group/g/' 'n/-fstype/(nfs 4.2)/'
'n/-type/(b c d f l p s)/'
'c/-/(name newer cpio ncpio exec ok user
group fstype type atime ctime depth inum
ls mtime nogroup nouser perm print prune
size xdev)/'
'p/*/d/'

Bu; -name, -newer, -cpio veya ncpio (her ikisiyle de eşleşen şablona dikkat edin) sonrasındaki kelimeleri dosyalara, -exec veya -ok sonrasındaki kelimeleri komutlara, user ve group sonrasındaki kelimeleri sırasıyla kullanıcılara ve gruplara ve -fstype veya -type sonrasındaki kelimeleri verilen listelerin üyelerine tamamlar. Ayrıca anahtarların kendilerini verilen listeden tamamlar (c-tipi tamamlamanın kullanımına dikkat edin) ve başka türlü tamamlanmayan her şeyi bir dizine tamamlar. Vay canına.

Tamamlanmakta olan kelime bir tilde ikamesi (~ ile başlayan) veya bir değişken ($ ile başlayan) ise programlanmış tamamlamaların yok sayıldığını unutmayın. Ayrıca bkz. uncomplete yerleşik komutu.

continue En yakın kapsayan while veya foreach döngüsünün yürütülmesine devam eder. Geçerli satırdaki geri kalan komutlar yürütülür.

default: Bir switch ifadesindeki varsayılan durumu (default case) etiketler. Tüm case etiketlerinden sonra gelmelidir.

dirs [-l] [-n|-v] dirs -S|-L [filename] (+) dirs -c (+) İlk biçim dizin yığınını yazdırır. Yığının üstü soldadır ve yığındaki ilk dizin geçerli dizindir. -l ile, çıktıdaki ~ veya ~name açıkça name kullanıcısının ev dizinine veya ev dizininin yol adına genişletilir. (+) -n ile, girdiler ekranın kenarına ulaşmadan önce sarılır. (+) -v ile, girdiler yığın konumlarının önünde yer almasıyla satır başına bir tane olacak şekilde yazdırılır. (+) -n veya -v seçeneklerinden birden fazlası verilirse, -v öncelikli olur. -p kabul edilir ancak hiçbir şey yapmaz.

-S ile, ikinci biçim dizin yığınını bir dizi cd ve pushd komutu olarak filename dosyasına kaydeder. -L ile, kabuk, muhtemelen -S seçeneği veya savedirs mekanizması tarafından kaydedilmiş bir dizin yığını dosyası olan filename dosyasını kaynak alır (source). Her iki durumda da, filename verilmemişse dirsfile kullanılır ve dirsfile ayarlanmamışsa ~/.cshdirs kullanılır.

Giriş kabuklarının (login shells) başlangıçta dirs -L eşdeğerini yaptığını ve savehist ayarlanmışsa çıkmadan önce dirs -S yaptığını unutmayın. Normalde ~/.cshdirs dosyasından önce yalnızca ~/.tcshrc kaynak alındığından, dirsfile ~/.login yerine ~/.tcshrc içinde ayarlanmalıdır.

Son biçim dizin yığınını temizler.

echo [-n] word ... Her bir kelimeyi aralarında boşluklarla ve sonunda bir yeni satırla kabuğun standart çıktısına yazar. echo_style kabuk değişkeni, BSD ve/veya System V echo sürümlerinin bayraklarını ve kaçış dizilerini taklit edecek (veya etmeyecek) şekilde ayarlanabilir; bkz. echo(1).

echotc [-sv] arg ... (+) args içindeki terminal yeteneklerini çalıştırır (bkz. termcap(5)). Örneğin, 'echotc home' imleci ana konuma gönderir, 'echotc cm 3 10' imleci 3. sütun ve 10. satıra gönderir ve 'echotc ts 0; echo "Bu bir testtir."; echotc fs' durum satırına "Bu bir testtir." yazdırır.

arg 'baud', 'cols', 'lines', 'meta' veya 'tabs' ise, bu yeteneğin değerini yazdırır (terminalin bu yeteneğe sahip olup olmadığını gösteren "yes" veya "no"). Biri bunu, yavaş terminallerde bir kabuk betiğinin çıktısını daha az ayrıntılı hale getirmek veya komut çıktısını ekrandaki satır sayısıyla sınırlamak için kullanabilir:

set history=echotc lines @ history--

Termcap dizeleri, düzgün yankılanmayacak joker karakterler içerebilir. Tarihi durum satırına yerleştiren aşağıdaki örnekte olduğu gibi, bir kabuk değişkenini bir terminal yeteneği dizesine ayarlarken çift tırnak kullanılmalıdır:

set tosl="echotc ts 0" set frsl="echotc fs" echo -n "$tosl";date; echo -n "$frsl"

-s ile, var olmayan yetenekler bir hataya neden olmak yerine boş dize döndürür. -v ile mesajlar ayrıntılıdır.

else end endif endsw Aşağıdaki foreach, if, switch ve while ifadelerinin açıklamalarına bakın.

eval arg ... Argümanları kabuğa girdi olarak ele alır ve ortaya çıkan komutları geçerli kabuğun bağlamında yürütür. Bu genellikle komut veya değişken ikamesinin sonucu olarak üretilen komutları yürütmek için kullanılır, çünkü ayrıştırma bu ikamelerden önce gerçekleşir. Örnek bir eval kullanımı için bkz. tset(1).

exec command Belirtilen komutu geçerli kabuğun yerinde yürütür.

exit [expr] Kabuk, belirtilen expr (İfadeler altında açıklandığı gibi bir ifade) değeriyle veya expr olmadan 0 değeriyle çıkar.

fg [%job ...] Belirtilen işleri (veya argümansız olarak geçerli işi) ön plana getirir, durdurulmuşsa her birini devam ettirir. job, İşler altında açıklandığı gibi bir sayı, bir dize, ``, %, + veya - olabilir. Ayrıca bkz. run-fg-editor düzenleyici komutu.

filetest -op file ... (+) op operatörünü (Dosya sorgulama operatörleri altında açıklandığı gibi bir dosya sorgulama operatörüdür) her bir dosyaya uygular ve sonuçları boşlukla ayrılmış bir liste olarak döndürür.

foreach name (wordlist) ... end name değişkenini sırayla wordlist'in her bir üyesine ayarlar ve bu komut ile eşleşen end arasındaki komut dizisini yürütür. (Hem foreach hem de end ayrı satırlarda tek başlarına görünmelidir.) Döngüyü zamanından önce devam ettirmek için built-in continue komutu ve döngüyü zamanından önce sonlandırmak için built-in break komutu kullanılabilir. Bu komut terminalden okunduğunda, döngüdeki herhangi bir ifade yürütülmeden önce foreach? (veya prompt2) ile istemde bulunularak döngü bir kez okunur. Terminalde bir döngü yazarken hata yaparsanız bunu silebilirsiniz.

getspath (+) Sistemin yürütme yolunu yazdırır. (Yalnızca TCF)

getxvers (+) Deneysel sürüm ön ekini yazdırır. (Yalnızca TCF)

glob wordlist echo gibidir, ancak -n parametresi tanınmaz ve kelimeler çıktıda null karakterlerle sınırlandırılır. Bir kelime listesini dosya adına göre genişletmek için kabuğu kullanmak isteyen programlar için kullanışlıdır.

goto word word, label biçiminde bir dize üretmek üzere dosya adı ve komut ikamesine tabi tutulur. Kabuk girdisini olabildiğince başa sarar, önünde boşluklar veya sekmeler bulunabilen label: biçiminde bir satır arar ve yürütmeye o satırdan sonra devam eder.

hashstat Dahili karma tablosunun (hash table) komutları bulmada (ve exec'lerden kaçınmada) ne kadar etkili olduğunu gösteren bir istatistik satırı yazdırır. Karma işlevinin olası bir eşleşme gösterdiği path'in her bir bileşeni için ve / ile başlamayan her bir bileşende bir exec denenir.

vfork(2) olmayan makinelerde yalnızca karma kovalarının sayısını ve boyutunu yazdırır.

history [-hTr] [n] history -S|-L|-M [filename] (+) history -c (+) İlk biçim geçmiş olay listesini yazdırır. Eğer n verilirse yalnızca en son n olay yazdırılır veya kaydedilir. -h ile, geçmiş listesi başında sayılar olmadan yazdırılır. -T belirtilirse, zaman damgaları da yorum biçiminde yazdırılır. (Bu, 'history -L' veya 'source -h' ile yüklemeye uygun dosyalar üretmek için kullanılabilir.) -r ile, yazdırma sırası en eskiden en yeniye değil, en yeniden en eskiye doğrudur.

-S ile, ikinci biçim geçmiş listesini filename dosyasına kaydeder. savehist kabuk değişkeninin ilk kelimesi bir sayıya ayarlanmışsa, en fazla o kadar satır kaydedilir. savehist'in ikinci kelimesi merge olarak ayarlanmışsa, geçmiş listesi mevcut geçmiş dosyasının üzerine yazılmak yerine onunla birleştirilir (varsa) ve zaman damgasına göre sıralanır. (+) Birleştirme, aynı anda kullanılan birkaç kabuğa sahip X Window System gibi bir ortam için tasarlanmıştır. savehist'in ikinci kelimesi merge ve üçüncü kelimesi lock olarak ayarlanmışsa, geçmiş dosyası güncellemesi, tam olarak aynı anda geçmişi birleştirmek isteyebilecek diğer kabuk oturumlarıyla sıralı hale getirilir (kilitlenir).

-L ile, kabuk, muhtemelen -S seçeneği veya savehist mekanizması tarafından kaydedilmiş bir geçmiş listesi olan filename dosyasını geçmiş listesinin sonuna ekler. -M, -L gibidir, ancak filename içeriği geçmiş listesiyle birleştirilir ve zaman damgasına göre sıralanır. Her iki durumda da, filename verilmemişse histfile kullanılır ve histfile ayarlanmamışsa ~/.history kullanılır. history -L, bir filename gerektirmemesi dışında tam olarak 'source -h' gibidir.

Giriş kabuklarının başlangıçta history -L eşdeğerini yaptığını ve savehist ayarlanmışsa çıkmadan önce history -S yaptığını unutmayın. Normalde ~/.history dosyasından önce yalnızca ~/.tcshrc kaynak alındığından, histfile ~/.login yerine ~/.tcshrc içinde ayarlanmalıdır.

histlit ayarlanmışsa, birinci ve ikinci biçimler geçmiş listesinin düz (genişletilmemiş) biçimini yazdırır ve kaydeder.

Son biçim geçmiş listesini temizler.

hup [command] (+) command ile, command komutunu bir askıda kalma (hangup) sinyalinde çıkacak şekilde çalıştırır ve kabuk çıktığında ona bir askıda kalma sinyali göndermesini ayarlar. Komutların hup komutunu geçersiz kılarak askıda kalma sinyallerine kendi yanıtlarını ayarlayabileceklerini unutmayın. Argümansız olarak, etkileşimli olmayan kabuğun betiğin geri kalanı için yalnızca bir askıda kalma sinyalinde çıkmasına neden olur. Ayrıca bkz. Sinyal işleme ve nohup yerleşik komutu.

if (expr) command if (expr) (İfadeler altında açıklandığı gibi bir ifadedir) doğru olarak değerlendirilirse, command yürütülür. command üzerindeki değişken ikamesi erkenden, if komutunun geri kalanıyla aynı zamanda gerçekleşir. command basit bir komut olmalıdır, bir takma ad, bir boru hattı, bir komut listesi veya parantez içine alınmış bir komut listesi olamaz, ancak argümanları olabilir. expr yanlış olsa ve command bu nedenle yürütülmese bile girdi/çıktı yönlendirmesi gerçekleşir; bu bir hatadır (bug).

if (expr) then ... else if (expr2) then ... else ... endif Belirtilen expr doğru ise ilk else ifadesine kadar olan komutlar yürütülür; aksi takdirde expr2 doğru ise ikinci else ifadesine kadar olan komutlar yürütülür, vb. Herhangi bir sayıda else-if çifti mümkündür; yalnızca tek bir endif gereklidir. else kısmı da benzer şekilde isteğe bağlıdır. (else ve endif kelimeleri girdi satırlarının başında görünmelidir; if, girdi satırında tek başına veya bir else ifadesinden sonra görünmelidir.)

inlib shared-library ... (+) Her bir shared-library paylaşılan kitaplığını geçerli ortama ekler. Bir paylaşılan kitaplığı kaldırmanın hiçbir yolu yoktur. (Yalnızca Domain/OS)

jobs [-l] Etkin işleri listeler. -l ile, normal bilgilere ek olarak süreç kimliklerini (PID) de listeler. TCF sistemlerinde, her bir işin hangi sitede yürütüldüğünü yazdırır.

kill [-s signal] %job|pid ... kill -l Birinci ve ikinci biçimler, belirtilen işlere veya süreçlere belirtilen sinyali (veya hiçbiri verilmemişse TERM (terminate) sinyalini) gönderir. job, İşler altında açıklandığı gibi bir sayı, bir dize, ``, %, + veya - olabilir. Sinyaller sayı ile veya adıyla ( /usr/include/signal.h içinde verilen, başındaki SIG ön eki kaldırılmış olarak) verilir. Varsayılan bir iş yoktur; sadece kill demek geçerli işe bir sinyal göndermez. Gönderilen sinyal TERM (terminate) veya HUP (hangup) ise, işe veya sürece bir CONT (continue) sinyali de gönderilir. Üçüncü biçim sinyal adlarını listeler.

limit [-h] [resource [maximum-use]] Geçerli süreç ve onun oluşturduğu her bir süreç tarafından yapılan tüketimi, belirtilen resource kaynağında maximum-use değerini bireysel olarak aşmayacak şekilde sınırlandırır. Eğer maximum-use verilmezse, geçerli sınır yazdırılır; resource verilmezse, tüm sınırlamalar verilir. -h bayrağı verilirse, geçerli sınırlar yerine sert limitler (hard limits) kullanılır. Sert limitler, geçerli sınırların değerlerine bir tavan getirir. Yalnızca süper kullanıcı sert limitleri yükseltebilir, ancak bir kullanıcı geçerli sınırları yasal aralık içinde düşürebilir veya yükseltebilir.

Kontrol edilebilir kaynaklar şu anda şunları içerir (işletim sistemi tarafından destekleniyorsa):

cputime her bir süreç tarafından kullanılacak maksimum cpu-saniyesi sayısı filesize oluşturulabilecek en büyük tek dosya datasize program metninin sonunun ötesinde sbrk(2) aracılığıyla veri+yığın bölgesinin maksimum büyümesi stacksize otomatik olarak genişletilen yığın bölgesinin maksimum boyutu coredumpsize oluşturulacak en büyük core dump boyutu memoryuse bir sürecin belirli bir zamanda kendisine tahsis edebileceği maksimum fiziksel bellek miktarı vmemoryuse bir sürecin belirli bir zamanda kendisine tahsis edebileceği maksimum sanal bellek miktarı (adres alanı) vmemoryuse bir sürecin belirli bir zamanda kendisine tahsis edebileceği maksimum sanal bellek miktarı heapsize bir sürecin brk() sistem çağrısı başına tahsis edebileceği maksimum bellek miktarı descriptors veya openfiles bu süreç için maksimum açık dosya sayısı pseudoterminals bu kullanıcı için maksimum sahte terminal sayısı kqueues bu süreç için tahsis edilen maksimum kqueue sayısı concurrency bu süreç için maksimum iş parçacığı (thread) sayısı memorylocked bir sürecin mlock(2) kullanarak belleğe kilitleyebileceği maksimum boyut maxproc bu kullanıcı kimliği (UID) için maksimum eş zamanlı süreç sayısı maxthread bu kullanıcı kimliği için maksimum eş zamanlı iş parçacığı (hafif süreçler) sayısı threads bu süreç için maksimum iş parçacığı sayısı sbsize bu kullanıcı için maksimum soket arabelleği kullanımı boyutu swapsize bu kullanıcı için ayrılan veya kullanılan maksimum takas (swap) alanı miktarı maxlocks bu kullanıcı için maksimum kilit sayısı posixlocks bu kullanıcı için maksimum POSIX danışma kilidi sayısı maxsignal bu kullanıcı için maksimum bekleyen sinyal sayısı maxmessage bu kullanıcı için POSIX mqueue'larındaki maksimum bayt sayısı maxnice kullanıcının [19...-20] aralığından bu kullanıcı için [0...39] aralığına eşlenen, yükseltmesine izin verilen maksimum nice önceliği maxrtprio bu kullanıcı için maksimum gerçek zamanlı öncelik maxrttime bu kullanıcı için mikrosaniye cinsinden RT görevleri için zaman aşımı.

maximum-use, bir (ondalık veya tam) sayı ve ardından bir ölçek faktörü olarak verilebilir. cputime dışındaki tüm limitler için varsayılan ölçek k veya kilobytes (1024 bayt); m veya megabytes ya da g veya gigabytes ölçek faktörü de kullanılabilir. cputime için varsayılan ölçeklendirme seconds iken, dakikalar için m veya saatler için h ya da dakika ve saniyeleri veren dd:ss biçiminde bir süre kullanılabilir.

maximum-use unlimited ise, belirtilen kaynak üzerindeki sınırlama kaldırılır (bu, unlimit yerleşik komutuna eşdeğerdir).

Hem kaynak adları hem de ölçek faktörleri için, adların benzersiz ön ekleri yeterlidir.

log (+) watch kabuk değişkenini yazdırır ve watch içinde belirtilen ve oturum açmış olan her kullanıcıyı, en son ne zaman oturum açtıklarına bakılmaksızın rapor eder. Ayrıca bkz. watchlog.

login Bir giriş kabuğunu sonlandırarak yerine /bin/login örneğini getirir. Bu, sh(1) ile uyumluluk için dahil edilmiş, oturumu kapatmanın bir yoludur.

logout Bir giriş kabuğunu sonlandırır. Özellikle ignoreeof ayarlanmışsa kullanışlıdır.

ls-F [-switch ...] [file ...] (+) Dosyaları ls -F gibi listeler ancak çok daha hızlıdır. Listelemedeki her bir özel dosya türünü özel bir karakterle tanımlar:

/ Dizin (Directory)

  • Yürütülebilir (Executable)

Blok cihazı (Block device)

% Karakter cihazı (Character device) | Adlandırılmış boru (Yalnızca adlandırılmış borulara sahip sistemlerde) = Soket (Yalnızca soketlere sahip sistemlerde) @ Sembolik bağ (Yalnızca sembolik bağlara sahip sistemlerde)

  • Gizli dizin (Yalnızca AIX) veya bağlama bağlı (Yalnızca HP/UX) : Ağ özel (Yalnızca HP/UX)

listlinks kabuk değişkeni ayarlanmışsa, sembolik bağlar daha ayrıntılı olarak tanımlanır (tabii ki yalnızca sembolik bağlara sahip sistemlerde):

@ Dizin olmayan bir dosyaya sembolik bağ

Bir dizine sembolik bağ & Hiçbir yere sembolik bağ (kırık bağ)

listlinks ayrıca ls-F komutunu yavaşlatır ve sembolik bağların işaret ettiği dosyaları tutan bölümlerin bağlanmasına (mount) neden olur.

listflags kabuk değişkeni x, a veya A ya da bunların herhangi bir kombinasyonuna (örneğin, xA) ayarlanmışsa, bunlar ls-F için bayrak olarak kullanılır ve ls -xF, ls -Fa, ls -FA veya bir kombinasyon (örneğin, ls -FxA) gibi davranmasını sağlar. ls -C varsayılan olmayan makinelerde, listflags bir x içermedikçe ls-F ls -CF gibi davranır, bu durumda ls -xF gibi davranır. ls-F, herhangi bir anahtar verilirse argümanlarını ls(1) komutuna geçirir, bu nedenle alias ls ls-F genellikle doğru şeyi yapar.

ls-F yerleşiği, dosya türüne veya uzantısına bağlı olarak dosyaları farklı renkler kullanarak listeleyebilir. color kabuk değişkenine ve LS_COLORS çevre değişkenine bakın.

migrate [-site] pid|%jobid ... (+) migrate -site (+) İlk biçim, süreci veya işi belirtilen siteye veya sistem yolu tarafından belirlenen varsayılan siteye taşır (migrate). İkinci biçim migrate -site $$ ifadesine eşdeğerdir: geçerli süreci belirtilen siteye taşır. Kabuğun kendisini taşımak beklenmedik davranışlara neden olabilir, çünkü kabuk tty'sini kaybetmekten hoşlanmaz. (Yalnızca TCF)

newgrp [-] [group] (+) exec newgrp ifadesine eşdeğerdir; bkz. newgrp(1). Yalnızca kabuk bu şekilde derlenmişse kullanılabilir; bkz. version kabuk değişkeni.

nice [+number] [command] Kabuk için zamanlama önceliğini number değerine, number olmadan ise 4 değerine ayarlar. command ile, command komutunu uygun öncelikte çalıştırır. Sayı ne kadar büyükse, süreç o kadar az CPU alır. Süper kullanıcı nice -number ... kullanarak negatif öncelik belirtebilir. Komut her zaman bir alt kabukta yürütülür ve basit if ifadelerindeki komutlara getirilen kısıtlamalar geçerlidir.

nohup [command] command ile, command komutunu askıda kalma (hangup) sinyallerini yok sayacak şekilde çalıştırır. Komutların nohup komutunu geçersiz kılarak askıda kalmalara kendi yanıtlarını ayarlayabileceklerini unutmayın. Argümansız olarak, etkileşimli olmayan kabuğun betiğin geri kalanı için yalnızca askıda kalmaları yok saymasına neden olur. Ayrıca bkz. Sinyal işleme ve hup yerleşik komutu.

notify [%job ...] Geçerli işin durumunda herhangi bir değişiklik olduğunda kabuğun her zamanki gibi bir sonraki istemi beklemek yerine kullanıcıyı eşzamansız olarak bilgilendirmesine neden olur. job, İşler altında açıklandığı gibi bir sayı, bir dize, ``, %, + veya - olabilir. Ayrıca bkz. notify kabuk değişkeni.

onintr [-|label] Kesintilerde (interrupts) kabuğun eylemini kontrol eder. Argümansız olarak, kabuk betiklerini sonlandırmak veya terminal komut girdi seviyesine dönmek olan kesintilerdeki varsayılan eylemi geri yükler. - ile, tüm kesintilerin yok sayılmasına neden olur. label ile, bir kesinti alındığında veya bir çocuk süreç kesintiye uğradığı için sonlandığında kabuğun bir goto label yürütmesine neden olur.

Kabuk ayrılmış olarak çalışıyorsa ve kesintilerin zaten devre dışı bırakıldığı sistem başlangıç dosyalarında (bkz. DOSYALAR) onintr yok sayılır.

popd [-p] [-l] [-n|-v] [+n] Argümansız olarak, dizin yığınını patlatır (pop) ve yeni üst dizine döner. Bir +n sayısı ile, yığındaki n'inci girdiyi atar.

Son olarak, popd'nin tüm biçimleri dirs gibi son dizin yığınını yazdırır. pushdsilent kabuk değişkeni bunu önlemek için ayarlanabilir ve bunu geçersiz kılmak için -p bayrağı verilebilir. -l, -n ve -v bayrakları popd üzerinde dirs ile aynı etkiye sahiptir. (+)

printenv [name] (+) Tüm çevre değişkenlerinin adlarını ve değerlerini veya name ile, name çevre değişkeninin değerini yazdırır.

pushd [-p] [-l] [-n|-v] [name|+n] Argümansız olarak, dizin yığınının en üstteki iki öğesini yer değiştirir. pushdtohome ayarlanmışsa, argümansız pushd, cd gibi pushd ~ yapar. (+) name ile, geçerli çalışma dizinini dizin yığına iter ve name dizinine değiştirir. name - ise önceki çalışma dizini olarak yorumlanır (bkz. Dosya adı ikamesi). (+) dunique ayarlanmışsa, pushd name dizinini yığına itmeden önce yığındaki tüm örneklerini kaldırır. (+) Bir +n sayısı ile, dizin yığınının n'inci öğesini en üst öğe olacak şekilde döndürür ve ona değiştirir. Ancak dextract ayarlanmışsa, pushd +n n'inci dizini çıkarır, yığının en üstüne iter ve ona değiştirir. (+)

Son olarak, pushd'nin tüm biçimleri dirs gibi son dizin yığınını yazdırır. pushdsilent kabuk değişkeni bunu önlemek için ayarlanabilir ve bunu geçersiz kılmak için -p bayrağı verilebilir. -l, -n ve -v bayrakları pushd üzerinde dirs ile aynı etkiye sahiptir. (+)

rehash path değişkenindeki dizinlerin içeriğinin dahili karma tablosunun yeniden hesaplanmasına neden olur. Oturum açmışken path içindeki dizinlere yeni komutlar eklenirse ve autorehash kabuk değişkeni ayarlanmamışsa bu gereklidir. autorehash ile, farklı bir dizinde bulunan aynı ada sahip başka bir komutun karma tablosunda zaten mevcut olduğu özel durum hariç, yeni bir komut otomatik olarak bulunacaktır. Ayrıca tilde genişletmesi tarafından oluşturulan ev dizinleri önbelleğini de temizler.

repeat count command Belirtilen komut (yukarıdaki tek satırlı if ifadesindeki komutla aynı kısıtlamalara tabidir) count kez yürütülür. Girdi/Çıktı yönlendirmeleri, count 0 olsa bile tam olarak bir kez gerçekleşir.

rootnode //nodename (+) Kök düğümü (rootnode) //nodename olarak değiştirir, böylece /' ifadesi //nodename' olarak yorumlanır. (Yalnızca Domain/OS)

sched (+) sched [+]hh:mm command (+) sched -n (+) İlk biçim zamanlanmış olay listesini yazdırır. sched kabuk değişkeni, zamanlanmış olay listesinin yazdırılacağı biçimi tanımlamak için ayarlanabilir. İkinci biçim command komutunu zamanlanmış olay listesine ekler. Örneğin,

sched 11:00 echo Saat on bir oldu.

kabuğun sabah 11'de Saat on bir oldu. şeklinde yankılanmasına neden olur. Zaman 12 saatlik AM/PM biçiminde olabilir:

sched 5pm set prompt='[%h] Saat 5'i gecti; eve git: >'

veya geçerli saate göre göreli olabilir:

sched +2:15 /usr/lib/uucp/uucico -r1 -sother

Göreli bir zaman belirtimi AM/PM biçimini kullanamaz. Üçüncü biçim olay listesinden n. öğeyi kaldırır:

sched 1 Wed Apr 4 15:42 /usr/lib/uucp/uucico -r1 -sother 2 Wed Apr 4 17:00 set prompt=[%h] Saat 5'i gecti; eve git: > sched -2 sched 1 Wed Apr 4 15:42 /usr/lib/uucp/uucico -r1 -sother

Zamanlanmış olaylar listesindeki bir komut, komutun planlandığı zamandan sonra ilk istem yazdırılmadan hemen önce yürütülür. Komutun çalıştırılacağı tam zamanı kaçırmak mümkündür, ancak vadesi geçmiş bir komut bir sonraki istemde yürütülecektir. Kabuk kullanıcı girdisini beklerken vadesi gelen bir komut hemen yürütülür. Ancak, zaten çalışan bir komutun normal işleyişi, zamanlanmış bir olay listesi öğesinin çalıştırılabilmesi için kesintiye uğratılmayacaktır.

Bu mekanizma, bazı Unix sistemlerindeki at(1) komutuna benzer ancak onunla aynı değildir. En büyük dezavantajı, bir komutu tam olarak belirtilen zamanda çalıştırmayabilmesidir. En büyük avantajı ise sched doğrudan kabuktan çalıştığı için kabuk değişkenlerine ve diğer yapılara erişebilmesidir. Bu, günün saatine göre kişinin çalışma ortamını değiştirmek için bir mekanizma sağlar.

set set name ... set name=word ... set [-r] [-f|-l] name=(wordlist) ... (+) set name[index]=word ... set -r (+) set -r name ... (+) set -r name=word ... (+) Komutun ilk biçimi tüm kabuk değişkenlerinin değerlerini yazdırır. Tek bir kelimeden fazlasını içeren değişkenler parantez içine alınmış bir kelime listesi olarak yazdırılır. İkinci biçim name değişkenini boş dizeye (null) ayarlar. Üçüncü biçim name değişkenini tek bir kelimeye ayarlar. Dördüncü biçim name değişkenini wordlist içindeki kelimeler listesine ayarlar. Tüm durumlarda değer komut ve dosya adı genişletilmesine tabi tutulur. Eğer -r belirtilirse, değer salt okunur olarak ayarlanır. Eğer -f veya -l belirtilirse, sıralarını koruyarak yalnızca benzersiz kelimeleri ayarlar. -f bir kelimenin ilk görünümünü tercih eder, -l ise sonuncusunu. Beşinci biçim name değişkeninin index'inci bileşenini word olarak ayarlar; bu bileşen zaten mevcut olmalıdır. Altıncı biçim yalnızca salt okunur olan tüm kabuk değişkenlerinin adlarını listeler. Yedinci biçim bir değeri olup olmadığına bakılmaksızın name değişkenini salt okunur yapar. Sekizinci biçim üçüncü biçim gibidir, ancak aynı zamanda name değişkenini salt okunur yapar.

Bu argümanlar tek bir set komutunda birden fazla değişkeni ayarlamak ve/veya salt okunur yapmak için tekrarlanabilir. Ancak, değişken genişletmesinin herhangi bir ayarlama gerçekleşmeden önce tüm argümanlar için gerçekleştiğini unutmayın. Ayrıca = işaretinin hem name hem de word'e bitişik olabileceğini veya her ikisinden de boşlukla ayrılabileceğini, ancak yalnızca birine veya diğerine bitişik olamayacağını unutmayın. Ayrıca bkz. unset yerleşik komutu.

setenv [name [value]] Argümansız olarak, tüm çevre değişkenlerinin adlarını ve değerlerini yazdırır. name verildiğinde, name çevre değişkenini value değerine ayarlar, value yoksa boş dizeye (null) ayarlar.

setpath path (+) setpath(1) komutuna eşdeğerdir. (Yalnızca Mach)

setspath LOCAL|site|cpu ... (+) Sistemin yürütme yolunu ayarlar. (Yalnızca TCF)

settc cap value (+) Kabuğa terminal yeteneği cap'in (termcap(5) içinde tanımlandığı gibi) value değerine sahip olduğuna inanmasını söyler. Hiçbir akıl sağlığı kontrolü yapılmaz. Concept terminal kullanıcıları, en sağdaki sütunda düzgün sarma elde etmek için settc xn no yapmak zorunda kalabilirler.

setty [-d|-q|-x] [-a] [[+|-]mode] (+) Kabuğun değişmesine izin vermediği tty modlarını (bkz. Terminal yönetimi) kontrol eder. -d, -q veya -x sırasıyla edit, quote veya execute tty modları kümesi üzerinde işlem yapmasını söyler; -d, -q veya -x olmadan execute kullanılır.

Diğer argümanlar olmadan, setty seçilen kümede sabitlenmiş olan modları listeler. (+mode) veya kapalı (-mode) olan modları listeler. Kullanılabilir modlar ve dolayısıyla ekran gösterimi sistemden sisteme değişir. -a ile, sabitlenmiş olsun veya olmasın seçilen kümedeki tüm tty modlarını listeler. +mode, -mode veya mode ile, modu seçilen kümede açık veya kapalı olarak sabitler ya da mod üzerindeki kontrolü kaldırır. Örneğin, setty +echok echoe ifadesi, kabuk komutları yürütürken hem echok modunu açık olarak sabitler hem de komutların echoe modunu açıp kapatmasına izin verir.

setxvers [string] (+) Deneysel sürüm ön ekini string değerine ayarlar, string atlanırsa kaldırır. (Yalnızca TCF)

shift [variable] Argümansız olarak, argv[1] değerini atar ve argv üyelerini sola kaydırır. argv değişkeninin ayarlanmamış olması veya değer olarak birden az kelimeye sahip olması bir hatadır. variable ile, aynı işlemi belirtilen variable üzerinde gerçekleştirir.

source [-h] name [args ...] Kabuk, komutları name dosyasından okur ve yürütür. Komutlar geçmiş listesine konmaz. Herhangi bir args verilirse, bunlar argv değişkenine yerleştirilir. (+) source komutları iç içe geçebilir; çok derinden iç içe geçerlerse kabuğun dosya tanımlayıcıları tükenebilir. Herhangi bir düzeydeki bir source komutundaki hata, tüm iç içe geçmiş source komutlarını sonlandırır. -h ile, komutlar yürütülmek yerine geçmiş listesine yerleştirilir, bu da history -L işlemine çok benzer.

stop %job|pid ... Arka planda yürütülen belirtilen işleri veya süreçleri durdurur. job, İşler altında açıklandığı gibi bir sayı, bir dize, ``, %, + veya - olabilir. Varsayılan bir iş yoktur; sadece stop demek geçerli işi durdurmaz.

suspend Kabuğun, sanki ^Z ile bir durdurma sinyali gönderilmiş gibi olduğu yerde durmasına neden olur. Bu en sık su(1) tarafından başlatılan kabukları durdurmak için kullanılır.

switch (string) case str1: ... breaksw ... default: ... breaksw endsw Her bir case etiketi sırayla, önce komut ve dosya adı genişletilmiş olan belirtilen string ile karşılaştırılır. Değişken genişletilmiş olan case etiketlerinde *, ? ve [...] dosya meta karakterleri kullanılabilir. Bir default etiketi bulunmadan önce etiketlerden hiçbiri eşleşmezse, yürütme default etiketinden sonra başlar. Her bir case etiketi ve default etiketi bir satırın başında görünmelidir. breaksw komutu yürütmenin endsw sonrasından devam etmesine neden olur. Aksi takdirde, denetim C'de olduğu gibi case etiketleri ve default etiketleri üzerinden aşağıya doğru geçebilir (fall through). Hiçbir etiket eşleşmezse ve varsayılan (default) yoksa, yürütme endsw sonrasından devam eder.

telltc (+) Tüm terminal yeteneklerinin değerlerini listeler (bkz. termcap(5)).

termname [terminal type] (+) terminal type'ın (veya hiçbir terminal tipi verilmemişse TERM'in geçerli değerinin) ana bilgisayarın termcap(5) veya terminfo(5) veritabanında bir girdisi olup olmadığını test eder. Bir girdi varsa terminal tipini stdout'a yazdırır ve 0 döndürür, aksi takdirde 1 döndürür.

time [command] command komutunu yürütür (bu basit bir komut olmalıdır, bir takma ad, bir boru hattı, bir komut listesi veya parantez içine alınmış bir komut listesi olamaz) ve time değişkeni altında açıklandığı gibi bir zaman özeti yazdırır. Gerekirse, komut tamamlandığında zaman istatistiğini yazdırmak için fazladan bir kabuk oluşturulur. command olmadan, geçerli kabuk ve çocukları için bir zaman özeti yazdırır.

umask [value] Dosya oluşturma maskesini sekizlik (octal) düzende verilen value değerine ayarlar. Maske için yaygın değerler şunlardır: gruba tüm erişimi ve diğerlerine okuma ve yürütme erişimini veren 002 ile gruba ve diğerlerine okuma ve yürütme erişimi veren 022. value olmadan, geçerli dosya oluşturma maskesini yazdırır.

unalias pattern Adları pattern ile eşleşen tüm takma adları kaldırır. Böylece unalias * tüm takma adları kaldırır. Hiçbir şeyin takma adının kaldırılmaması bir hata değildir.

uncomplete pattern (+) Adları pattern ile eşleşen tüm tamamlamaları kaldırır. Böylece uncomplete * tüm tamamlamaları kaldırır. Hiçbir şeyin tamamlamasının kaldırılmaması bir hata değildir.

unhash Yürütülen programların konumlandırılmasını hızlandırmak için dahili karma tablosunun kullanımını devre dışı bırakır.

universe universe (+) Evreni (universe) universe değerine ayarlar. (Yalnızca Masscomp/RTU)

unlimit [-hf] [resource] resource üzerindeki sınırlamayı veya hiçbir resource belirtilmemişse tüm kaynak sınırlamalarını kaldırır. -h ile, ilgili sert limitler (hard limits) kaldırılır. Bunu yalnızca süper kullanıcı yapabilir. Çoğu sistem dosya tanımlayıcılarının sınırsız olmasına izin vermediğinden, unlimit komutunun başarıyla çıkamayabileceğini unutmayın. -f ile hatalar yok sayılır.

unset pattern Salt okunur olmadıkları sürece adları pattern ile eşleşen tüm değişkenleri kaldırır. Böylece unset * salt okunur olmayan tüm değişkenleri kaldırır; bu kötü bir fikirdir. Hiçbir şeyin kaldırılmaması bir hata değildir.

unsetenv pattern Adları pattern ile eşleşen tüm çevre değişkenlerini kaldırır. Böylece unsetenv * tüm çevre değişkenlerini kaldırır; bu kötü bir fikirdir. Hiçbir şeyin kaldırılmaması bir hata değildir.

ver [systype [command]] (+) Argümansız olarak SYSTYPE değerini yazdırır. systype ile, SYSTYPE değerini systype olarak ayarlar. systype ve command ile, command komutunu systype altında yürütür. systype bsd4.3 veya sys5.3 olabilir. (Yalnızca Domain/OS)

wait Kabuk tüm arka plan işlerini bekler. Kabuk etkileşimliyse, bir kesinti (interrupt) bekleme işlemini böler ve kabuğun bekleyen tüm işlerin adlarını ve iş numaralarını yazdırmasına neden olur.

warp universe (+) Evreni universe olarak ayarlar. (Yalnızca Convex/OS)

watchlog (+) log yerleşik komutunun (q.v.) alternatif bir adıdır. Yalnızca kabuk bu şekilde derlenmişse kullanılabilir; bkz. version kabuk değişkeni.

where command (+) Komutun path içindeki takma adlar, yerleşikler ve yürütülebilir dosyalar dahil olmak üzere bilinen tüm örneklerini bildirir.

which command (+) İkameler, yol araması vb. sonrasında kabuk tarafından yürütülecek olan komutu görüntüler. Yerleşik komut tıpkı which(1) gibidir, ancak tcsh takma adlarını ve yerleşiklerini doğru bir şekilde bildirir ve 10 ila 100 kat daha hızlıdır. Ayrıca bkz. which-command düzenleyici komutu.

while (expr) ... end expr (İfadeler altında açıklandığı gibi bir ifadedir) sıfır dışı olarak değerlendirildiği sürece while ile eşleşen end arasındaki komutları yürütür. while ve end kendi girdi satırlarında tek başlarına görünmelidir. Döngüyü zamanından önce sonlandırmak veya devam ettirmek için break ve continue kullanılabilir. Girdi bir terminal ise, kullanıcı döngü boyunca ilk kez foreach'te olduğu gibi yönlendirilir (istem sunulur).

Özel takma adlar (Special aliases) (+) Ayarlanırsa, bu takma adların her biri belirtilen zamanda otomatik olarak yürütülür. Hepsi başlangıçta tanımsızdır.

beepcmd Kabuk terminal zilini çalmak istediğinde çalışır.

cwdcmd Çalışma dizininin her değişiminden sonra çalışır. Örneğin, kullanıcı xterm(1) ve twm(1) gibi başlık çubuklarını destekleyen yeniden ebeveynlik yapan (re-parenting) bir pencere yöneticisi kullanarak bir X pencere sisteminde çalışıyorsa ve şunu yaparsa:

alias cwdcmd 'echo -n "^[]2;${HOST}:$cwd ^G"'

o zaman kabuk, çalışan xterm(1) başlığını ana bilgisayarın adı, bir iki nokta üst üste ve geçerli tam çalışma dizini olacak şekilde değiştirecektir. Bunu yapmanın daha gösterişli bir yolu şudur:

alias cwdcmd 'echo -n "^[]2;${HOST}:$cwd^G^[]1;${HOST}^G"'

Bu, ana bilgisayar adını ve çalışma dizinini başlık çubuğuna koyacaktır ancak simge yöneticisi menüsüne yalnızca ana bilgisayar adını koyacaktır.

cwdcmd içine bir cd, pushd veya popd koymanın sonsuz bir döngüye neden olabileceğini unutmayın. Yazara göre, bunu yapan herkes hak ettiğini bulacaktır.

jobcmd Her komut yürütülmeden önce veya komut durum değiştirdiğinde çalışır. Bu, postcmd gibidir ancak yerleşikleri yazdırmaz.

alias jobcmd 'echo -n "^[]2;!#:q^G"'

yazıldığında, vi foo.c komutunu yürütmek komut dizesini xterm başlık çubuğuna koyacaktır.

helpcommand run-help düzenleyici komutu tarafından çağrılır. Yardım istenen komut adı tek argüman olarak geçirilir. Örneğin, biri şunu yaparsa:

alias helpcommand '!:1 --help'

o zaman GNU yardım çağırma kuralı kullanılarak komutun kendi yardım gösterimi çağrılacaktır. Şu anda, birçok komuttan oluşan bir tablo kullanmak dışında, çeşitli çağırma kurallarını (örneğin, geleneksel Unix -h seçeneği) hesaba katmanın kolay bir yolu yoktur.

periodic Her tperiod dakikada bir çalışır. Bu, yeni e-posta gibi yaygın ancak seyrek değişiklikleri kontrol etmek için uygun bir araç sağlar. Örneğin, biri şunu yaparsa:

set tperiod = 30 alias periodic checknews

o zaman checknews(1) programı her 30 dakikada bir çalışır. periodic ayarlanmışsa ancak tperiod ayarlanmamışsa veya 0 olarak ayarlanmışsa, periodic precmd gibi davranır.

precmd Her istem yazdırılmadan hemen önce çalışır. Örneğin, biri şunu yaparsa:

alias precmd date

o zaman date(1) kabuk her komut için istemde bulunmadan hemen önce çalışır. precmd'nin ne yapacak şekilde ayarlanabileceğine dair bir sınır yoktur, ancak sağduyulu olunmalıdır.

postcmd Her komut yürütülmeden önce çalışır.

alias postcmd 'echo -n "^[]2;!#:q^G"'

yazıldığında, vi foo.c komutunu yürütmek komut dizesini xterm başlık çubuğuna koyacaktır.

shell Kendileri bir yorumlayıcı belirtmeyen yürütülebilir betikler için yorumlayıcıyı belirtir. İlk kelime istenen yorumlayıcının tam yol adı olmalıdır (örneğin, /bin/csh veya /usr/local/bin/tcsh).

Özel kabuk değişkenleri (Special shell variables) Bu bölümde açıklanan değişkenlerin kabuk için özel bir anlamı vardır.

Kabuk; başlangıçta addsuffix, argv, autologout, csubstnonl, command, echo_style, edit, gid, group, home, loginsh, oid, path, prompt, prompt2, prompt3, shell, shlvl, tcsh, term, tty, uid, user ve version değişkenlerini ayarlar; kullanıcı tarafından değiştirilmedikçe bundan sonra değişmezler. Kabuk gerektiğinde cwd, dirstack, owd ve status değişkenlerini günceller ve çıkışta logout değişkenini ayarlar.

Kabuk; group, home, path, shlvl, term ve user değişkenlerini aynı isimdeki çevre değişkenleriyle senkronize eder: çevre değişkeni her değiştiğinde kabuk, eşleşmesi için karşılık gelen kabuk değişkenini değiştirir (kabuk değişkeni salt okunur olmadığı sürece) ve tersi de geçerlidir. cwd ve PWD özdeş anlamlara sahip olsalar da, bu şekilde senkronize edilmediklerini ve kabuğun path ile PATH'in farklı biçimleri arasında otomatik olarak dönüştürme yaptığını unutmayın.

addsuffix (+) Ayarlanırsa, dosya adı tamamlama, tam eşleşme olduğunda dizinlerin sonuna `/' ve normal dosyaların sonuna bir boşluk ekler. Varsayılan olarak ayarlıdır.

afsuser (+) Ayarlanırsa, autologout'un autolock özelliği kerberos kimlik doğrulaması için yerel kullanıcı adı yerine bunun değerini kullanır.

ampm (+) Ayarlanırsa, tüm zamanlar 12 saatlik AM/PM biçiminde gösterilir.

anyerror (+) Bu değişken, status değişkeninin değerine neyin aktarılacağını seçer. Daha fazla bilgi için aşağıdaki status değişkeninin açıklamasına bakın.

argv Kabuğa verilen argümanlar. Konumsal parametreler argv içinden alınır, yani $1 yerine $argv[1] getirilir vb. Varsayılan olarak ayarlıdır, ancak etkileşimli kabuklarda genellikle boştur.

autocorrect (+) Ayarlanırsa, her tamamlama girişiminden önce spell-word düzenleyici komutu otomatik olarak çağrılır.

autoexpand (+) Ayarlanırsa, her tamamlama girişiminden önce expand-history düzenleyici komutu otomatik olarak çağrılır. Bu onlyhistory olarak ayarlanırsa, yalnızca geçmiş genişletilir ve ikinci bir tamamlama dosya adlarını genişletir.

autolist (+) Ayarlanırsa, belirsiz bir tamamlamadan sonra olasılıklar listelenir. ambiguous olarak ayarlanırsa, olasılıklar yalnızca tamamlama ile yeni bir karakter eklenmediğinde listelenir.

autologout (+) İlk kelime, otomatik oturum kapatmadan önceki hareketsizlik süresidir (dakika cinsinden). İsteğe bağlı ikinci kelime, otomatik kilitlemeden önceki hareketsizlik süresidir (dakika cinsinden). Kabuk otomatik olarak oturumu kapattığında auto-logout yazdırır, logout değişkenini automatic olarak ayarlar ve çıkar. Kabuk otomatik olarak kilitlendiğinde, kullanıcının çalışmaya devam etmek için parolasını girmesi gerekir. Beş yanlış deneme otomatik oturum kapatmayla sonuçlanır. Giriş ve süper kullanıcı kabuklarında varsayılan olarak 60 (60 dakika sonra otomatik oturum kapatma ve kilitleme yok) olarak ayarlıdır, ancak kabuk bir pencere sistemi altında çalıştığını düşünüyorsa (yani DISPLAY çevre değişkeni ayarlanmışsa), tty bir sahte tty (pty) ise veya kabuk bu şekilde derlenmemişse (bkz. version kabuk değişkeni) ayarlanmaz. Ayrıca bkz. afsuser ve logout kabuk değişkenleri.

autorehash (+) Ayarlanırsa, karma tablosunda bir komut bulunamazsa path değişkenindeki dizinlerin içeriğinin dahili karma tablosu yeniden hesaplanacaktır. Ek olarak, sırasıyla complete veya correct olarak ayarlanırsa, her komut tamamlama veya yazım düzeltme girişimi için kullanılabilir komutlar listesi yeniden oluşturulacaktır; always olarak ayarlanırsa, bu her iki durum için de yapılacaktır.

backslash_quote (+) Ayarlanırsa, ters eğik çizgiler (\) her zaman \, ' ve " işaretlerini kaçırır. Bu, karmaşık tırnak içine alma görevlerini kolaylaştırabilir, ancak csh(1) betiklerinde söz dizimi hatalarına neden olabilir.

catalog İleti kataloğunun (message catalog) dosya adı. Ayarlanırsa, tcsh varsayılan tcsh yerine ileti kataloğu olarak tcsh.${catalog} kullanır.

cdpath cd komutunun geçerli dizinde bulunamadıklarında alt dizinleri araması gereken dizinlerin listesi.

cdtohome (+) Ayarlanmamışsa, cd bir dizin adı gerektirir ve atlanırsa ev dizinine gitmez. Bu varsayılan olarak ayarlıdır.

color Ayarlanırsa, yerleşik ls-F için renkli ekranı etkinleştirir ve ls komutuna --color=auto parametresini geçirir. Alternatif olarak, rengi yalnızca tek bir komut için etkinleştirmek üzere yalnızca ls-F veya yalnızca ls olarak ayarlanabilir. Hiçbir şeye ayarlanmaması (ls-F ls) olarak ayarlanmasıyla eşdeğerdir.

colorcat Ayarlanırsa, NLS mesaj dosyaları için renkli kaçış dizisini etkinleştirir ve renkli NLS mesajları görüntüler.

command (+) Ayarlanırsa, -c bayrağı (q.v.) ile kabuğa geçirilen komuttur.

compat_expr (+) Ayarlanırsa, kabuk ifadeleri orijinal csh gibi sağdan sola değerlendirecektir.

complete (+) igncase olarak ayarlanırsa, tamamlama büyük/küçük harfe duyarsız hale gelir. enhance olarak ayarlanırsa, tamamlama büyük/küçük harfi yok sayar ve tireler ile alt çizgileri eşdeğer kabul eder; ayrıca noktaları, tireleri ve alt çizgileri (., - ve _) kelime ayırıcıları olarak ele alır. Enhance olarak ayarlanırsa, tamamlama büyük harf ve alt çizgi karakterlerini açıkça eşleştirir ve küçük harfler ile tireleri büyük/küçük harfe duyarsız bir şekilde eşleştirir; noktaları, tireleri ve alt çizgileri kelime ayırıcıları olarak ele alacaktır.

continue (+) Bir komut listesine ayarlanırsa, kabuk yeni bir tane başlatmak yerine listelenen komutları devam ettirecektir.

continue_args (+) continue ile aynıdır, ancak kabuk şunu yürütecektir:

echo pwd $argv > ~/._pause; %

correct (+) cmd olarak ayarlanırsa, komutların yazımı otomatik olarak düzeltilir. complete olarak ayarlanırsa, komutlar otomatik olarak tamamlanır. all olarak ayarlanırsa, tüm komut satırı düzeltilir.

csubstnonl (+) Ayarlanırsa, komut ikamesindeki yeni satırlar ve satır başları boşluklarla değiştirilir. Varsayılan olarak ayarlıdır.

cwd Geçerli dizinin tam yol adı. Ayrıca bkz. dirstack ve owd kabuk değişkenleri.

dextract (+) Ayarlanırsa, pushd +n dizin yığınını en üste döndürmek yerine n'inci dizini yığından çıkarır (extract).

dirsfile (+) dirs -S ve dirs -L komutlarının bir geçmiş dosyası aradığı varsayılan konum. Ayarlanmamışsa, ~/.cshdirs kullanılır. Normalde ~/.cshdirs dosyasından önce yalnızca ~/.tcshrc kaynak alındığından, dirsfile ~/.login yerine ~/.tcshrc içinde ayarlanmalıdır.

dirstack (+) Dizin yığınındaki tüm dizinlerin bir dizisi. $dirstack[1] geçerli çalışma dizini, $dirstack[2] yığındaki ilk dizin vb. Dizin yığını ikamelerinde vb. geçerli çalışma dizininin $dirstack[1] ancak =0 olduğunu unutmayın. dirstack ayarlanarak yığın keyfi olarak değiştirilebilir, ancak ilk öğe (geçerli çalışma dizimi) her zaman doğrudur. Ayrıca bkz. cwd ve owd kabuk değişkenleri.

dspmbyte (+) Sadece version kabuk değişkeninin bir parçası olarak 'dspm' listelenmişse bir etkisi vardır. euc olarak ayarlanırsa, EUC-kanji (Japonca) kodunun görüntülenmesini ve düzenlenmesini etkinleştirir. sjis olarak ayarlanırsa, Shift-JIS (Japonca) kodunun görüntülenmesini ve düzenlenmesini etkinleştirir. big5 olarak ayarlanırsa, Big5 (Çince) kodunun görüntülenmesini ve düzenlenmesini etkinleştirir. utf8 olarak ayarlanırsa, Utf8 (Unicode) kodunun görüntülenmesini ve düzenlenmesini etkinleştirir. Aşağıdaki biçime ayarlanırsa, orijinal çok baytlı kod biçiminin görüntülenmesini ve düzenlenmesini etkinleştirir:

set dspmbyte = 0000....(256 bayt)....0000

Tablo tam olarak 256 bayt gerektirir. 256 karakterin her bir karakteri (soldan sağa) 0x00, 0x01, ... 0xff ASCII kodlarına karşılık gelir. Her karakter 0, 1, 2 ve 3 sayılarına ayarlanır. Her sayının şu anlamı vardır: 0 ... çok baytlı karakterler için kullanılmaz. 1 ... çok baytlı bir karakterin ilk baytı için kullanılır. 2 ... çok baytlı bir karakterin ikinci baytı için kullanılır. 3 ... çok baytlı bir karakterin hem ilk baytı hem de ikinci baytı için kullanılır.

Örnek: 001322 olarak ayarlanırsa, 1. karakter (ASCII kodunun 0x00'ı anlamına gelir) ve 2. karakter (ASCII kodunun 0x01'i anlamına gelir) 0 olarak ayarlanır. O halde, çok baytlı karakterler için kullanılmaz. 3. karakter (0x02) '1' olarak ayarlanır, bu da çok baytlı bir karakterin ilk baytı için kullanıldığını gösterir. 4. karakter (0x03) '3' olarak ayarlanır. Çok baytlı bir karakterin hem ilk baytı hem de ikinci baytı için kullanılır. 5. ve 6. karakterler (0x04, 0x05) '2' olarak ayarlanır, bu da çok baytlı bir karakterin ikinci baytı için kullanıldıklarını gösterir.

ls komutunun GNU fileutils sürümü, -N ( --literal ) seçeneği olmadan çok baytlı dosya adlarını görüntüleyemez. Bu sürümü kullanıyorsanız, dspmbyte'ın ikinci kelimesini "ls" olarak ayarlayın. Değilse, örneğin, "ls-F -l" çok baytlı dosya adlarını görüntüleyemez.

Not: Bu değişken yalnızca derleme zamanında KANJI ve DSPMBYTE tanımlanmışsa kullanılabilir.

dunique (+) Ayarlanırsa, pushd name dizinini yığına itmeden önce yığındaki tüm örneklerini kaldırır.

echo Ayarlanırsa, her komut argümanlarıyla birlikte yürütülmeden hemen önce yankılanır (echo). Yerleşik olmayan komutlar için tüm genişletmeler yankılamadan önce gerçekleşir. Yerleşik komutlar, komut ve dosya adı ikamesinden önce yankılanır, çünkü bu ikameler daha sonra seçici olarak yapılır. -x komut satırı seçeneği tarafından ayarlanır.

echo_style (+) echo yerleşik komutunun stili. Şunlara ayarlanabilir:

bsd İlk argüman -n ise bir yeni satır yankılama; csh için varsayılan. sysv echo dizelerindeki ters eğik çizgili kaçış dizilerini tanı. both Hem -n bayrağını hem de ters eğik çizgili kaçış dizilerini tanı; tcsh için varsayılan. none Hiçbirini tanıma.

Varsayılan olarak yerel sistem varsayılanına ayarlıdır. BSD ve System V seçenekleri ilgili sistemlerdeki echo(1) kılavuz sayfalarında açıklanmıştır.

edit (+) Ayarlanırsa, komut satırı düzenleyicisi kullanılır. Etkileşimli kabuklarda varsayılan olarak ayarlıdır.

editors (+) run-fg-editor düzenleyici komutunun eşleşmesi için komut adlarının bir listesi. Ayarlanmamışsa, bunun yerine EDITOR (ayarlanmamışsa ed) ve VISUAL (ayarlanmamışsa vi) çevre değişkenleri kullanılacaktır.

ellipsis (+) Ayarlanırsa, %c/%. ve %C istem dizileri (bkz. prompt kabuk değişkeni) atlanan dizinleri /<skipped> yerine bir üç nokta (...) ile gösterir.

euid (+) Kullanıcının etkin kullanıcı kimliği (effective user ID).

euser (+) Etkin kullanıcı kimliğine karşılık gelen ilk eşleşen passwd girdi adı.

fignore (+) Tamamlama tarafından yok sayılacak dosya adı soneklerini listeler.

filec tcsh'te tamamlama her zaman kullanılır ve bu değişken varsayılan olarak yok sayılır. edit ayarlanmamışsa geleneksel csh tamamlaması kullanılır. csh içinde ayarlanmışsa, dosya adı tamamlama kullanılır.

gid (+) Kullanıcının gerçek grup kimliği (real group ID).

globdot (+) Ayarlanırsa, joker karakter glob şablonları . ve .. hariç, . ile başlayan dosya ve dizinlerle eşleşecektir.

globstar (+) Ayarlanırsa, ** ve *** dosya glob şablonları, / dahil herhangi bir karakter dizisiyle eşleşerek mevcut alt dizinleri tarayacaktır (örneğin, ls **.c geçerli dizin ağacındaki tüm .c dosyalarını listeleyecektir). Tek başına kullanılırsa, sıfır veya daha fazla alt dizinle eşleşir (örneğin, ls /usr/include/**/time.h ifadesi /usr/include dizin ağacında adı time.h olan tüm dosyaları listeleyecektir; ls /usr/include/**time.h ifadesi /usr/include dizin ağacında time.h ile biten tüm dosyalarla eşleşecektir). Yineleme ile ilgili sorunları önlemek için, ** glob şablonu bir dizin içeren bir sembolik bağın içine inmeyecektir. Bunu geçersiz kılmak için *** kullanın.

group (+) Kullanıcının grup adı.

highlight Ayarlanırsa, artımlı arama eşleşmesi (i-search-back ve i-search-fwd içinde) ve işaret (mark) ile imleç arasındaki bölge ters videoda vurgulanır.

Vurgulama, daha sık terminal yazımı gerektirir ve bu da ekstra yük getirir. Terminal performansına önem veriyorsanız, bunu ayarlanmamış olarak bırakmak isteyebilirsin.

histchars Geçmiş ikamesi (q.v.) içinde kullanılan karakterleri belirleyen bir dize değeri. Değerinin ilk karakteri, varsayılan ! karakterinin yerini alarak geçmiş ikame karakteri olarak kullanılır. Değerinin ikinci karakteri, hızlı ikamelerde ^ karakterinin yerini alır.

histdup (+) Geçmiş listesindeki yinelenen girdilerin işlenmesini kontrol eder. all olarak ayarlanırsa, geçmiş listesine yalnızca benzersiz geçmiş olayları girilir. prev olarak ayarlanırsa ve son geçmiş olayı geçerli komutla aynıysa, geçerli komut geçmişe girilmez. erase olarak ayarlanırsa ve geçmiş listesinde aynı olay bulunursa, o eski olay silinir ve geçerli olan eklenir. prev ve all seçeneklerinin, boşluk kalmaması için geçmiş olaylarını yeniden numaralandırdığını unutmayın.

histfile (+) history -S ve history -L komutlarının bir geçmiş dosyası aradığı varsayılan konum. Ayarlanmamışsa, ~/.history kullanılır. histfile, aynı ev dizinini farklı makineler arasında paylaşırken veya farklı terminallerde ayrı geçmişler kaydederken kullanışlıdır. Normalde ~/.history dosyasından önce yalnızca ~/.tcshrc kaynak alındığından, histfile ~/.login yerine ~/.tcshrc içinde ayarlanmalıdır.

histlit (+) Ayarlanırsa, yerleşik ve düzenleyici komutları ile savehist mekanizması geçmiş listesindeki satırların düz (genişletilmemiş) biçimini kullanır. Ayrıca bkz. toggle-literal-history düzenleyici komutu.

history İlk kelime kaydedilecek geçmiş olaylarının sayısını gösterir. İsteğe bağlı ikinci kelime (+) geçmişin yazdırılacağı biçimi gösterir; verilmezse %h\t%T\t%R\n kullanılır. Biçim dizileri aşağıda prompt altında açıklanmıştır; %R değişkeninin değişen anlamına dikkat edin. Varsayılan olarak 100 olarak ayarlıdır.

home Çağıranın ev dizinine başlatılır. ~ dosya adı genişletmesi bu değişkene atıfta bulunur.

ignoreeof Boş dizeye veya 0 değerine ayarlanırsa ve girdi cihazı bir terminal ise, dosya sonu komutu (genellikle boş bir satırda ^D yazılarak kullanıcı tarafından üretilir) kabuğun çıkmak yerine Use "exit" to leave tcsh. yazmasına neden olur. Bu, kabuğun kazara sonlandırılmasını önler. Tarihsel olarak bu ayar, sonsuz döngüleri önlemek için 26 ardışık EOF'tan sonra çıkardı. Bir n sayısına ayarlanırsa, kabuk n - 1 ardışık dosya sonunu yok sayar ve n'incide çıkar. (+) Ayarlanmamışsa 1 kullanılır, yani kabuk tek bir ^D ile çıkar.

implicitcd (+) Ayarlanırsa, kabuk bir komut olarak yazılan dizin adını o dizine geçme isteği gibi ele alır. verbose olarak ayarlanırsa, dizin değişikliği standart çıktıya yankılanır. Bu davranış etkileşimli olmayan kabuk betiklerinde veya birden fazla kelime içeren komut dizelerinde engellenir. Dizin değiştirmek, benzer adlı bir komutu yürütmekten önceliklidir, ancak takma ad ikamelerinden sonra yapılır. Tilde ve değişken genişletmeleri beklendiği gibi çalışır.

inputmode (+) insert veya overwrite olarak ayarlanırsa, düzenleyiciyi her satırın başında o girdi moduna sokar.

killdup (+) Kesme halkasındaki (kill ring) yinelenen girdilerin işlenmesini kontrol eder. all olarak ayarlanırsa, kesme halkasına yalnızca benzersiz dizeler girilir. prev olarak ayarlanırsa ve son kesilen dize geçerli kesilen dizeyle aynıysa, geçerli dize halkaya girmez. erase olarak ayarlanırsa ve kesme halkasında aynı dize bulunursa, eski dize silinir ve geçerli olan eklenir.

killring (+) Bellekte tutulacak kesilen (silinen) dizelerin sayısını gösterir. Varsayılan olarak 30 olarak ayarlıdır. Ayarlanmamışsa veya 2den küçük bir değere ayarlanmışsa, kabuk yalnızca en son kesilen dizeyi tutacaktır. Diziler; backward-delete-word, kill-line vb. gibi metin dizelerini silen (kesen) düzenleyici komutlarının yanı sıra copy-region-as-kill komutu tarafından da killring'e konur. yank düzenleyici komutu en son kesilen dizeyi komut satırına yapıştıracak (yank), yank-pop (bkz. Düzenleyici komutları) ise daha önce kesilen dizeleri yapıştırmak için kullanılabilecektir.

listflags (+) x, a veya A ya da bunların herhangi bir kombinasyonuna (örneğin, xA) ayarlanmışsa, bunlar ls-F için bayrak olarak kullanılır ve ls -xF, ls -Fa, ls -FA veya bir kombinasyon (örneğin, ls -FxA) gibi davranmasını sağlar: a tüm dosyaları gösterir (. ile başlasalar bile), A . ve .. hariç tüm dosyaları gösterir ve x aşağıya doğru değil enlemesine sıralar. listflags'in ikinci kelimesi ayarlanmışsa, ls(1) yolu olarak kullanılır.

listjobs (+) Ayarlanırsa, bir iş askıya alındığında tüm işler listelenir. long olarak ayarlanmışsa listeleme uzun biçimdedir.

listlinks (+) Ayarlanırsa, ls-F yerleşik komutu her bir sembolik bağın işaret ettiği dosyanın türünü gösterir.

listmax (+) list-choices düzenleyici komutunun önce sormadan listeleyeceği maksimum öğe sayısı.

listmaxrows (+) list-choices düzenleyici komutunun önce sormadan listeleyeceği maksimum öğe satırı sayısı.

loginsh (+) Kabuk bir giriş kabuğu ise kabuk tarafından ayarlanır. Bir kabuk içinde ayarlanması veya kaldırılmasının bir etkisi yoktur. Ayrıca bkz. shlvl.

logout (+) Kabuk tarafından normal bir oturum kapatmadan önce normal olarak, otomatik bir oturum kapatmadan önce automatic olarak ve kabuk bir askıda kalma sinyaliyle öldürüldüyse hangup olarak ayarlanır (bkz. Sinyal işleme). Ayrıca bkz. autologout kabuk değişkeni.

mail Gelen postaları kontrol etmek için isteğe bağlı olarak önünde sayısal bir kelime bulunabilen dizin ve dosyaların listesi. Her istemden önce, son kontrolden beri 10 dakika geçmişse, kabuk her dosyayı kontrol eder ve dosya boyutu sıfırdan büyükse ve değişiklik süresi erişim süresinden büyükse You have new mail. (veya mail birden fazla dosya içeriyorsa You have new mail in name.) der.

Giriş kabuğundaysanız, gereksiz bildirimleri önlemek için kabuğun başladığı andan sonra değiştirilmedikçe hiçbir posta dosyası bildirilmez. Çoğu oturum açma programı oturum açtığınızda postanız olup olmadığını size söyleyecektir.

mail içinde belirtilen bir dosya bir dizin ise, kabuk bu dizindeki her bir dosyayı ayrı bir ileti olarak sayacak ve uygun şekilde You have n mails. veya You have n mails in name. şeklinde bildirecektir. Bu işlevsellik öncelikle postaları bu şekilde saklayan Andrew Mail System gibi sistemler için sağlanmıştır.

mail'in ilk kelimesi sayısal ise, saniye cinsinden farklı bir posta kontrol aralığı olarak alınır.

Çok nadir durumlarda kabuk, You have new mail. yerine You have mail. bildirebilir.

matchbeep (+) never olarak ayarlanırsa, tamamlama asla bip sesi çıkarmaz. nomatch olarak ayarlanırsa, yalnızca eşleşme olmadığında bip sesi çıkarır. ambiguous olarak ayarlanırsa, birden fazla eşleşme olduğunda bip sesi çıkarır. notunique olarak ayarlanırsa, bir tam ve diğer daha uzun eşleşmeler olduğunda bip sesi çıkarır. Ayarlanmamışsa, ambiguous kullanılır.

nobeep (+) Ayarlanırsa, bip sesi tamamen devre dışı bırakılır. Ayrıca bkz. visiblebell.

noclobber Ayarlanırsa, Girdi/Çıktı bölümünde açıklandığı gibi, dosyaların kazara yok edilmesini önlemek ve >> yönlendirmelerinin mevcut dosyalara atıfta bulunmasını sağlamak için çıktı yönlendirmesine kısıtlamalar getirilir.

noding Ayarlanırsa, saat başı değişiminde istem zamanı belirteçlerinde DING! yazdırılmasını devre dışı bırakır.

noglob Ayarlanırsa, Dosya adı ikamesi ve Dizin yığını ikamesi (q.v.) engellenir. Bu en çok dosya adlarıyla ilgilenmeyen kabuk betiklerinde veya bir dosya adları listesi elde edildikten ve daha fazla genişletme istenmediğinde kullanışlıdır.

nokanji (+) Ayarlanırsa ve kabuk Kanji'yi destekliyorsa (bkz. version kabuk değişkeni), meta tuşunun kullanılabilmesi için devre dışı bırakılır.

nonomatch Ayarlanırsa, mevcut hiçbir dosyayla eşleşmeyen bir Dosya adı ikamesi veya Dizin yığını ikamesi (q.v.) hata vermek yerine dokunulmadan bırakılır. İkamenin hatalı biçimlendirilmiş olması yine de bir hatadır, örneğin echo [ hala bir hata verir.

nostat (+) Bir tamamlama işlemi sırasında stat(2) çağrısı yapılmaması gereken dizinlerin (veya dizinlerle eşleşen glob şablonlarının; bkz. Dosya adı ikamesi) listesi. Bu genellikle stat(2) işlemi çok fazla zaman alan dizinleri (örneğin /afs) hariç tutmak için kullanılır.

notify Ayarlanırsa, kabuk iş tamamlanmalarını eşzamansız olarak bildirir. Varsayılan, iş tamamlanmalarını bir istem yazdırmadan hemen önce sunmaktır.

oid (+) Kullanıcının gerçek organizasyon kimliği (real organization ID). (Yalnızca Domain/OS)

owd (+) cd ve pushd tarafından kullanılan - işaretine eşdeğer olan eski çalışma dizini. Ayrıca bkz. cwd ve dirstack kabuk değişkenleri.

padhour Ayarlanırsa, 24 ve 12 saatlik biçimlerde saatler için dolgu '0' yazdırılmasını etkinleştirir. Örn: 7:45:42 yerine 07:45:42.

parseoctal Eski sürümlerle uyumluluğu korumak için 0 ile başlayan sayısal değişkenler sekizlik (octal) olarak yorumlanmaz. Bu değişkenin ayarlanması düzgün sekizlik ayrıştırmayı etkinleştirir.

path Yürütülebilir komutların aranacağı dizinlerin listesi. Boş bir kelime geçerli dizini belirtir. Hiçbir path değişkeni yoksa, yalnızca tam yol adları yürütülecektir. path, başlangıçta kabuk tarafından PATH çevre değişkeninden veya PATH mevcut değilse (/usr/local/bin /usr/bsd /bin /usr/bin .) gibi sisteme bağlı varsayılan bir değerden ayarlanır. Kabuk, nasıl derlendiğine bağlı olarak . işaretini path içinde ilk veya son sıraya koyabilir ya da tamamen çıkarabilir; bkz. version kabuk değişkeni. Ne -c ne da -t seçeneği verilen bir kabuk, ~/.tcshrc dosyasını okuduktan sonra ve path her sıfırlandığında path içindeki dizinlerin içeriğini karma hale getirir (hash). Kabuk etkinken path içindeki bir dizine yeni bir komut eklenirse, kabuğun bunu bulması için bir rehash yapmak gerekebilir.

printexitvalue (+) Ayarlanırsa ve etkileşimli bir program sıfır olmayan bir durumla çıkarsa kabuk Exit status yazdırır.

prompt Terminalden her komut okunmadan önce yazdırılan dize. prompt, verilen bilgilerle değiştirilen aşağıdaki biçimlendirme dizilerinden (+) herhangi birini içerebilir:

%/ Geçerli çalışma dizini. %~ Geçerli çalışma dizini, ancak Dosya adı ikamesi uyarınca kişinin ev dizini ~ ile ve diğer kullanıcıların ev dizinleri ~user ile temsil edilir. ~user ikamesi yalnızca kabuk geçerli oturumda bir yol adında ~user ifadesini zaten kullandıysa gerçekleşir. %c[[0]n], %.[[0]n] Geçerli çalışma dizininin sondaki bileşeni veya bir n rakamı verilirse sondaki n bileşeni. Eğer n 0 ile başlıarsa, atlanan bileşenlerin sayısı /<skipped>trailing biçiminde sondaki bileşenden (veya bileşenlerden) önce yer alır. Eğer ellipsis kabuk değişkeni ayarlanmışsa, atlanan bileşenler bir üç nokta ile temsil edilir, böylece tamamı ...trailing olur. ~ ikamesi yukarıdaki %~ içinde olduğu gibi yapılır, ancak sondaki bileşenler sayılırken ~ bileşeni yok sayılır. %C %c gibidir, ancak ~ ikamesi yoktur. %h, %!, ! Geçerli geçmiş olayı numarası. %M Tam ana bilgisayar adı (hostname). %m İlk . işaretine kadar olan ana bilgisayar adı. %S (%s) Standart dışı (standout) modu başlat (durdur). %B (%b) Kalın yazma (bold) modunu başlat (durdur). %U (%u) Altı çizili (underline) modu başlat (durdur). %t, %@ 12 saatlik AM/PM biçiminde günün saati. %T %t gibidir, ancak 24 saatlik biçimdedir (ancak ampm kabuk değişkenine bakın). %p Saniyelerle birlikte 12 saatlik AM/PM biçiminde günün 'kesin' saati. %P %p gibidir, ancak 24 saatlik biçimdedir (ancak ampm kabuk değişkenine bakın). \c c, bindkey içinde olduğu gibi ayrıştırılır. ^c c, bindkey içinde olduğu gibi ayrıştırılır. %% Tek bir %. %n Kullanıcı adı. %N Etkin kullanıcı adı. %j İşlerin (jobs) sayısı. %d Day biçiminde haftanın günü. %D dd biçiminde gün. %w Mon biçiminde ay. %W mm biçiminde ay. %y yy biçiminde yıl. %Y yyyy biçiminde yıl. %l Kabuğun tty'si. %L İstemin sonundan ekranın sonuna veya satırın sonuna kadar temizler. %$ Hemen $ sonrasındaki kabuk veya çevre değişkeni adını genişletir. %# Normal kullanıcılar için > (veya promptchars kabuk değişkeninin ilk karakteri), süper kullanıcı için # (veya promptchars değişkeninin ikinci karakteri). %{string%} string ifadesini harfi harfine bir kaçış dizisi olarak dahil eder. Yalnızca terminal özniteliklerini değiştirmek için kullanılmalı ve imleç konumunu hareket ettirmemelidir. Bu, prompt içindeki son dizi olamaz. %? İstemden hemen önce yürütülen komutun dönüş kodu. %R prompt2 içinde ayrıştırıcının durumu. prompt3 içinde düzeltilen dize. history içinde geçmiş dizesi.

%B, %S, %U ve %{string%} yalnızca sekiz bit temiz kabuklarda kullanılabilir; bkz. version kabuk değişkeni.

Kalın, belirgin ve altı çizili diziler genellikle bir süper kullanıcı kabuğunu ayırt etmek için kullanılır. Örneğin,

set prompt = "%m [%h] %B[%@]%b [%/] you rang? " tut [37] [2:54pm] [/usr/accts/sys] you rang? _

%t, %@, %T, %p veya %P kullanılıyorsa ve noding ayarlanmamışsa, gerçek zaman yerine saat değişiminde (yani :00 dakikada) DING! yazdırın.

Etkileşimli kabuklarda varsayılan olarak %# olarak ayarlıdır.

prompt2 (+) while ve foreach döngülerinde ve \ ile biten satırlardan sonra istemde bulunulacak dize. prompt (q.v.) ile aynı biçim dizileri kullanılabilir; %R değişkeninin değişen anlamına dikkat edin. Etkileşimli kabuklarda varsayılan olarak %R? olarak ayarlıdır.

prompt3 (+) Otomatik yazım düzeltmesini onaylarken istemde bulunulacak dize. prompt (q.v.) ile aynı biçim dizileri kullanılabilir; %R değişkeninin değişen anlamına dikkat edin. Etkileşimli kabuklarda varsayılan olarak CORRECT>%R (y|n|e|a)? olarak ayarlıdır.

promptchars (+) Ayarlanırsa (iki karakterli bir dizeye), prompt kabuk değişkenindeki %# biçimlendirme dizisi normal kullanıcılar için ilk karakterle, süper kullanıcı için ikinci karakterle değiştirilir.

pushdtohome (+) Ayarlanırsa, argümansız pushd, cd gibi pushd ~ yapar.

pushdsilent (+) Ayarlanırsa, pushd ve popd dizin yığınını yazdırmaz.

recexact (+) Ayarlanırsa, daha uzun bir eşleşme mümkün olsa bile tamamlama tam bir eşleşme üzerinde tamamlanır.

recognize_only_executables (+) Ayarlanırsa, komut listeleme yolunda (path) yalnızca yürütülebilir olan dosyaları görüntüler. Yavaştır.

rmstar (+) Ayarlanırsa, rm * yürütülmeden önce kullanıcıya onay sorulur.

rprompt (+) İstem solda görüntülenirken ekranın sağ tarafında (komut girdisinden sonra) yazdırılacak dize. prompt ile aynı biçimlendirme karakterlerini tanır. Komut girdisinin engellenmemesini sağlamak için gerektiğinde otomatik olarak kaybolur ve tekrar belirir ve yalnızca istem, komut girdisi ve kendisi ilk satıra birlikte sığacaksa görünür. edit ayarlanmamışsa, rprompt istemden sonra ve komut girdisinden önce yazdırılacaktır.

savedirs (+) Ayarlanırsa, kabuk çıkmadan önce dirs -S yapar. İlk kelime bir sayıya ayarlanmışsa, en fazla o kadar dizin yığın girdisi kaydedilir.

savehist Ayarlanırsa, kabuk çıkmadan önce history -S yapar. İlk kelime bir sayıya ayarlanmışsa, en fazla o kadar satır kaydedilir. (Sayı, geçmiş girdisi sayısından küçük veya ona eşit olmalıdır; geçmiş ayarları sayısından büyük bir sayıya ayarlanırsa, yalnızca geçmiş girdileri kaydedilir.) İkinci kelime merge olarak ayarlanmışsa, geçmiş listesi üzerine yazılmak yerine mevcut geçmiş dosyasıyla birleştirilir (varsa) ve zaman damgasına göre sıralanır ve en son olaylar korunur. savehist'in ikinci kelimesi merge ve üçüncü kelimesi lock olarak ayarlanmışsa, geçmiş dosyası güncellemesi, tam olarak aynı anda geçmişi birleştirmek isteyebilecek diğer kabuk oturumlarıyla sıralı hale getirilir. (+)

sched (+) sched yerleşik komutunun zamanlanmış olayları yazdırdığı biçim; verilmezse %h\t%T\t%R\n kullanılır. Biçim dizileri yukarıda prompt altında açıklanmıştır; %R değişkeninin değişen anlamına dikkat edin.

shell Kabuğun içinde bulunduğu dosya. Bu, yürütme bitleri ayarlanmış olan ancak sistem tarafından yürütülemeyen dosyaları yorumlamak amacıyla kabukları çatallarken (forking) kullanılır. (Bkz. Yerleşik ve yerleşik olmayan komutların yürütülmesi.) Kabuğun (sisteme bağlı) evine başlatılır.

shlvl (+) İç içe geçmiş kabukların sayısı. Giriş kabuklarında 1'e sıfırlanır. Ayrıca bkz. loginsh.

status Son komuttan veya ters tırnak (backquote) genişletmesinden ya da bir boru hattındaki herhangi bir komuttan gelen çıkış durumu status değişkenine aktarılır. (Bu aynı zamanda varsayılan csh davranışıdır.) Bu varsayılan, POSIX'in zorunlu kıldığıyla (yalnızca son komutun durumunu döndürmek) eşleşmez. POSIX davranışıyla eşleşmesi için anyerror değişkenini kaldırmanız gerekir.

anyerror değişkeni kaldırılırsa, bir boru hattının çıkış durumu yalnızca boru hattındaki son komuttan belirlenir ve bir ters tırnak genişletmesinin çıkış durumu status değişkenine aktarılmaz.

Bir komut anormal şekilde sonlandırılırsa, durum değerine 0200 eklenir. Başarısız olan yerleşik komutlar çıkış durumu 1 döndürür, diğer tüm yerleşik komutlar 0 döndürür.

symlinks (+) Sembolik bağ (symlink) çözümlemesini kontrol etmek için birkaç farklı değere ayarlanabilir:

chase olarak ayarlanırsa, geçerli dizin sembolik bağ içeren bir dizine her değiştiğinde, bağın işaret ettiği dizinin gerçek adına genişletilir. Bu, kullanıcının ev dizini için çalışmaz; bu bir hatadır (bug).

ignore olarak ayarlanırsa, kabuk altta yatan dizine göre bağ geçilmeden önceki geçerli dizini oluşturmaya çalışır. Bu, sembolik bir bağ aracılığıyla cd yaptıktan sonra cd .. yapmanın kişiyi orijinal dizine döndürdüğü anlamına gelir. Bu durum yalnızca yerleşik komutları ve dosya adı tamamlamayı etkiler.

expand olarak ayarlanırsa, kabuk yol adlarına benzeyen argümanları gerçekten genişleterek sembolik bağları düzeltmeye çalışır. Bu, yalnızca yerleşikleri değil, herhangi bir komutu etkiler. Maalesef bu durum, komut seçeneklerine yerleştirilmiş olanlar gibi tanınması zor dosya adları için çalışmaz. Tırnak içine alınarak genişletme önlenebilir. Bu ayar genellikle en uygun olanı olsa da, bazen yanıltıcıdır ve genişletilmesi gereken bir argümanı tanıyamadığında bazen kafa karıştırıcıdır. Bir uzlaşma, ignore kullanmak ve gerektiğinde normalize-path düzenleyici komutunu (varsayılan olarak ^X-n tuşuna bağlıdır) kullanmaktır.

Bazı örnekler yerindedir. İlk olarak, bazı oyun dizinleri kuralım:

cd /tmp mkdir from from/src to ln -s from/src to/dst

symlinks ayarlanmamışken davranış şöyledir,

cd /tmp/to/dst; echo $cwd /tmp/to/dst cd ..; echo $cwd /tmp/from

symlinks chase olarak ayarlanmışken davranış şöyledir,

cd /tmp/to/dst; echo $cwd /tmp/from/src cd ..; echo $cwd /tmp/from

symlinks ignore olarak ayarlanmışken davranış şöyledir,

cd /tmp/to/dst; echo $cwd /tmp/to/dst cd ..; echo $cwd /tmp/to

ve symlinks expand olarak ayarlanmışken davranış şöyledir.

cd /tmp/to/dst; echo $cwd /tmp/to/dst cd ..; echo $cwd /tmp/to cd /tmp/to/dst; echo $cwd /tmp/to/dst cd ".."; echo $cwd /tmp/from /bin/echo .. /tmp/to /bin/echo ".." ..

expand genişletmesinin 1) cd gibi yerleşikler için tıpkı ignore gibi çalıştığını, 2) tırnak içine alınarak önlendiğini ve 3) dosya adları yerleşik olmayan komutlara geçirilmeden önce gerçekleştiğini unutmayın.

tcsh (+) R.VV.PP biçiminde kabuğun sürüm numarası; burada R ana sürüm numarası, VV geçerli sürüm ve PP yama düzeyidir.

term Terminal tipi. Genellikle Başlangıç ve kapatma altında açıklandığı gibi ~/.login içinde ayarlanır.

time Bir sayıya ayarlanırsa, time yerleşik komutu (q.v.), bu CPU saniyesinden daha fazla süren her komuttan sonra otomatik olarak yürütülür. İkinci bir kelime varsa, time yerleşiğinin çıktısı için bir biçim dizesi olarak kullanılır. (u) Biçim dizesinde aşağıdaki diziler kullanılabilir:

%U Sürecin kullanıcı modunda geçirdiği süre (cpu saniyesi cinsinden). %S Sürecin çekirdek (kernel) modunda geçirdiği süre (cpu saniyesi cinsinden). %E Geçen (gerçek) süre (saniye cinsinden). %P (%U + %S) / %E olarak hesaplanan CPU yüzdesi. %W Sürecin takas edildiği (swapped) sayı. %X Kbayt cinsinden kullanılan ortalama (paylaşılan) metin alanı miktarı. %D Kbayt cinsinden kullanılan ortalama (paylaşılmayan) veri/yığın alanı miktarı. %K Kbayt cinsinden kullanılan toplam alan (%X + %D). %M Sürecin herhangi bir zamanda kullanımda sahip olduğu maksimum bellek (Kbayt cinsinden). %F Büyük sayfa hatalarının sayısı (diskten getirilmesi gereken sayfa). %R Küçük sayfa hatalarının sayısı. %I Girdi işlemlerinin sayısı. %O Çıktı işlemlerinin sayısı. %r Alınan soket iletilerinin sayısı. %s Gönderilen soket iletilerinin sayısı. %k Alınan sinyallerin sayısı. %w İsteğe bağlı bağlam anahtarlamalarının (beklemelerin) sayısı. %c İsteğe bağlı olmayan bağlam anahtarlamalarının sayısı.

BSD kaynak sınırı işlevleri olmayan sistemlerde yalnızca ilk dört dizi desteklenir. Varsayılan zaman biçimi, kaynak kullanımı raporlamasını destekleyen sistemler için %Uu %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww ve desteklemeyen sistemler için %Uu %Ss %E %P şeklindedir.

Sequent'in DYNIX/ptx'i altında, %X, %D, %K, %r ve %s mevcut değildir, ancak aşağıdaki ek diziler mevcuttur:

%Y Yürütülen sistem çağrısı sayısı. %Z Talep üzerine sıfırla doldurulan sayfa sayısı. %i Bir sürecin yerleşik küme boyutunun çekirdek tarafından artırılma sayısı. %d Bir sürecin yerleşik küme boyutunun çekirdek tarafından azaltılma sayısı. %l Yürütülen okuma sistem çağrısı sayısı. %m Yürütülen yazma sistem çağrısı sayısı. %p Ham disk cihazlarından yapılan okuma sayısı. %q Ham disk cihazlarına yapılan yazma sayısı.

ve varsayılan zaman biçimi %Uu %Ss %E %P %I+%Oio %Fpf+%Ww şeklindedir. Çoklu işlemcilerde CPU yüzdesinin %100'den yüksek olabileceğini unutmayın.

tperiod (+) periodic özel takma adının yürütmeleri arasındaki süre (dakika cinsinden).

tty (+) tty'nin adı veya bir tty'ye bağlı değilse boş.

uid (+) Kullanıcının gerçek kullanıcı kimliği (real user ID).

user Kullanıcının oturum açma adı (login name).

verbose Ayarlanırsa, geçmiş ikamesinden sonra (varsa) her komutun kelimelerinin yazdırılmasına neden olur. -v komut satırı seçeneği tarafından ayarlanır.

version (+) Sürüm kimlik damgası. Kabuğun sürüm numarasını (bkz. tcsh), kökenini, yayın tarihini, satıcısını, işletim sistemini ve makinesini (bkz. VENDOR, OSTYPE ve MACHTYPE) ve derleme zamanında ayarlanan seçeneklerin virgülle ayrılmış bir listesini içerir. Dağıtımda varsayılan olarak ayarlanan seçenekler belirtilmiştir.

8b Kabuk sekiz bit temizdir; varsayılan 7b Kabuk sekiz bit temiz değildir wide Kabuk çok baytlı kodlama temizdir (UTF-8 gibi) nls Sistemin NLS'si kullanılır; NLS'li sistemler için varsayılan lf Giriş kabukları, /etc/csh.cshrc yerine önce /etc/csh.login yürütür ve ~/.tcshrc ile ~/.history yerine önce ~/.login yürütür. dl Güvenlik amacıyla . path içinde en sona konur; varsayılan nd Güvenlik amacıyla . path içinden çıkarılır vi emacs(1) stili yerine vi(1) stili düzenleme varsayılandır dtr Giriş kabukları çıkarken DTR'yi düşürür bye bye, logout'un bir eş anlamlısıdır ve log, watchlog için alternatif bir addır al autologout etkindir; varsayılan kan nokanji kabuk değişkeni ayarlanmadığı sürece yerel ayarlara göre uygunsa Kanji kullanılır sm Sistemin malloc(3) işlevi kullanılır hb Kabuk betikleri yürütülürken #!<program> <args> kuralı taklit edilir ng newgrp yerleşik komutu mevcuttur rh Kabuk REMOTEHOST çevre değişkenini ayarlamaya çalışır afs Yerel kimlik doğrulaması başarısız olursa kabuk parolanızı kerberos sunucusuyla doğrular. afsuser kabuk değişkeni veya AFSUSER çevre değişkeni ayarlanmışsa yerel kullanıcı adınızı geçersiz kılar.

Bir yönetici, yerel sürümdeki farklılıkları belirtmek için ek dizeler girebilir.

vimode (+) Kaldırılırsa, çeşitli tuş atamaları daha çok emacs(1) tarzı olacak şekilde davranışı değiştirir: kelime sınırları, diğer karakterlere karşı wordchars tarafından belirlenir.

Ayarlanırsa, çeşitli tuş atamaları daha çok vi(1) tarzı olacak şekilde davranışı değiştirir: kelime sınırları, boşluklara ve diğer karakterlere karşı wordchars tarafından belirlenir; imleç davranışı geçerli vi moduna (komut, silme, ekleme, değiştirme) bağlıdır.

Bu değişken, bindkey -e ile kaldırılır ve bindkey -v ile ayarlanır. vimode, gerekirse bu bindkey işlemlerinden sonra kullanıcı tarafından açıkça ayarlanabilir veya kaldırılabilir.

visiblebell (+) Ayarlanırsa, sesli zil yerine bir ekran flaşı kullanılır. Ayrıca bkz. nobeep.

watch (+) Oturum açma ve kapatma durumları için izlenecek kullanıcı/terminal çiftlerinin bir listesi. Eğer kullanıcı any ise, verilen kullanıcı için tüm terminaller izlenir ve tersi de geçerlidir. watch değişkenini (any any) olarak ayarlamak tüm kullanıcıları ve terminalleri izler. Örneğin,

set watch = (george ttyd1 any console $user any)

ttyd1 üzerindeki george kullanıcısının, konsoldaki herhangi bir kullanıcının ve herhangi bir terminaldeki kendinizin (veya bir davetsiz misafirin) etkinliğini bildirir.

Oturum açma ve kapatmalar varsayılan olarak her 10 dakikada bir kontrol edilir, ancak watch'un ilk kelimesi her şu kadar dakikada bir kontrol etmek üzere bir sayıya ayarlanabilir. Örneğin,

set watch = (1 any any)

her dakika bir oturum açma/kapatmayı bildirir. Sabırsızlar için, log yerleşik komutu herhangi bir zamanda bir izleme raporunu tetikler. watch ilk kez ayarlandığında tüm geçerli oturum açmalar rapor edilir (log yerleşiğinde olduğu gibi).

who kabuk değişkeni, izleme raporlarının biçimini kontrol eder.

who (+) İzleme (watch) mesajları için biçim dizesi. Aşağıdaki diziler verilen bilgilerle değiştirilir:

%n Oturum açan/kapatan kullanıcının adı. %a Gözlemlenen eylem, yani logged on (oturum açtı), logged off (oturum kapattı) veya replaced olduser on (eski kullanıcının yerini aldı). %l Kullanıcının oturum açtığı/kapattığı terminal (tty). %M Uzak ana bilgisayarın tam adı veya oturum açma/kapatma yerel bilgisayardan yapıldıysa local. %m İlk . işaretine kadar olan uzak ana bilgisayarın adı. Eğer bir IP adresi veya bir X Window System ekranı ise tam adı yazdırılır.

%M ve %m yalnızca uzak ana bilgisayar adını /etc/utmp içinde saklayan sistemlerde mevcuttur. Ayarlanmamışsa, uzak ana bilgisayar adını saklamayan sistemlerde %n has %a %l from %m. veya %n has %a %l. kullanılır.

wordchars (+) forward-word, backward-word vb. düzenleyici komutları tarafından bir kelimenin parçası olarak kabul edilecek alfasayısal olmayan karakterlerin listesi. Ayarlanmamışsa, varsayılan değer vimode durumuna göre belirlenir: vimode ayarlanmamışsa varsayılan olarak *?_-.[]~= kullanılır; vimode ayarlanmışsa varsayılan olarak _ kullanılır.

Çevre (Environment)

AFSUSER (+) afsuser kabuk değişkenine eşdeğerdir.

COLUMNS Terminaldeki sütun sayısı. Bkz. Terminal yönetimi.

DISPLAY X Window System tarafından kullanılır (bkz. X(1)). Ayarlanırsa, kabuk autologout (q.v.) değişkenini ayarlamaz.

EDITOR Varsayılan bir düzenleyicinin yol adı. editors kabuk değişkeni ayarlanmamışsa run-fg-editor düzenleyici komutu tarafından kullanılır. Ayrıca bkz. VISUAL çevre değişkeni.

GROUP (+) group kabuk değişkenine eşdeğerdir.

HOME home kabuk değişkenine eşdeğerdir.

HOST (+) gethostname(2) sistem çağrısı tarafından belirlenen, kabuğun üzerinde çalıştığı makinenin adına başlatılır.

HOSTTYPE (+) Derleme zamanında belirlenen, kabuğun üzerinde çalıştığı makinenin tipine başlatılır. Bu değişken eskimiştir ve gelecekteki bir sürümde kaldırılacaktır.

HPATH (+) run-help düzenleyici komutunun komut belgelerini aradığı dizinlerin iki nokta üst üste ile ayrılmış bir listesi.

LANG Tercih edilen karakter ortamını verir. Yerel Dil Sistemi desteği bölümüne bakın.

LC_CTYPE Ayarlanırsa, yalnızca ctype karakter işlemesi değiştirilir. Yerel Dil Sistemi desteği bölümüne bakın.

LINES Terminaldeki satır sayısı. Bkz. Terminal yönetimi.

LS_COLORS Bu değişkenin biçimi termcap(5) dosya biçimini andırır; "xx=string" biçimindeki ifadelerin iki nokta üst üste ile ayrılmış bir listesidir, burada "xx" iki karakterli bir değişken adıdır. İlişkili varsayılanlarıyla birlikte değişkenler şunlardır:

no 0 Normal (dosya adı olmayan) metin fi 0 Normal dosya di 01;34 Dizin ln 01;36 Sembolik bağ pi 33 Adlandırılmış boru (FIFO) so 01;35 Soket do 01;35 Kapı (Door) bd 01;33 Blok cihazı cd 01;32 Karakter cihazı ex 01;32 Yürütülebilir dosya mi (yok) Eksik dosya (varsayılan fi) or (yok) Yetim sembolik bağ (varsayılan ln) lc ^[[ Sol kod rc m Sağ kod ec (yok) Bitiş kodu (lc+no+rc yerini alır)

Yalnızca varsayılandan değiştirmek istediğiniz değişkenleri dahil etmeniz gerekir.

Dosya adları, dosya adı uzantısına göre de renklendirilebilir. Bu durum LS_COLORS değişkeninde "ext=string" söz dizimi kullanılarak belirtilir. Örneğin, ISO 6429 kodlarını kullanarak, tüm C dili kaynak dosyalarını mavi renklendirmek için ".c=34" belirtirsiniz. Bu, .c ile biten tüm dosyaları mavi (34) renkle boyayacaktır.

Kontrol karakterleri C-stili-kaçışlı gösterimde veya stty-benzeri ^-gösteriminde yazılabilir. C-stili gösterim Escape için ^[, normal bir boşluk karakteri için _ ve Delete için ? ekler. Ek olarak, varsayılan ^[, ^, : ve = yorumlamalarını geçersiz kılmak için ^[ kaçış karakteri kullanılabilir.

Her dosya olarak yazılacaktır. kodu tanımsızsa, bunun yerine dizisi kullanılacaktır. Bunun kullanımı genellikle daha uygundur, ancak daha az geneldir. Sol, sağ ve bitiş kodları, ortak kısımları tekrar tekrar yazmak zorunda kalmamanız ve tuhaf terminalleri desteklemek için sağlanmıştır; terminaliniz ISO 6429 renk dizilerini kullanmıyorsa, bunları genellikle hiç değiştirmeniz gerekmeyecektir.

Terminaliniz ISO 6429 renk kodlarını kullanıyorsa, tip kodlarını (yani lc, rc ve ec kodları dışındaki tüm kodları) noktalı virgülle ayrılmış sayısal komutlardan oluşturabilirsiniz. En yaygın komutlar şunlardır:

0 varsayılan rengi geri yüklemek için 1 daha parlak renkler için 4 altı çizili metin için 5 yanıp sönen metin için 30 siyah ön plan için 31 kırmızı ön plan için 32 yeşil ön plan için 33 sarı (veya kahverengi) ön plan için 34 mavi ön plan için 35 mor ön plan için 36 camgöbeği (cyan) ön plan için 37 beyaz (veya gri) ön plan için 40 siyah arka plan için 41 kırmızı arka plan için 42 yeşil arka plan için 43 sarı (veya kahverengi) arka plan için 44 mavi arka plan için 45 purple arka plan için 46 camgöbeği arka plan için 47 beyaz (veya gri) arka plan için

Tüm komutlar tüm sistemlerde veya ekran cihazlarında çalışmayacaktır.

Birkaç terminal programı varsayılan bitiş kodunu düzgün tanımaz. Bir dizin listelemesi yaptıktan sonra tüm metin renklendirilirse, no ve fi kodlarını 0'dan standart ön ve arka plan renklerinizin sayısal kodlarına değiştirmeyi deneyin.

MACHTYPE (+) Derleme zamanında belirlenen makine tipi (mikroişlemci sınıfı veya makine modeli).

NOREBIND (+) Ayarlanırsa, yazdırılabilir karakterler self-insert-command komutuna yeniden atanmaz. Bkz. Yerel Dil Sistemi desteği.

OSTYPE (+) Derleme zamanında belirlenen işletim sistemidir.

PATH Yürütülebilir dosyaların aranacağı dizinlerin iki nokta üst üste ile ayrılmış bir listesi. path kabuk değişkenine eşdeğerdir ancak farklı bir biçimdedir.

PWD (+) cwd kabuk değişkenine eşdeğerdir ancak onunla senkronize değildir; yalnızca gerçek bir dizin değişikliğinden sonra güncellenir.

REMOTEHOST (+) Eğer durum buysa ve kabuk bunu belirleyebiliyorsa, kullanıcının uzaktan oturum açtığı ana bilgisayar. Yalnızca kabuk bu şekilde derlenmişse ayarlanır; bkz. version kabuk değişkeni.

SHLVL (+) shlvl kabuk değişkenine eşdeğerdir.

SYSTYPE (+) Geçerli sistem tipi. (Yalnızca Domain/OS)

TERM term kabuk değişkenine eşdeğerdir.

TERMCAP Terminal yeteneği dizesi. Bkz. Terminal yönetimi.

USER user kabuk değişkenine eşdeğerdir.

VENDOR (+) Derleme zamanında belirlenen satıcı (vendor).

VISUAL Varsayılan bir tam ekran düzenleyicinin yol adı. editors kabuk değişkeni ayarlanmamışsa run-fg-editor düzenleyici komutu tarafından kullanılır. Ayrıca bkz. EDITOR çevre değişkeni.

Dosyalar (Files)

/etc/csh.cshrc Her kabuk tarafından ilk olarak okunur. ConvexOS, Stellix ve Intel /etc/cshrc kullanır ve NeXT'ler /etc/cshrc.std kullanır. A/UX, AMIX, Cray ve IRIX csh(1) içinde bir eşdeğere sahip değildir, ancak yine de tcsh içinde bu dosyayı okur. Solaris 2.x'te de bu dosya yoktur ancak tcsh /etc/.cshrc dosyasını okur. (+) /etc/csh.login Giriş kabukları tarafından /etc/csh.cshrc dosyasından sonra okunur. ConvexOS, Stellix ve Intel /etc/login kullanır, NeXT'ler /etc/login.std kullanır, Solaris 2.x /etc/.login kullanır ve A/UX, AMIX, Cray ve IRIX /etc/cshrc kullanır. ~/.tcshrc (+) /etc/csh.cshrc veya eşdeğerinden sonra her kabuk tarafından okunur. ~/.cshrc ~/.tcshrc mevcut değilse, /etc/csh.cshrc veya eşdeğerinden sonra her kabuk tarafından okunur. Bu kılavuz, ~/.tcshrc ifadesini ~/.tcshrc veya ~/.tcshrc bulunamazsa ~/.cshrc anlamında kullanır. ~/.history savehist ayarlanmışsa ~/.tcshrc dosyasından sonra giriş kabukları tarafından okunur, ancak ayrıca bkz. histfile. ~/.login ~/.tcshrc veya ~/.history dosyasından sonra giriş kabukları tarafından okunur. Kabuk, ~/.login dosyasını ~/.tcshrc ve ~/.history dosyalarından sonra değil önce okuyacak şekilde derlenmiş olabilir; bkz. version kabuk değişkeni. ~/.cshdirs (+) savedirs ayarlanmışsa ~/.login dosyasından sonra giriş kabukları tarafından okunur, ancak ayrıca bkz. dirsfile. /etc/csh.logout Giriş kabukları tarafından çıkışta okunur. ConvexOS, Stellix ve Intel /etc/logout kullanır ve NeXT'ler /etc/logout.std kullanır. A/UX, AMIX, Cray ve IRIX csh(1) içinde bir eşdeğere sahip değildir, ancak yine de tcsh içinde bu dosyayı okur. Solaris 2.x'te de bu dosya yoktur ancak tcsh /etc/.logout dosyasını okur. (+) ~/.logout Çıkışta /etc/csh.logout veya eşdeğerinden sonra giriş kabukları tarafından okunur. /bin/sh # ile başlamayan kabuk betiklerini yorumlamak için kullanılır. /tmp/sh* << için geçici dosya. /etc/passwd ~name ikameleri için ev dizinlerinin kaynağı.

Kabuk bu şekilde derlenmişse başlangıç dosyalarının okunma sırası farklılık gösterebilir; bkz. Başlangıç ve kapatma ve version kabuk değişkeni.

YENİ ÖZELLİKLER (NEW FEATURES) (+) Bu kılavuz tcsh'i tek bir varlık olarak açıklamaktadır, ancak deneyimli csh(1) kullanıcıları tcsh'in yeni özelliklerine özel dikkat göstermek isteyeceklerdir.

emacs(1) stili veya vi(1) stili tuş atamalarını destekleyen bir komut satırı düzenleyicisi. Bkz. Komut satırı düzenleyicisi ve Düzenleyici komutları.

Programlanabilir, etkileşimli kelime tamamlama ve listeleme. Bkz. Tamamlama ve listeleme ve complete ile uncomplete yerleşik komutları.

Dosya adlarının, komutların ve değişkenlerin yazım düzeltmesi (q.v.).

Yazılan komutların ortasında belgelerde arama yapma (run-help), düzenleyiciyi hızlıca yeniden başlatma (run-fg-editor) ve komut çözümleme (which-command) gibi diğer yararlı işlevleri gerçekleştiren düzenleyici komutları (q.v.).

Geliştirilmiş bir geçmiş mekanizması. Geçmiş listesindeki olaylar zaman damgalıdır. Ayrıca bkz. history komutu ve onunla ilişkili kabuk değişkenleri, önceden belgelenmemiş olan # olay belirteci ve Geçmiş ikamesi altındaki yeni değiştiriciler, -history, history-search-, i-search-, vi-search- ve toggle-literal-history düzenleyici komutları ile histlit kabuk değişkeni.

Geliştirilmiş dizin ayrıştırma ve dizin yığını yönetimi. Bkz. cd, pushd, popd ve dirs komutları ve ilişkili kabuk değişkenleri, Dizin yığını ikamesi açıklaması, dirstack, owd ve symlinks kabuk değişkenleri ile normalize-command ve normalize-path düzenleyici komutları.

Glob şablonlarında olumsuzlama. Bkz. Dosya adı ikamesi.

Yeni Dosya sorgulama operatörleri (q.v.) ve bunları kullanan bir filetest yerleşiği.

Zamanlanmış olaylar, özel takma adlar, otomatik oturum kapatma ve terminal kilitleme, komut zamanlaması ve oturum açma/kapatmaları izleme dahil olmak üzere çeşitli Otomatik, periyodik ve zamanlanmış olaylar (q.v.).

Yerel Dil Sistemi desteği (bkz. Yerel Dil Sistemi desteği), OS varyantı özellikleri (bkz. İşletim sistemi varyantı desteği ve echo_style kabuk değişkeni) ve sisteme bağlı dosya konumları (bkz. DOSYALAR).

Kapsamlı terminal yönetimi yetenekleri. Bkz. Terminal yönetimi.

builtins, hup, ls-F, newgrp, printenv, which ve where (q.v.) dahil olmak üzere yeni yerleşik komutlar.

Kabuğa yararlı bilgileri kolayca sağlayan yeni değişkenler. Bkz. gid, loginsh, oid, shlvl, tcsh, tty, uid ve version kabuk değişkenleri ile HOST, REMOTEHOST, VENDOR, OSTYPE ve MACHTYPE çevre değişkenleri.

İstem dizesine (prompt string) yararlı bilgiler dahil etmek için yeni bir söz dizimi (bkz. prompt) ve döngüler ile yazım düzeltme için özel istemler (bkz. prompt2 ve prompt3).

Salt okunur değişkenler. Bkz. Değişken ikamesi.

Hatalar (Bugs)

Askıya alınmış bir komut yeniden başlatıldığında, kabuk başladığı dizin geçerli dizinden farklıysa bunu yazdırır. İş dahili olarak dizin değiştirmiş olabileceğinden bu yanıltıcı (yani yanlış) olabilir.

Kabuk yerleşik işlevleri durdurulamaz/yeniden başlatılamaz. a ; b ; c biçimindeki komut dizileri de durdurma denendiğinde düzgün şekilde işlenmez. Eğer b askıya alınırsa, kabuk hemen c komutunu yürütür. Bu durum özellikle genişletme bir takma addan kaynaklandığında fark edilir. Diziyi bir alt kabuğa zorlamak için ( a ; b ; c ) şeklinde parantez içine almak yeterlidir.

Süreçler başladıktan sonra tty çıktısı üzerindeki kontrol ilkeldir; belki bu birilerine iyi bir sanal terminal arayüzü üzerinde çalışmak için ilham verir. Sanal bir terminal arayüzünde çıktı kontrolüyle çok daha ilginç şeyler yapılabilirdi.

Takma ad ikamesi en sık kabuk yordamlarını kabaca taklit etmek için kullanılır; takma adlar yerine kabuk yordamları sağlanmalıdır.

Kontrol yapıları yerleşik komutlar olarak tanınmak yerine ayrıştırılmalıdır. Bu, kontrol komutlarının herhangi bir yere yerleştirilmesine, | ile birleştirilmesine ve & ile ; meta söz dizimleriyle kullanılmasına izin verirdi.

foreach, sonunu (end) ararken here belgelerini (here documents) yok saymaz.

Komut ikamelerinin çıktısında : değiştiricilerini kullanmak mümkün olmalıdır.

Terminal imleci yukarı hareket ettiremiyorsa (yani terminal tipi dumb), ekranın genişliğinden daha uzun satırlar için ekran güncellemesi çok zayıftır.

HPATH ve NOREBIND değişkenlerinin çevre değişkeni olması gerekmez.

?, * veya [] kullanmayan veya {} ya da ~ kullanan glob şablonları doğru şekilde olumsuzlanmaz.

if'in tek komutlu biçimi, ifade yanlış olsa ve komut yürütülmese bile çıktı yönlendirmesi yapar.

ls-F, dosya adlarını sıralarken dosya tanımlama karakterlerini dahil eder ve dosya adlarındaki kontrol karakterlerini iyi işlemez. Kesintiye uğratılamaz.

Komut ikamesi birden fazla komutu ve koşulu destekler, ancak döngüleri veya geriye doğru gitmeleri (gotos) desteklemez.

Hataları, tercihen düzeltmeleriyle birlikte https://bugs.astron.com/ adresine bildirin. tcsh'in bakımına ve test edilmesine yardımcı olmak istiyorsanız, https://mailman.astron.com/ adresindeki e-posta listesine kendinizi ekleyin.

Tcsh'teki T (The T In Tcsh)

1964 yılında DEC, PDP-6'yı üretti. PDP-10 daha sonraki bir yeniden uygulamaydı. DEC, 1970 civarında ikinci model olan KI10'u çıkardığında DECsystem-10 olarak yeniden adlandırdı.

TENEX, 1972 yılında Bolt, Beranek & Newman'da (bir Cambridge, Massachusetts düşünce kuruluşu) talep üzerine sayfalama yapan sanal bellek işletim sistemlerinde bir deney olarak oluşturuldu. DEC PDP-10 için yeni bir çağrı cihazı inşa ettiler ve onunla birlikte çalışacak işletim sistemini geliştirdiler. Akademide son derece başarılı oldu.

1975 yılında DEC, PDP-10'un yeni bir modeli olan KL10'u çıkardı; yeni kutu için yalnızca BBN'den lisansladıkları TENEX'in bir sürümüne sahip olmak niyetindeydiler. Kendi sürümlerine TOPS-20 adını verdiler (büyük harfle yazımları tescilli markadır). Pek çok TOPS-10 ('PDP-10 için İşletim Sistemi') kullanıcısı itiraz etti; böylece DEC kendilerini aynı donanım üzerinde iki uyumsuz sistemi desteklerken buldu--ama o zaman PDP-11 üzerinde 6 sistem vardı!

TENEX ve sürüm 3'e kadar TOPS-20, ULTCMD adı verilen kullanıcı kodu düzeyinde bir alt program kitaplığı aracılığıyla komut tamamlamaya sahipti. Sürüm 3 ile DEC tüm bu yeteneği ve daha fazlasını COMND% JSYS (denetleyici çağrı mekanizması olan 'SYStem'e atla' talimatı, [benim IBM köklerim de mi görünüyor?]) tarafından erişilen monitöre ('Unix tipleri için çekirdek') taşıdı.

tcsh'in geliştiricisi, TENEX ve TOPS-20'nin bu özelliğinden ve diğer birkaç özelliğinden etkilendi ve bunları taklit eden bir csh sürümü geliştirdi.

Sınırlamalar (Limitations)

Sistem, argüman listelerini ARG_MAX karakterle sınırlar.

Dosya adı genişletmesini içeren bir komuta verilen argüman sayısı, bir argüman listesinde izin verilen karakter sayısının 1/6'sı ile sınırlıdır.

Komut ikameleri, bir argüman listesinde izin verilen karakterlerden fazlasını ikame edemez.

Döngüyü algılamak için, kabuk tek bir satırdaki takma ad ikamelerinin sayısını 20 ile sınırlar.

Ayrıca Bkz. (See Also)

csh(1), emacs(1), ls(1), newgrp(1), sh(1), setpath(1), stty(1), su(1), tset(1), vi(1), x(1), access(2), execve(2), fork(2), killpg(2), pipe(2), setrlimit(2), sigvec(2), stat(2), umask(2), vfork(2), wait(2), malloc(3), setlocale(3), tty(4), a.out(5), termcap(5), environ(7), termio(7), Introduction to the C Shell

Sürüm (Version)

Bu kılavuz tcsh 6.21.00 (Astron) 2019-05-08 sürümünü belgelemektedir.

Yazarlar (Authors)

William Joy csh(1) orijinal yazarı J.E. Kulp, IIASA, Laxenburg, Avusturya İş kontrolü ve dizin yığını özellikleri Ken Greer, HP Labs, 1981 Dosya adı tamamlama Mike Ellis, Fairchild, 1983 Komut adı tanıma/tamamlama Paul Placeway, Ohio State CIS Dept., 1983-1993 Komut satırı düzenleyicisi, istem yordamları, yeni glob söz dizimi ve sayısız düzeltme ve hızlandırma Karl Kleinpaste, CCI 1983-4 Özel takma adlar, dizin yığını çıkarma işleri, oturum açma/kapatma izleme, zamanlanmış olaylar ve yeni istem biçimi fikri Rayan Zachariassen, University of Toronto, 1984 ls-F ve which yerleşikleri ile çok sayıda hata düzeltmesi, değişiklik ve hızlandırma Chris Kingsley, Caltech Hızlı depolama ayırıcı yordamları Chris Grevstad, TRW, 1987 4.3BSD csh'i tcsh'e dahil etti Christos S. Zoulas, Cornell U. EE Dept., 1987-94 HPUX, SVR2 ve SVR3 portları, getwd.c'nin bir SysV sürümü, SHORT_STRINGS desteği ve sh.glob.c'nin yeni bir sürümü James J Dempsey, BBN, ve Paul Placeway, OSU, 1988 A/UX portu Daniel Long, NNSC, 1988 wordchars Patrick Wolfe, Kuck and Associates, Inc., 1988 vi modu temizliği David C Lawrence, Rensselaer Polytechnic Institute, 1989 autolist ve belirsiz tamamlama listelemesi Alec Wolman, DEC, 1989 İstemde yeni satırlar Matt Landau, BBN, 1989 ~/.tcshrc Ray Moody, Purdue Physics, 1989 Sihirli boşluk tuşu geçmiş genişletmesi Mordechai ????, Intel, 1989 printprompt() düzeltmeleri ve eklemeleri Kazuhiro Honda, Dept. of Computer Science, Keio University, 1989 Otomatik yazım düzeltme ve prompt3 Per Hedeland, Ellemtel, İsveç, 1990- Çeşitli hata düzeltmeleri, iyileştirmeler ve kılavuz güncellemeleri Hans J. Albertsson (Sun İsveç) ampm, settc ve telltc Michael Bloom Kesme işleme düzeltmeleri Michael Fine, Digital Equipment Corp Uzatılmış tuş desteği Eric Schnoebelen, Convex, 1990 Convex desteği, pek çok csh hata düzeltmesi, dizin yığınını kaydetme ve geri yükleme Ron Flax, Apple, 1990 A/UX 2.0 (yeniden) portu Dan Oscarsson, LTH İsveç, 1990 NLS desteği ve NLS olmayan siteler için benzetimli NLS desteği, düzeltmeler Johan Widen, SICS İsveç, 1990 shlvl, Mach desteği, correct-line, 8-bit yazdırma Matt Day, Sanyo Icon, 1990 POSIX termio desteği, SysV limit düzeltmeleri Jaap Vermeulen, Sequent, 1990-91 Vi modu düzeltmeleri, expand-line, pencere değişikliği düzeltmeleri, Symmetry portu Martin Boyer, Institut de recherche d'Hydro-Quebec, 1991 autolist bip seçenekleri, geçmiş aramasını satırın başından imlece kadar olan tüm dizeyi arayacak şekilde değiştirdi. Scott Krotz, Motorola, 1991 Minix portu David Dawes, Sydney U. Australia, Physics Dept., 1991 SVR4 iş kontrolü düzeltmeleri Jose Sousa, Interactive Systems Corp., 1991 Uzatılmış vi düzeltmeleri ve vi silme komutu Marc Horowitz, MIT, 1991 ANSIfication düzeltmeleri, yeni exec karma kodu, imake düzeltmeleri, where Bruce Sterling Woodcock, sterling@netcom.com, 1991-1995 ETA ve Pyramid portu, Makefile ve lint düzeltmeleri, ignoreeof=n eklemesi ve diğer çeşitli taşınabilirlik değişiklikleri ve hata düzeltmeleri Jeff Fink, 1992 complete-word-fwd ve complete-word-back Harry C. Pulley, 1992 Coherent portu Andy Phillips, Mullard Space Science Lab U.K., 1992 VMS-POSIX portu Beto Appleton, IBM Corp., 1992 Yürüyen süreç grubu düzeltmeleri, csh hata düzeltmeleri, POSIX dosya testleri, POSIX SIGHUP Scott Bolte, Cray Computer Corp., 1992 CSOS portu Kaveh R. Ghazi, Rutgers University, 1992 Tek, m88k, Titan ve Masscomp portları ve düzeltmeleri. autoconf desteği eklendi. Mark Linderman, Cornell University, 1992 OS/2 portu Mika Liljeberg, liljeber@kruuna.Helsinki.FI, 1992 Linux portu Tim P. Starrin, NASA Langley Research Center Operations, 1993 Salt okunur değişkenler Dave Schweisguth, Yale University, 1993-4 Yeni kılavuz sayfası ve tcsh.man2html Larry Schwimmer, Stanford University, 1993 AFS ve HESIOD yamaları Luke Mewburn, RMIT University, 1994-6 İstemde geliştirilmiş dizin yazdırma, üç nokta (ellipsis) ve rprompt eklendi. Edward Hutchins, Silicon Graphics Inc., 1996 Örtük (implicit) cd eklendi. Martin Kraemer, 1997 Siemens Nixdorf EBCDIC makinesine port edildi Amol Deshpande, Microsoft, 1997 WIN32 (Windows/95 ve Windows/NT) işletim sistemine port edildi; Windows arayüzü için tüm eksik kitaplık ve ileti kataloğu kodunu yazdı. Taga Nayuta, 1998 Renkli ls eklemeleri.

Teşekkürler

Öneri ve teşvikleri için Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob Manson, Steve Romig, Diana Smetters, Bob Sutterfield, Mark Verber, Elizabeth Zwicky ve Ohio State'teki diğer tüm kişilere;

Her bir sürüme katlandıkları, hata bildirdikleri ve yeni eklemeler önerdikleri için internetteki tüm insanlara;

T in tcsh (tcsh'teki T) bölümünü yazdığı için Richard M. Alderson III'e.