dash sistem için standart komut
yorumlayıcısıdır. dash’in mevcut
sürümü, kabuk için POSIX 1003.2 ve 1003.2a
belirtimlerine uyacak şekilde değiştirilme
sürecindedir. Bu sürüm, bazı
açılardan Korn kabuğunun benzeri gibi
görünmesini sağlayan birçok
özelliğe sahiptir, ancak bu bir Korn kabuğu
türevi değildir (bkz. ksh(1)). Bu kabuğa
yalnızca POSIX tarafından tasarlanmış
özellikler artı birkaç Berkeley genişletmesi
dahil edilmiştir. Bu kılavuz sayfası, bir
öğretici veya kabuğun tam bir belirtimi olarak
tasarlanmamıştır.
Kabuk, bir dosyadan veya uçbirimden satırları
okuyan, yorumlayan ve genellikle diğer komutları
yürüten bir komuttur. Bir kullanıcı sisteme
oturum açtığında çalışan
uygulamadır (kullanıcı chsh(1) komutu ile
farklı bir kabuk seçebilmesine rağmen). Kabuk,
akış denetim oluşumlarına sahip bir dilin,
yerleşik geçmiş ve satır düzenleme
yeteneklerinin yanı sıra veri depolamaya ek olarak
çeşitli özellikler sağlayan makroların
gerçeklenimidir. Etkileşimli kullanıma
yardımcı olacak pek çok özelliği
bünyesinde barındırır ve
yorumlayıcı dilin hem etkileşimli hem de
etkileşimsiz kullanımının (kabuk betikleri)
sağladığı getirilere sahiptir. Yani, komutlar
doğrudan çalışan kabuğa
yazılabilir veya bir dosyaya konulabilir ve dosya doğrudan
kabuk tarafından yürütülebilir.
Hiçbir komut girdisi yoksa ve kabuğun standart
girdisi bir uçbirime bağlıysa (veya -i
seçeneği belirtilmişse) ve -c
seçeneği belirtilmemişse, kabuğun
etkileşimli olduğu varsayılır.
Etkileşimli bir kabuk genellikle her komuttan önce bir komut
istemi açarak yazılım ve komut hatalarını
farklı şekilde ele alır (aşağıda
açıklandığı gibi). İlk
başlatıldığında, kabuk
0’ıncı girdiyi inceler, girdi tire ’-’
ile başlıyorsa, kabuk bir oturum açma kabuğu
olarak kabul edilir. Bu normalde kullanıcı ilk kez oturum
açtığında sistem tarafından otomatik
olarak yapılır. Bir oturum açma kabuğu
önce /etc/profile ve varsa .profile dosyalarında
bulunan komutları okur. Bir etkileşimli kabuk girdisi
ENV ortam değişkenine atanır ve ENV
oturum açma kabuğunun .profile dosyasına
kaydedilirse, kabuk daha sonra komutları ENV içindeki
dosyadan okur. Bu nedenle, bir kullanıcının
.profile dosyasına yalnızca oturum açma
sırasında yürütülecek komutları ve
ENV içindeki dosyaya da her etkileşimli kabuk
için yürütülecek komutları
yerleştirmesi gerekir. ENV değişkenine bir dosya
atamak için, aşağıdaki satır
kullanıcının ev dizinindeki .profile
dosyasına yerleştirilebilir:
ENV=$HOME/.shinit; export ENV
Burada, “.shinit” yerine uygun herhangi bir dosya
adı kullanılabilir.
Seçeneklerin yanı sıra başka komut
satırı girdileri de belirtilmişse, kabuk ilk girdiyi
komutların okunacağı dosyanın adı (bir
kabuk betiği) olarak kabul eder ve geri kalan girdiler kabuğun
konumsal değişkenleri ($1, $2, vb.) olarak
ayarlanır. Aksi takdirde kabuk, komutları standart girdisinden
okur.
Aşağıdaki tek harfli seçeneklerin
yanlarında belirtilen uzun seçenek adlarını
-o seçeneği ile belirtmek zorunluyken, kısa
seçenekler tek başlarına belirtilebilir.
Seçeneğin önüne eklenen kısa
çizgi "-" seçeneği etkin kılar,
artı "+" ise seçeneği devre
dışı bırakır. Bu mantıksız
gibi görünse de seçenek kullanım
uzlaşımları bakımından en uygunu budur.
Aşağıdaki seçenekler komut
satırından veya set yerleşiğiyle (daha
sonra açıklanacaktır) kullanılabilir.
- -a, allexport
- Belirtilen tüm değişkenler dışa
aktarılır.
- -c
- Komutlar, standart girdi yerine KOMUT_DİZGESİ
teriminden okunur. Konumsal değişkenlerin ilki
KOMUT_ADI teriminden diğerleri ($1, $2, vb.)
kalan girdilerden (KOMUT_GİRDİSİ) elde edilir.
- -C, noclobber
- “>” ile dosyaların üzerine yazmaktan korur.
Öntanımlı olarak “>” ile
dosyaların üzerine yazılır (clobber).
- -e, errexit
- Kabuk, etkileşimli değilse "denenmemiş" bir
komutun çıkış durumu
başarısız ise hemen çıkar. Bir komutun
"denenmiş" kabul edilebilmesi için if,
elif, while, until deyimlerinde veya
“&&” ve “||”
işleçlerinde sol taraf terimi olarak
kullanılmış olması gerekir.
- -f, noglob
- Dosya Yolu Genişletmesi (Dosya Adı Üretimi)
iptal edilir.
- -n, noexec
- Kabuk, etkileşimli değilse komutları okur ama
yürütmez. Kabuk betiklerinde sözdizimi denetimi
için yararlıdır.
- -u, nounset
- Değer atanmamış bir değişkeni
genişletmeye çalışırken hatayı
standart hataya çıktılar ve kabuk etkileşimli
değilse hemen çıkar.
- -v, verbose
- Kabuk, girdisini okundukça standart hataya yazar. Hata
ayıklama için kullanışlıdır.
- -x, xtrace
- Yürütmeden önce her komutu standart hataya
(’+’ ile önceleyerek) yazar. Hata ayıklama
için kullanışlıdır.
- -I, ignoreeof
- Kabuk, etkileşimli olduğunda girdisinden gelen dosya sonu
karakterlerini (EOF) yok sayar.
- -i,
interactive
- Kabuk etkileşimli olur.
- -l
- dash oturum açma kabuğu olarak davranır.
- -m, monitor
- İş denetimini açar (kabuk etkileşimli
olduğunda öntanımlı olarak
açılır).
- -s, stdin
- Komutları standart girdiden okur (girdi olarak hiç dosya
belirtilmemişse öntanımlı olarak etkindir). Bu
seçeneğin, kabuk çalışmaya
başladıktan sonra (örneğin, set ile)
belirtilmesinin hiçbir etkisi yoktur.
- -V, vi
- Yerleşik vi(1) komut satırı
düzenleyicisi etkinleştirilir (-E, emacs
etkinse devre dışı bırakılır).
- -E, emacs
- Yerleşik emacs(1) komut satırı
düzenleyicisi etkinleştirilir (-V, vi etkinse
devre dışı bırakılır).
- -b, notify
- Artalanda iş tamamlanma uyarısı
eşzamansız olur (4.4alfa sürümünde
gerçeklenmemişti).
Sözdizimsel Yapı
Kabuk, girdiyi dosyadan satır satır okuyup
boşluklara (boşluklar ve sekmelere) göre
sözcüklere ve "işleç" adı
verilen özel karakter dizilimlerine böler. İki
tür işleç vardır: denetim
işleçleri ve yönlendirme işleçleri
(anlamları daha sonra açıklanacaktır).
- Denetim
işleçleri:
& && ( ) ; ;; | || <satırsonu>
-
- Yönlendirme
işleçleri
< > >| << >> <& >& <<- <>
-
Tırnaklama, işleçler, boşluk veya
anahtar sözcükler gibi belirli karakterlerin veya
sözcüklerin kabuğa özgü
anlamlarını kaldırmak için
kullanılır. Üç tırnaklama yöntemi
vardır: eşleşen tek tırnaklar,
eşleşen çift tırnaklar ve ters eğik
çizgi.
Ters Eğik Çizgi
Ters eğik çizgi, satır sonu
karakteri dışında önündeki karakterin
gerçek anlamını korumasını sağlar.
Ters eğik çizgi öncelemeli satır sonu karakteri,
satırın alt satırda süreceği
anlamına gelir.
Tek Tırnak
Karakterlerin tek tırnak içine
alınması, tüm karakterlerin gerçek
anlamlarını korumasını sağlar (tek
tırnaklar hariç; tek tırnaklı bir dizgeye, tek
tırnaklı sarmalama uygulanamaz).
Çift Tırnak
Karakterlerin çift tırnak içine
alınması, dolar imi ($), ters tırnak (’) ve ters
eğik çizgi (\) dışındaki tüm
karakterlerin gerçek anlamlarını korumasını
sağlar. Çift tırnak içindeki ters eğik
çizgi, tarihsel olarak tuhaftır ve yalnızca
aşağıdaki karakterleri öncelemeye yarar:
Bunların dışında kalan herşey
aslını korur.
Anahtar sözcükler, kabuk için özel
anlamı olan, bir satırın başında ve bir
denetim işlecinden sonra kullanıldığında
tanınan sözcüklerdir. Anahtar sözcükler
şunlardır:
! elif fi while case
else for then { }
do done until if esac
Bunların anlamları daha sonra açıklanacaktır.
Takma ad, alias yerleşik komutu kullanılarak
atanan bir ad ile ona karşılık gelen değerden
oluşur. Bir anahtar sözcüğe her
rastlanışta (yukarıya bakın), bu
sözcükler denetimden geçtikten sonra, kabuk bir takma
adla eşleşip eşleşmediğini görmek
için sözcüğü bir denetimden daha
geçirir. Girdi akımında varsa, değeriyle
değiştirir. Örneğin, "ls -F"
değerine sahip "lf" adlı bir takma ad
varsa,
komut satırı girdisi şu hale gelir:
Takma adlar, yeni kullanıcıların komutların
kullanılışını hatırlamak zorunda
kalmadan komutları kullanabilmeleri için kısayollar
oluşturmalarını sağlar. Sözdizimsel olarak
hatırlanması/söylenmesi zor bir kodlama oluşturmak
için de kullanılabilir. Ancak bu kullanım
önerilmez.
Kabuk, okuduğu sözcükleri, belirtimi bu
kılavuz sayfasının kapsamı
dışında kalan bir dile göre yorumlar (POSIX
1003.2 belgesindeki BNF’ye bakın). Temel olarak, bir
satır okunur ve satırın başındaki (veya
bir denetim işlecinden sonraki) ilk sözcük bir anahtar
sözcük değilse, kabuk bunu basit bir komut olarak ele
alır. Aksi takdirde, karmaşık bir komut veya
başka bir özel oluşum olarak ele
alınır.
Basit Komutlar
Ele alınan basit bir komutsa kabuk
şunları yapar:
- 1.
- Baştaki "ad=değer" biçimindeki
sözcükler ayıklanır ve bunlar basit komutun
ortam değişkenleri olarak ele alınır.
Yönlendirme işleçleri ve bunların terimleri
(aşağıda
açıklandığı gibi)
ayıklanır ve işlenmek üzere kaydedilir.
- 2.
- Kalan sözcükler Genişletmeler
bölümünde anlatıldığı
gibi genişletilir ve ilk kalan sözcük komut
adı olarak ele alınır ve komut elde edilir. Kalan
sözcükler, komut girdileri olarak ele alınır.
Sonuçta hiçbir komut adı yoksa, kabuk dahili olarak
1. maddedeki "ad=değer" ortam
değişkeni atamalarından etkilenir.
- 3.
- Yönlendirmeler sonraki bölümde
açıklanan sıraya göre uygulanır.
Yönlendirmeler, bir komutun girdisini okuduğu veya
çıktısını gönderdiği yeri
değiştirmek için kullanılır. Genel
olarak, yönlendirmeler bir dosyaya yönelik varolan bir
başvuruyu açar, kapatır veya yineler.
Yönlendirme için kullanılan genel biçim
şöyledir:
[n] yönlendirme-işleci dosya
Burada yönlendirme-işleci evvelce bahsedilen
işleçlerden biridir. Olası yönlendirmeler
aşağıda listelenmiştir. n bir dosya
tanıtıcısı olup 0 ila 9 arasında olabilir
ve belirtilmesi isteğe bağlıdır.
[n]> dosya |
Standart çıktıyı (veya n’yi)
dosya’ya yönlendirir. |
[n]>| dosya |
Aynı, fakat -C seçeneğini geçersiz
kılar. |
[n]>> dosya |
Standart çıktıyı (veya n’yi)
dosya’ya ekler. |
[n]< dosya |
dosya’yı standart girdiye (veya n’ye)
yönlendirir. |
[n1]<&n2 |
n2 dosya tanıtıcısının bir
kopyasını standart girdiye (veya n1’e)
yönlendirir. |
[n]<&- |
Standart girdiyi (veya n’yi) kapatır. |
[n1]>&n2 |
Standart çıktıyı (veya n1’i)
n2’nin bir kopyası olacak şekilde
yönlendirir. |
[n]>&- |
Standart çıktıyı (veya n’yi)
kapatır. |
[n]<> dosya |
dosya’yı standart girdi (veya n)
üzerinde oku-yaz olarak açar. |
"Belge-burada" yönlendirmesi:
[n]<< sınırlayıcı
belge-burada-metni ...
sınırlayıcı
sınırlayıcı’ya kadar
ardışık satırlardaki tüm metinler
kaydedilir ve standart girdideki komut veya belirtilmişse dosya
tanıtıcısı n için
kullanılabilir hale getirilir.
sınırlayıcı ilk satırda
belirtildiği gibi kodlanırsa, belge-burada-metni
genişletmeler uygulanmadan birebir ele alınır, aksi
takdirde metne ifade genişletmesi, komut ikamesi ve aritmetik ifade
genişletmesi uygulanır (Genişletmeler
bölümünde açıklandığı
gibi). İşleç "<<" yerine
"<<-" ise, belge-burada-metninin
başındaki sekmeler kaldırılır.
Üç tür komut vardır: kabuk
işlevleri, yerleşik komutlar ve normal uygulamalar -- ve komut
(ada göre) bu sırayla aranır. Her biri farklı
bir şekilde yürütülür.
Bir kabuk işlevi
yürütüldüğünde, tüm
konumsal değişkenler (değişmeden kalan $0
hariç) kabuk işlevinin girdileri haline gelir.
Açıkça komutun ortamına yerleştirilen
değişkenler (işlev adından önce bunlara
atamalar yapılarak) değerleri ile birlikte işlevin
yerel değişkenleri haline gelir. Daha sonra işlev
tanımında verilen komut yürütülür.
Konumsal değişkenlere, komut
tamamlandığında ilk değerleri geri
atanır. Bunların hepsi aynı kabuk içinde
gerçekleşir.
Kabuk yerleşikleri, yeni bir süreç
oluşturmadan dahili olarak kabukta
yürütülür.
Komut adı bir işlev veya yerleşikle
eşleşmiyorsa, komut dosya sisteminde normal bir uygulama
olarak aranır (sonraki bölümde
açıklandığı gibi). Normal bir uygulama
yürütüldüğünde, kabuk girdileri ve
ortam değişkenleri uygulamaya aktarılarak uygulama
yürütülür. Uygulama normal bir
yürütülebilir dosya değilse (yani, ASCII
gösterimi "#!" olan "sihirli numara" ile
başlamıyorsa, dolayısıyla execve(2)
çağrısı ENOEXEC
döndürüyorsa) kabuk uygulamayı bir alt kabukta
yorumlayacaktır. Alt kabuk bu durumda kendisini yeniden ilklendirecek
ve böylece etki, bu özel kabuk betiğini
yürütmek için yeni bir kabuk
çağrılmış gibi olacaktır, ancak
ana kabukta bulunan komutların konumu alt kabuk tarafından
hatırlanacaktır.
Bir komutun yeri tespit edilirken, kabuk önce bu isimde bir
kabuk işlevi olup olmadığına bakar. Sonra
aynı isimde yerleşik bir komut arar. Yerleşik bir komut
da bulunamazsa iki durumdan biri gerçekleşir:
- 1.
- Eğik çizgi içeren komut adları, herhangi bir
arama yapılmadan yürütülür.
- 2.
- Kabuk, sırayla PATH içindeki her dizinde komutu arar.
PATH değişkeninin değeri, iki nokta üst
üste ile ayrılmış bir dizi girdiden
oluşmalıdır. Her girdi bir dizin adı
içerir. Geçerli dizin, örtük olarak boş
bir dizin adıyla veya doğrudan tek bir noktayla
belirtilebilir.
Her komutun, diğer kabuk komutlarının
davranışını etkileyebilecek bir
çıkış durumu vardır. Genel olarak, bir
komutun normal veya başarı göstergesi olarak
sıfırla, başarısızlık, hata veya
olumsuzluk göstergesi olarak sıfırdan farklı bir
değerle çıkması gerekir. Her komutun
kılavuz sayfasında, çeşitli
çıkış kodları ve bunların ne
anlama geldiği belirtilmelidir. Ek olarak yerleşik komutlar
da, yürütülen kabuk işlevlerinde olduğu
gibi çıkış kodları
döndürür.
Bir komut tamamen değişken atamalarından
oluşuyorsa, komutun çıkış durumu, varsa
son komut ikamesinin çıkış durumudur, aksi
takdirde 0’dır.
Karmaşık komutlar, birlikte daha büyük
bir karmaşık komut oluşturan denetim
işleçleri veya anahtar sözcüklerle basit
komutların birleşimleridir. Daha genel olarak, bir komut
aşağıdakilerden biridir:
• basit komut
• ardışık komutlar
• liste veya bileşik liste
• bileşik komut
• işlev tanımı
Aksi belirtilmedikçe, bir komutun çıkış
durumu, komut tarafından yürütülen son basit
komutun çıkış durumudur.
Ardışık komut, | denetim
işleciyle ayrılmış bir veya daha fazla komuttan
oluşan bir dizilimdir. Son komut hariç
tümünün standart çıktısı,
bir sonraki komutun standart girdisine bağlanır. Son komutun
standart çıktısı, normal olarak kabuktan
alınır.
Ardışık komut sözdizimi:
[!] komut1 [| komut2 ...]
komut1’in standart çıktısı,
komut2’nin standart girdisine bağlanır. Bir
komutun standart girdisi, standart çıktısı veya
her ikisinin, komutun parçası olan yönlendirme
işleçleri ile belirtilen herhangi bir yönlendirmeden
önce ardışık düzen tarafından
atandığı varsayılır.
Ardışık komutlar artalanda
yürütülmüyorsa (daha sonra
açıklanacak), kabuk tüm komutların
tamamlanmasını bekleyecektir.
Eğer ardışık komut ! anahtar
sözcüğü ile başlamıyorsa,
ardışık komutun çıkış
durumu yürütülen son komutun
çıkış durumudur. Aksi takdirde,
çıkış durumu, son komutun
çıkış durumunun mantıksal
DEĞİL’idir. Yani, son komut 0
döndürürse, çıkış durumu
1’dir; son komut sıfırdan büyük bir
değerle dönerse, çıkış durumu
0’dır.
Standart girdinin veya standart
çıktının veya her ikisinin
ardışık komut ataması yönlendirmeden
önce gerçekleştiğinden, yalnızca
yönlendirme ile değiştirilebilir.
Örneğin,
ardışık komutu, komut1’in hem standart
çıktısını hem de standart
hatasını komut2’nin standart girdisine
gönderir.
Ardışık komut, VE-VEYA listesinin
(aşağıda
açıklanmıştır) basit halidir.
Satır sonu karakteri, başka bir işleç
olmadığında ; ile eşdeğerdir.
Sonlandırıcı olarak ; veya satırsonu
karakteri, önceki ardışık komutun veya daha
genel olarak, önceki VE-VEYA listesinin sırayla
yürütülmesine sebep olur; yani, kabuk komutları
yürütür ama sonraki komutlara geçmeden
önce bunların tamamlanmasını bekler.
Sonlandırıcı olarak &, önceki VE-VEYA
listesinin eşzamansız (artanda)
yürütülmesine neden olur
(aşağıdaki bir sonraki paragrafa bakın).
Eşzamansız bir VE-VEYA listesinin
çıkış durumu sıfırdır.
Tamamlandıktan sonra komutların gerçek
çıkış durumu, yerleşik wait komutu
kullanılarak elde edilebilir.
Diğer bazı kabuklardan farklı olarak,
ardışık komuttaki her sürecin
çağrıldığı kabuğun alt
kabuğunda yürütüldüğüne
dikkat edilmelidir (bir kabuk yerleşiği
olmadığı sürece; bu durumda alt kabuk
açılmaz, geçerli kabukta
yürütülür -- ancak ortam
değişkenleri üzerindeki tüm etkiler
silinir).
Bir komut "ve (&) denetim işleci"
tarafından sonlandırılırsa, kabuk komutu
eşzamansız olarak (artalanda) yürütür --
yani, kabuk bir sonraki komutu yürütmeden önce, komutun
tamamlanmasını beklemez.
Bir komutun artalanda yürütülmesini
sağlayan sözdizimi:
Kabuk etkileşimli değilse, eşzamansız komutun
(artalan komutunun) standart girdisi /dev/null olur.
Liste, satırsonu karakteri, noktalı virgül
veya & ile ayrılan ve isteğe bağlı
olarak bu üç karakterden biri ile sonlandırılan
bir veya daha fazla komuttan oluşan bir dizilimdir.
Etkileşimli bir kabuğa verilen komutları içeren
her kabuk uygulaması bir listedir. Böyle bir listedeki her
komut, tamamen ayrıştırıldıktan sonra
yürütülür.
Listedeki komutlar yazıldıkları sıraya
göre yürütülür. Komutun ardından
bir & işleci geliyorsa, kabuk komutu
başlatır ve hemen bir sonraki komuta geçer; aksi halde
bir sonrakine geçmeden önce komutun sonlanmasını
bekler.
“&&” ve “||”
VE-VEYA listesi işleçleridir.
“&&” ve “||”
işleçlerinin öncelikleri aynıdır ve
soldan ilişkilendirmelidir, yani bu işleçler soldan
sağa değerlendirilir.
&&” yalnızca ilk komutun
çıkış durumu sıfırsa ikinci
komutun yürütülmesini sağlar.
“||” işleci de buna benzer, farklı olarak
ikinci komutun yürütülebilmesi için birincinin
çıkış durumu sıfırdan
farklı olmak zorundadır.
Bu deyimler aslında bileşik komutlardır.
if deyiminin sözdizimi:
if liste
then liste
[ elif liste
then liste ] ...
[ else liste ]
fi
İlk listenin çıkış durumu
sıfır ise, ardından gelen liste
yürütülür. Aksi takdirde, elif varsa
sonraki liste yürütülür ve işlem
tekrarlanır. elif ve beraberindeki liste
belirtilmemişse ama else belirtilmişse sonraki
liste yürütülür.
while deyiminin sözdizimi:
while liste
do liste
done
İlk listenin çıkış durumu
sıfırdan farklı oluncaya dek iki liste yinelenir.
while deyimini yerini until deyimi
aldığında ise ilk listenin
çıkış durumu sıfır oluncaya dek iki
liste yinelenir.
for deyiminin sözdizimi:
for değişken [ in [ sözcük ... ] ]
do liste
done
in deyimindeki sözcükler genişletilir ve
liste, değer olarak her defasında bir
sözcük atanan değişkenle
yürütülür. in sözcük
... ile "$@" eşdeğerdir.
Değişkenden sonra in olduğu halde hiçbir
sözcük belirtilmemişse liste
yürütülmez ve çıkış durumu
sıfır olur.
break and continue deyiminin sözdizimi:
break [ sayı ]
continue [ sayı ]
break içteki sayıncı for veya
while döngüsünde döngüden
çıkılmasını sağlar. continue
ise içteki sayıncı döngüden devam
edilmesini sağlar. Bunlar yerleşik komut olarak
gerçeklenmiştir.
case deyiminin sözdizimi:
case sözcük in
[(]kalıp [| kalıp]) [liste] ;;
...
esac
kalıp, “|” karakteri ayraç olarak
kullanıldığında bir veya daha fazla sayıda
kalıp içerebilir (Bkz: Kabuk Kalıpları).
kalıptan önceki “(” karakterinin
kullanımı isteğe bağlıdır.
sözcük genişletilir ve ilkinden
sonuncusuna kadar sırayla her kalıp ile
eşleştirilir ve her kalıp
eşleştirme denenmeden hemen önce genişletilir.
Bir eşleşme bulunduğunda, kalıp
karşılaştırmaları durur ve varsa
ilişkili liste değerlendirilir. ;; ile sonlanan
bir liste yürütüldüğünde
veya esac değerine
ulaşıldığında, case ifadesinin
yürütülmesi tamamlanır.
Çıkış durumu, varsa değerlendirilen son
listenin yürütülen son komutunun durumudur,
yoksa sıfırdır.
Komutların Gruplanması
Komutlar,
sözdizimi ile veya
sözdizimi ile gruplanabilir. Yaylı ayraçlar
işleç olup ayrıntılı bir sözdizimi
gerektirmezken kaşlı ayraçlar anahtar
sözcüktür, bu nedenle listeden birer boşluk
ile ayrılmaları gerekir. İlki, komutları bir alt
kabukta yürütür. (liste) halinde gruplanan
yerleşik komutlar, geçerli kabuğu etkilemez.
İkincisi başka bir kabuğu çatallamaz, bu nedenle
daha verimlidir. Komutları bu şekilde gruplamak,
çıktılarının tek bir uygulama gibi
yönlendirilmesine olanak tanır:
{ printf " hello " ; printf " world\n" ; } > greeting
Kaşlı ayracın bir komut girdisi olarak değil,
anahtar sözcük olarak tanınması için
denetim işlecinin (burada ";") kaşlı
ayraçtan önce gelmesi gerektiğine dikkat edilmelidir.
İşlevler
İşlev tanımının
sözdizimi:
İşlev tanımı yürütülebilir bir
ifadedir; yürütüldüğünde,
isim adlı işlevi yükler ve sıfır
çıkış durumu döndürür.
komut normalde "{" ve "}"
arasına alınmış bir listedir.
Değişkenler, local deyimi kullanılarak
işleve yerel olarak bildirilebilir. Bu, işlevin ilk ifadesi
olarak görünmelidir ve sözdizimi şu
şekildedir:
local yerleşik komut olarak gerçeklenmiştir.
Bir değişken yerel yapılırsa,
başlangıç değerini devralır ve varsa
aynı etki alanında aynı adlı
değişkenden dışa aktarılabilir ve salt
okunur olarak işaretlenebilir. Aksi takdirde, değişkene
başlangıçta değer atanmamış olur.
Kabuk etki alanını dinamik olarak belirler, böylece g
işlevini çağıran x değişkenini f
işlevi için yerel yaparsanız, g içinde x
değişkenine yapılan atıflar, x küresel
değişkenine değil, f içinde bildirilen x
değişkenine atıfta bulunur.
Yerel yapılabilecek tek özel değişken
“-” dir. “-” yerel yapılırsa,
işlev dönüş yaptığında,
işlev içinde set yerleşiği
üzerinden değiştirilen kabuk
değişkenlerine özgün değerleri geri
atanır.
return deyiminin sözdizimi:
return deyimi işlevin yürütmesini durdurur.
return yerleşik komut olarak gerçeklenmiştir.
Kabuk bir takım değişkenler içerir.
Başlangıçta, kabuk tüm ortam
değişkenlerini kabuk değişkenlerine
dönüştürür. Yeni bir
değişken şöyle atanabilir:
Kullanıcı tarafından tanımlanan
değişkenler, yalnızca harfler, rakamlar ve alt
çizgilerden oluşan bir ada sahip olmalı, bir rakam ile
başlamamalıdır. Kabuk değişkenlerinin
adları ise aşağıda
açıklanacağı üzere yalnızca
rakamlardan (konumsal değişkenler) veya yalnızca tek bir
özel karakterden (özel değişkenler)
oluşabilir:
Konumsal Değişkenler
Konumsal değişkenlerin isimleri,
yalnızca sıfırdan büyük
tamsayılardan oluşur. Kabuk bunlara, kabuk betiğinin
adından sonra gelen komut satırı girdilerinin
değerlerini atar. Bunları atamak veya sıfırlamak
için set yerleşiği de kullanılabilir.
Özel Değişkenler
Özel değişkenler, değerleri
kabuk tarafından atanan ancak isimleri tek bir özel karakterden
oluşan değişkenlerdir. Bu değişkenlerin
değerlerine diğer kabuk değişkenleri gibi
başlarına
$ işleci getirilerek
ulaşılır. Özel değişkenler ve
aldıkları değerler:
- 0 (Sıfır)
- Kabuğun veya kabuk betiğinin adına
genişletilir.
- *
- 1’den itibaren konumsal değişkenlere
genişletilir. Genişletme çift tırnaklı
bir dizge içinde gerçekleştiğinde her
değişkenin değeri, IFS
değişkeninin ilk karakteriyle veya IFS
atanmamışsa bir boşluk ile
ayrılmış tek bir alana genişletilir.
- @
- 1’den itibaren konumsal değişkenlere
genişletilen bir dizidir. Genişletme çift
tırnak içinde gerçekleştiğinde, her bir
konumsal değişken ayrı bir elemana genişler.
Konumsal değişken yoksa, @ çift
tırnaklı olsa bile @ genişletmesi
sıfır eleman üretir. Bunun anlamı, temel
olarak, örneğin, $1 "abc" ve
$2 "def ghi" ise, "$@" iki
elemana genişleyecektir:
-
- #
- Konumsal değişken sayısına
genişletilir.
- ?
- Ardışık komutlardan son
yürütülen komutun çıkış
durumuna genişletilir.
- - (tire)
- Çağrı sırasında set
yerleşiği veya dolaylı olarak kabuk tarafından
belirlenen geçerli seçenek adlarına (tek harfli
seçenek adları tek bir dizge halinde birleştirilir)
genişler.
- $
- Çağıran kabuğun süreç
kimliğine genişler. Bir alt kabuk, ebeveyninin $
değerini korur.
- !
- Geçerli kabuk tarafından artalanda en son
yürütülen komutun süreç
kimliğine genişler. Ardışık komutlarda
ise, ardışık komutlardan
yürütülen sonuncu komutun süreç
kimliğidir.
Genişletmeler, sözcükler üzerinde
gerçekleştirilen çeşitli genişletmeleri
içerir. Daha sonra açıklanacağı gibi, her
sözcüğe tüm genişletmeler uygulanmaz.
Tek bir sözcük içinde uygulanan Ev Dizini
olarak Yaklaşık Genişletmesi, İfade
Genişletme, Komut İkamesi, Aritmetik
İfade Genişletmesi ve Tırnak kaldırma
işlemleri tek bir alana genişler. Yalnızca
Boşluk Ayıklama (Alanlara Ayırma), tek bir
sözcükten birden fazla alan oluşturabilir. Bu
kuralın tek istisnası, yukarıda
açıklandığı gibi çift
tırnak içinde @ özel değişkeninin
genişletilmesidir.
Genişletmeler şu sırayla
uygulanır:
- 1.
- Ev Dizini olarak Yaklaşık Genişletmesi,
İfade Genişletme, Komut İkamesi,
Aritmetik İfade Genişletmesi (Tamamı bir
kerede uygulanır).
- 2.
- Boşluk Ayıklama (Alanlara Ayırma), IFS
değişkeni boş değilse step(1)
tarafından üretilen alanlara uygulanır.
- 3.
- Dosya Yolu Genişletmesi (Dosya Adı Üretimi)
(set -f etkin değilse).
- 4.
- Tırnak kaldırma.
$ karakteri ile başlayan herşeye İfade
Genişletme, Komut İkamesi veya Aritmetik
İfade Genişletmesi uygulanır.
Ev Dizini olarak Yaklaşık
Genişletmesi
Tırnaksız yaklaşık imi
(~) ile başlayan sözcüklere,
yaklaşık genişletmesi uygulanır. Eğik
çizgiye (/) veya sözcüğün sonuna
kadar olan tüm karakterler kullanıcı adı olarak
ele alınır ve kullanıcının ev dizini ile
değiştirilir. Kullanıcı adı yoksa
(~/foobar’daki gibi), yaklaşık imi HOME
değişkeninin değeri (mevcut
kullanıcının ev dizini) ile
değiştirilir.
İfade Genişletme
İfade genişletme biçemi:
Burada, "
}" ile eşleşene kadar tüm
karakterler
ifadeyi oluşturur. "
}"
eşleşmesi belirlenirken, ters eğik çizgi ile
öncelenmiş ve tırnak içine
alınmış dizgelerin içinde olanlar ile
Aritmetik
İfade Genişletmesi,
Komut İkamesi ve
değişken genişletmesine konu olanlar dikkate
alınmaz.
Değişkeni genişletmesinin en basit
biçemi:
değişkenin değeri varsa, değer
genişletilir.
Birden fazla rakam içeren Konumsal
Değişkenler ile ardından adın
parçası olarak yorumlanabilecek bir karakter gelen
Özel Değişkenler hariç,
değişken adı, isteğe bağlı olarak
kaşlı ayraçlarla sarmalanabilir. Çift
tırnakla sarmalanma durumunda:
- 1.
- Genişletmenin sonuçlarına Dosya Yolu
Genişletmesi (Dosya Adı Üretimi) uygulanmaz.
- 2.
- @ haricinde, genişletme sonuçlarında
Boşluk Ayıklama (Alanlara Ayırma)
yapılmaz.
Ek olarak, aşağıdaki biçemlerden biri
kullanılarak değişken genişletmesinde
değişiklik yapılabilir:
- ${değişken:-sözcük}
- Öntanımlı değerler kullanılır.
değişken atanmamışsa veya null
atanmışsa sözcük genişletmesi
kullanılır, aksi takdirde değişken
değeri kullanılır.
- ${değişken:=sözcük}
- Öntanımlı değerler atanır.
değişken atanmamışsa veya null
atanmışsa, değişken’e
değer olarak sözcük genişletmesi
atanır. Her durumda, değişken’in son
değeri kullanılır. Konumsal değişkenler
ve özel değişkenler bu yolla atanamaz yalnızca
diğer değişkenler bu yolla atanabilir.
- ${değişken:?[sözcük]}
- değişken atanmamışsa veya null
atanmışsa bir hata var demektir.
değişken atanmamışsa veya null
atanmışsa sözcük genişletmesi
(veya sözcük belirtilmemişse,
atanmamış olduğunu belirten bir ileti) standart
hataya yazılır ve kabuk sıfırdan farklı
bir çıkış durumu ile çıkar.
Bununla birlikte, kabuk etkileşimli ise
çıkması gerekmez. Aksi takdirde,
değişken değeri kullanılır.
- ${değişken:+sözcük}
- Diğer değer kullanılır.
değişken atanmamışsa veya null
atanmışsa, null kullanılır. Aksi takdirde,
sözcük genişletmesi kullanılır.
Yukarıdaki değişken genişletme
biçemlerinde iki nokta üst üste iminin
yokluğunda, sınama yalnızca atanmamış
değişkene uygulanır, null atanmış
değişkene uygulanmaz.
- ${#değişken}
- Dizge uzunluğu. değişken değerinin
karakter sayısı.
Aşağıdaki dört değişken
genişlemesi alt dizge işlemleri içindir.
Kalıpların değerlendirilmesinde, her durumda,
düzenli ifade sözdizimi yerine kalıp eşleme
sözdizimi kullanılır (Bkz: Kabuk
Kalıpları). değişken adı
* veya @ ise genişletme sonucu belirlenmemiştir.
Değişken genişletme dizgesinin tamamının
çift tırnaklarla sarmalanması
aşağıdaki dört kalıp karakteri
çeşidinin tırnaklanmasına sebep olmaz, oysa
kaşlı ayraçlar içinde tırnaklama bu
etkiye sebep olur.
- ${değişken%sözcük}
- En küçük sonek kalıbını
kaldırır. sözcük bir kalıp
üretecek şekide genişletilir. Daha sonra
değişken genişletmesi, sonekin kalıpla
eşleşen en küçük
kısmının silinmesiyle sonuçlanır.
- ${değişken%%sözcük}
- En geniş sonek kalıbını
kaldırır. sözcük bir kalıp
üretecek şekide genişletilir. Daha sonra
değişken genişletmesi, sonekin kalıpla
eşleşen en geniş kısmının
silinmesiyle sonuçlanır.
- ${değişken#sözcük}
- En küçük önek kalıbını
kaldırır. sözcük bir kalıp
üretecek şekide genişletilir. Daha sonra
değişken genişletmesi, önekin kalıpla
eşleşen en küçük
kısmının silinmesiyle sonuçlanır.
- ${değişken##sözcük}
- En geniş önek kalıbını
kaldırır. sözcük bir kalıp
üretecek şekide genişletilir. Daha sonra
değişken genişletmesi, önekin kalıpla
eşleşen en geniş kısmının
silinmesiyle sonuçlanır.
Komut İkamesi
Komut ikamesi, bir komutun
çıktısının, komut adı olarak
kullanılmasını sağlar. Komut ikamesi, komut
aşağıdaki gibi
sarmalandığında veya
biçeminde ters tek tırnaklarla
sarmalandığında gerçekleşir.
Kabuk, bir alt kabuk ortamında komutu
yürüterek ve komut ikamesini komutun standart
çıktısıyla değiştirerek, ikamenin
sonundan bir veya daha fazla satır sonu karakterini kaldırarak
komut ikamesini genişletir. (Çıktının
bitiminden önceki gömülü satırsonu
karakterleri kaldırılmaz; ancak, alan ayırma
sırasında bunlar, IFS’nin değerine ve
etkin olan tırnaklamaya bağlı olarak boşluklara
dönüştürülebilir.)
Aritmetik İfade Genişletmesi
Aritmetik ifade genişletmesi, bir aritmetik
ifadeyi değerlendirmek ve yerine değerini koymak için bir
mekanizma sağlar. Aritmetik ifade genişletmesinin biçemi:
İfade, çift tırnak içindeymiş gibi ele
alınır, ancak ifade içindeki çift tırnak
özel olarak ele alınmaz. Kabuk, değişken
genişletmesi,
Komut İkamesi ve
Tırnak
kaldırma için ifadedeki tüm öğeleri
genişletir.
Daha sonra, kabuk bunu aritmetik bir ifade olarak ele alır
ve yerine ifadenin değerini koyar.
Boşluk Ayıklama (Alanlara Ayırma)
Kabuk, değişken genişletmesi,
Komut İkamesi ve
Aritmetik İfade
Genişletmesi sonra, alanlarına ayırmak için
çift tırnak içinde olmayan genişletme ve ikame
sonuçlarını tarar.
Kabuk IFS değişkenindeki her karakteri bir
ayraç olarak ele alır. Bunları değişken
genişletmesi ve komut ikamesinin sonuçlarını
alanlara ayırmak için kullanır.
Dosya Yolu Genişletmesi (Dosya Adı
Üretimi)
Alanlara ayırmanın tamamlanmasından
sonra
-f seçeneği verilmemişse dosya adı
üretimine geçilir. Her sözcük, eğik
çizgilerle ayrılmış bir dizi kalıp olarak
görünür. Genişletme işleminde, mevcut
dosyaların adları, her kalıp kendisiyle
eşleşen bir dizge ile değiştirilerek elde edilir.
Bununla ilgili iki sınırlama vardır:
• Bir kalıp eğik çizgi
içeren bir dizge ile eşleşemez.
• Bir kalıp, kalıbın ilk karakteri bir nokta
olmadıkça nokta ile başlayan bir dizge ile
eşleşemez.
Sonraki bölümde, hem dosya yolu genişletmesinde hem de case
komutunda kullanılan kalıplar
açıklanmaktadır.
Kabuk Kalıpları
Bir kalıp, özel kalıp karakterleri
ve kendileri ile eşleşen normal karakterlerden oluşur.
Özel kalıp karakterleri: “
!”,
“
*”, “
?” ve
“
[”. Bunların normal karakterler olarak
davranması istenirse tırnak içine
alınmalıdırlar. Komut ikamesi veya değişken
genişletmesi yapıldıktan sonra çift tırnak
içindeki dolar imi veya ters tırnak imleri hariç,
değişkenin değeri veya komut
çıktısı dolar imi veya ters tırnak imleri
için taranır ve bunlar özel kalıp karakterlerine
dönüştürülür.
Yıldız imi (“*”) herhangi bir
karakter dizisiyle eşleşir. Soru imi herhangi bir tek
karakterle eşleşir. Sol köşeli ayraç
(“[”) bir karakter sınıfını
tanıtır. Karakter sınıfının sonu
bir (“]” ile gösterilir); "]"
eksikse "[", bir karakter sınıfı
sunmak yerine kendisi ile eşleşir. Bir karakter
sınıfı, köşeli parantezler
arasındaki herhangi bir karakterle eşleşir. Tire imi
kullanılarak bir karakter aralığı
belirtilebilir. Karakter sınıfının ilk
karakterinden önceki ünlem işareti, karakter
sınıfının dışında kalan
karakterlerle eşleşme sağlar.
Bir karakter sınıfının
“]” içermesi için listelenen ilk karakter
olmalıdır (varsa “!” iminden sonra). Tire
imini içermesi için listelenen ilk veya son karakter
olmalıdır.
Tırnak kaldırma
Yorumlamalar uygulandıktan sonra,
yukarıdaki yorumlamaların sonucu olmayan ve tırnak
içine alınmamış tüm ters eğik
çizgi (\), tek tırnak (’) ve çift tırnak
(") karakterleri kaldırılır.
Bu bölümde, ayrı bir süreç
tarafından gerçekleştirilemeyen bazı
işlemleri gerçekleştirmeleri gerektiği
için yerleşik olan yerleşik komutlar
açıklanmıştır. Ayrıca,
yerleşik olarak daha verimli olabilecek birkaç başka
komut da bunlara eklenmiştir (printf, echo, test, vb gibi).
- :
true
- Çıkış durumu olarak 0 (true)
döndürmekten başka hiçbir şey yapmaz.
- . dosya
- Belirtilen dosyadaki komutlar okunur ve kabuk tarafından
yürütülür.
- alias
[isim[=dizge ...]]
- isim=dizge belirtilmişse kabuk, takma adı
değer dizgesiyle birlikte tanımlar. Yalnızca
isim belirtilmişse takma adın değeri
basılır. Girdisiz kullanım,
tanımlanmış tüm takma adların isim ve
değerlerinin listelenmesini sağlar. Ayrıca bkz:
unalias.
- bg [görev]
...
- Belirtilen görev (belirtilmemişse geçerli
görev) çalışmasını artalanda
sürdürür.
- command
[-p] [-v] [-V] komut [komut-girdisi
...]
- Belirtilen komut aynı addaki kabuk işlevi yok
sayılarak yürütülür. Yerleşik
komutla aynı adda bir kabuk işlevi de varsa bu
yerleşik yararlı olur.
- -p
- komut tüm standart ugulamaları bulmayı garanti
eden PATH ortam değişkeni kullanılarak
aranır.
- -V
- komutu yürütmek yerine type
yerleşiğinin yaptığı gibi, komut
aramasının sonuçlarını gösterir.
- -v
- komutu yürütmek yerine komut için arama yapar
ve uygulamaları, yerleşik komut adlarını ve
takma ad genişletmelerini mutlak dosya yolları ile
gösterir.
-
- cd -
cd [-LP] [dizin]
- Belirtilen dizine (belirtilmemişse HOME dizinine)
geçer. CDPATH değişkeni cd komutunun
ortamında görünür durumdaysa veya
CDPATH kabuk değişkeni, eğik çizgi ile
başlamayan bir dosya yolu ile tanımlanmışsa,
belirtilen dizin CDPATH dizinlerinde aranır.
CDPATH değerinin biçemi PATH ile
aynıdır. dizin olarak tek bir tire
belirtilmişse OLDPWD ortam değişkeninin
değeri kullanılır. cd komutu belirtilen
dizinden farklı bir dizine geçiş
yapmışsa dizin adını gösterir. Bu
genellikle, dizin olarak tek bir eğik çizgi
belirtilmesi veya CDPATH değerinin
kullanılması durumunda ortaya çıkar. -P
seçeneği fiziksel dizin yapısının
kullanılmasına sebep olur, yani tüm sembolik
bağlar değerlerine çözümlenir.
-L seçeneği önüne getirildiği
-P seçeneğini etkisiz kılar.
- echo [-n]
dizge...
- Belirtilen dizgeleri aralarında boşluk
bırakarak standart çıktıya basar. -n
seçeneği belirtilmezse dizgelerden sonra satır
sonu karakteri çıktılanır.
Aşağıdaki dizgeciklerin
varlığında (çift tırnakların
içinde belirtildikleri takdirde), dizgecik
çıktılanmaz, dizgecikle ilgili eylem
gerçekleştirilir :
- \b
- Ters eğik çizgi karakteri
çıktılanır.
- \c
- Ardından gelen çıktıyı baskılar.
Genelde, son dizgenin sonunda belirtilerek satır sonu karakterinin
basılması önlenir.
- \f
- Sayfa ileri karakterini çıktılar.
- \n
- Satır sonu (yeni satır) karakterini
çıktılar (daktilodaki şaryoyu
döndürüp satırın başına
götürme işlemini uçbirimde yapar).
- \r
- Satır başı karakterini çıktılar
(imleci satırın başına gönderir).
Örnek:
-
- \t
- Yatay sekme karakterini çıktılar.
- \v
- Düşey sekme karakterini çıktılar
(imleci bulunduğu sütunda düşeyde ilerletir).
Örnek:
$ echo "başlık açıklama\n" "\rbaşlık\v" "açıklama"
başlık açıklama
başlık
açıklama
-
- \0NNN
- NNN sekizlik tabanda en fazla 3 rakam içerebilir.
Belirtilmişse sekizlik ASCII NNN karakterini
belirtilmemişse 0ıncı karakteri (Boş karakter
de dediğimiz, meşhur "null" karakterini) basar.
Hiçbir çıktı vermez.)
- \\
- Ters eğik çizgi çıktılar.
- Diğer tüm ters eğik çizgi dizgecikleri,
tanımsız davranışı ortaya
çıkarır.
- eval dizge
...
- Belirtilen tüm dizgeleri aralarına boşluk
yerleştirerek birleştirir. Genişletmeleri
uyguladıktan sonra komutu yürütür.
- exec [komut
komut-girdisi ...]
- Bir kabuk komutu veya işlev olmamak koşuluyla gerçek
bir komut belirtildiğinde komut, süreci kabuktan
devralır. komut-girdisi içinde belirtilen
yönlendirmeler kalıcı olur, yani exec
yerleşiğinin işi bittiğinde
yönlendirmeler geri alınmaz.
- exit
[çıkışdurumu]
- Kabuk oturumunu sonlandırır.
çıkışdurumu belirtilmişse
kabuğun çıkış durumu olarak
kullanılır, aksi takdirde önceki komutun
çıkış durumu kullanılır.
- export isim
...
export -p
- Belirtilen isimler dışa aktarılarak sonraki
komutların ortam değişkenleri olması
sağlanır. Bir değişkenin dışa
aktarılmaması için tek yol, onu unset ile
atanmamış yapmaktır. Kabuk bir
değişkenin değerini dışa
aktarırken de atayabilir:
- export komutu hiçbir girdi belirtilmeksizin
kullanıldığında dışa
aktarılmış tüm ortam
değişkenlerini listeler. -p seçeneği
belirtildiğinde çıktı, etkileşimli
olmayan kullanım için uygun şekilde
biçimlendirilir.
- fc [-e
düzenleyici] [ilk [son]]
fc -l [-nr] [ilk [son]]
fc -s [eski=yeni] [ilk]
- fc yerleşiği etkileşimli kabuğa evvelce
girilmiş (komut geçmişindeki) komutları
listeler, düzenler veya yeniden
çalıştırır.
- -e
düzenleyici
- Komutları düzenlemek için belirtilen
düzenleyici kullanılır.
düzenleyici dizgesi bir komut adı olup PATH
ortam değişkeninde belirtilen yollar üzerinde
olmalıdır. Seçenek belirtilmezse
öntanımlı olarak FCEDIT ortam
değişkeninde belirtilen düzenleyici
kullanılır. FCEDIT tanımlı
değilse veya boş değer içeriyorsa
EDITOR ortam değişkeninin değeri
kullanılır. EDITOR de tanımlı
değilse veya boş değer içeriyorsa
düzenleyici olarak ed(1) kullanılır.
- -l
- Komutları düzenlemek için bir düzenleyici
çağırmak yerine komutları listeler. Komutlar
öntanımlı olarak ilk ve son ile
belirtilen sırayla gösterilir. -r
belirtilmişse sıralama tersine olur. Her komuttan
önce komut geçmişindeki sıra numarası
basılır.
- -n
- -l seçeneği ile komutlar listelenirken sıra
numaraları gösterilmez.
- -r
- Komutlar listelenirken (-l ile) veya düzenlenirken (
-l veya -s olmaksızın) sıralama
sondan ilke doğru olur.
- -s
- Bir düzenleyici çağırmaksızın
komut yeniden çalıştırılır.
- ilk
son
- Listelenecek ve düzenlenecek komutları seçmek
için kullanılır. Komut geçmişinde
saklanabilecek komut sayısı HISTSIZE ortam
değişkeninde tutulur. ilk ve son
değerleri şunlardan biri olmalıdır:
- [+]sayı
- sayı komut geçmişinde komutun sıra
numarasını belirten pozitif bir tamsayı
olmalıdır. Komutların numaralarına -l
seçeneği ile erişilebilir.
- -sayı
- -sayı komut geçmişinde komutun sıra
numarasını belirten negatif bir tamsayı
olmalıdır. Komutların numaralarına -l
seçeneği ile erişilebilir. -1
çalıştırılan son komuttur.
-
- dizge
- Aranan komutun komut geçmişindeki son
kullanımına komutun ilk birkaç karakteri dizge
olarak belirtilerek erişilebilir. -s seçeneği
eski=yeni terimiyle birlikte
kullanılmışsa eski dizgesi eşit imini
içermemelidir.
- fc komutunun önemsediği ortam
değişkenleri:
- FCEDIT
- Kullanılacak düzenleyicinin adı.
- HISTSIZE
- Komut geçmişinde tutulabilecek en fazla komut
sayısı.
-
- fg
[görev]
- Belirtilen görev veya geçerli olan önalana
alınır.
- getopts
seçenekler değişken
- POSIX getopts yerleşik komutu Bell Labs getopt(1)
türevi ile
karıştırılmamalıdır.
seçenekler, seçeneğin bir girdi
gerektirdiğini belirtmek için isteğe
bağlı olarak her birinin ardından iki nokta
üst üste gelebilen bir dizi harf olmalıdır.
Ayıklanan her seçenek değişkene
atanır.
getopts yerleşik komutu, boşluk
içeren girdileri işlemesi nedeniyle
kullanımı önerilmeyen eski getopt(1)
yardımcı komutunun yerini alır.
getopts yerleşiği, bir komutun girdi
listesinden seçenekleri ve seçenek girdilerini
ayıklamak için kullanılabilir. getopts
çağrıldığında,
seçenekler dizgesinde belirtilen seçeneklerden
komut satırında belirtileni değişkene
ve seçenek sayısı OPTINDe, girdisini
OPTARG kabuk değişkenine yerleştirir. Kabuk
çağrıldığında, OPTIND 1
ile ilklendirilir. Bir girdi gerektiren her seçenek için,
girdi OPTARG kabuk değişkenine
yerleştirilir. Girdisiz seçenekler için
OPTARG tanımsızdır.
seçenekler seçenek harflerinden (bkz.
getopt(3) oluşan bir dizgedir. Bir harfin ardından
iki nokta üst üste geliyorsa, seçeneğin
kendisinden boşlukla ayrılabilen veya kendine
bitişik bir girdisi var demektir. Komut satırında
belirtilmiş bir seçenek seçenekler
arasında yoksa, değişkene “?”
atanır, OPTARG tanımsız olur ve
çıktı standart hataya yazılır.
seçenekler dizgesinin ilk karakteri iki nokta üst
üste ise, tüm hatalar yok sayılır.
Son seçeneğin ardından
değişkene “?” atanır ve
getopts sıfırdan farklı bir değerle
çıkar.
Aşağıdaki örnekte seçenek
olarak [a] ve [b] karakterleri ile girdisi olabilen [c] karakterini
kabul eden bir betiğin komut satırını
nasıl değerlendirileceği
gösterilmiştir.
while getopts abc: f
do
case $f in
a | b) secenek=$f;;
c) terim=$OPTARG;;
\?) echo $USAGE; exit 1;;
esac
done
shift ’expr $OPTIND - 1’
echo "Seçenek olmayan girdiler: " "$@"
- Bu kodun kabul ettiği komut şunlardan biri olabilir:
betikadı -acterim dosya dosya
betikadı -a -c terim dosya dosya
betikadı -cterim -a dosya dosya
betikadı -a -cterim -- dosya dosya
-
- hash -rv komut
...
- Hatırlanan komutların yerlerini bir tablo olarak
gösterir. Girdisiz kullanıldığında bu
tablonun içeriği gösterilir. Son cd komutundan
beri bakılmamış girdiler yıldız imi ile
imlenir, bu girdilerin geçersiz olması
mümkündür.
Girdi belirterek kullanıldığında,
belirtilen komutlar (işlev değilse) ve tablodan
kaldırılır ve konumları saptanır.
-v seçeneği ile hash komutların
konumlarını bulduğu gibi gösterir. -r
seçeneği, işlevler dışındaki
tüm öğelerin tablodan silinmesine neden olur.
- pwd [-LP]
- Her seferinde yeniden hesaplamak yerine geçerli dizinin ne
olduğunu hatırlar. Bu işleri
hızlandırır. Ancak, geçerli dizinin adı
değişirse, pwd dizinin eski adını
göstermeye devam edecektir. -P seçeneği ile
tüm sembolik bağlar hedeflerine
çözümlenir. -L seçeneği,
önceki tüm -P seçeneklerini etkisiz
kılar.
- read [-p
istem] [-r] değişken [...]
- -p seçeneği belirtilirse ve standart girdi bir
uçbirim ise istem gösterilir. Daha sonra standart
girdiden bir satır okunur. Satır sonu karakteri,
satırdan silinir ve satır, yukarıdaki
Boşluk Ayıklama (Alanlara Ayırma)
bölümünde
açıklandığı gibi
bölünür ve parçalar sırayla
değişkenlere atanır. En az bir
değişken belirtilmelidir. Parça
sayısı belirtilen değişkenlerden fazlaysa,
kalan parçalar (aralarındaki IFS karakterleri ile birlikte)
son değişkene atanır. Parçalardan daha fazla
değişken varsa, kalan değişkenlere boş
dizge atanır. read yerleşiği, girdide dosya
sonu karakteri ile
karşılaşılmadığı
sürece başarılı olur, aksi takdirde
başarısız olur.
Öntanımlı olarak, -r
seçeneği belirtilmedikçe, ters eğik
çizgi "\" bir önceleme karakteri gibi davranarak
sonraki karakterin kendisi olarak ele alınmasını
sağlar. Satır sonu karakterinden önce bir ters
eğik çizgi varsa bu ikisi silinir.
- readonly
isim ...
readonly -p
- Belirtilen isimler, sonradan değiştirilememeleri veya
atanamamaları için salt okunur olarak imlenir.
- sözdizimi, salt okunur olarak imlerken aynı zamanda
isim ile belirtilen değişkene değer
atanabilmesini de sağlar.
Komut girdisiz kullanıldığında,
tüm salt okunur değişkenlerin
adlarını listeler. -p seçeneği ile
çıktı, etkileşimli olmayan kullanım
için uygun şekilde biçemlendirilir.
- printf
biçem [girdi ...]
- printf, biçem ile belirtilen biçeme göre
girdileri biçemleyip gösterir. biçem
üç tür nesne içeren bir dizgedir:
• Basitçe standart
çıktıya kopyalanan karakterler
• Dönüştürülüp standart
çıktıya kopyalanan ters eğik çizgi
öncelemeli karakterler
•
girdileri biçemleyen biçem belirteçleri
- Belirteçler b, c veya s ise, girdiler
dizge olarak ele alınır; aksi takdirde,
aşağıdaki genişletmelerle bir C sabiti olarak
değerlendirilir:
• Baştaki artı veya eksi imine izin
verilir.
• Öndeki karakter tek veya çift tırnak ise,
değer sonraki karakterin ASCII kodudur.
- biçem dizgesi, girdiler üzerinde
gerektiğinde tekrar tekrar kullanılabilir. Herhangi bir ek
biçem belirtimi, sıfır veya boş dizge ile
değerlendirilir.
Ters eğik çizgi öncelemeli karakterler,
ANSI X3.159-1989’da (“ANSI C89”) tanımlanan
gösterime uygun olmalıdır. Karakterler ve
anlamları:
- \a
- <zil> çalar.
- \b
- <geri-silme> karakteri basar.
- \f
- <sayfa-ileri> karakteri basar.
- \n
- <satır-sonu> karakteri basar.
- \r
- <satır-başı> karakteri basar.
- \t
- <sekme> karakteri basar.
- \v
- <düşey-sekme> karakteri basar.
- \\
- Ters eğik çizgi basar.
- \NNN
- ASCII değeri, sekizlik tabanda 1, 2 veya 3 rakamdan oluşan
karakteri basar.
- Her biçem belirtimi, yüzde imiyle ("%")
başlar. Biçem belirtiminin geri kalanı
aşağıdaki sırayla şunları
içerir:
- Aşağıdakilerden
sıfır veya daha fazlası:
- #
- Belirtilen alanda çıktının sola
yanaştırılacağını belirten eksi
imi ’-’; Değerin "başka bir
biçimde" yazdırılması gerektiğini
belirten bir "#" karakteri. b, c, d ve s
biçemleri için bu seçeneğin hiçbir
etkisi yoktur. o biçemi için,
çıktı dizgesinin ilk karakterini sıfıra
zorlamak için sayının hassasiyeti
artırılır. x (X) biçemi
için, sıfır olmayan bir sonucun başına
0x (0X) dizgesi eklenir. e, E, f, g ve G
biçemleri için, noktayı takip eden basamak olmasa
bile sonuç her zaman bir ondalık nokta içerir
(normalde, bu biçemlerin sonuçlarında ondalık
nokta yalnızca noktayı bir basamak takip ediyorsa
görünür). Normalde sonuçtan
kaldırılan sağdaki sıfırlar g ve
G biçemleri için kaldırılmaz.
- -
- Belirtilen alanda çıktının sola
yanaştırılacağını belirten eksi
imi.
- +
- İmli biçimler kullanılırken her zaman
sayının önüne bir im konulması
gerektiğini belirten artı imi.
- ‘ ’
- İmli biçim için pozitif bir sayıdan
önce bir boşluk bırakılması
gerektiğini belirten boşluk karakteri. "+" imi de
belirtilmişse boşluk geçersiz olur.
- 0
- Dolgu karakteri olarak boşluk yerine "0"
kullanılması gerektiğini belirten sıfır
karakteri. "-" imi de belirtilmişse "0"
geçersiz olur.
-
- Alan
Genişliği:
- Alan genişliğini belirten isteğe bağlı
rakam dizgesi; çıktı dizgesi alan
genişliğinden daha az karakter içeriyorsa, alan
genişliğini oluşturmak için solda (veya sola
yanaştırma imi varsa sağda) boşluk
bırakılır (baştaki
sıfırın belirteç, aradaki
sıfırların, alan genişliğinin
parçası olduğu unutulmamalıdır).
- Hassasiyet:
- İsteğe bağlı nokta, ’.’,
ardından e ve f biçemleri için
ondalık noktadan sonra görünecek basamak
sayısını veya bir dizgeden yazdırılacak
azami bayt sayısını belirten isteğe
bağlı sayısal bir dizge (b ve s
biçemleri) hassasiyeti belirler. Sayısal dizge yoksa
hassasiyetin sıfır olduğu varsayılır.
- Biçem:
- Kullanılacak biçemin türünü
gösteren bir karakter (diouxXfwEgGbcs harflerinden biri).
Alan genişliği veya hassasiyet için
sayısal dizge yerine ‘*’ belirtilebilir. Bu
durumda, alan genişliğini veya hassasiyeti bir girdi
belirler. Biçem karakterleri ve anlamları:
- diouXx
- girdi, sırasıyla, işaretli onluk (d
veya i), işaretsiz sekizlik (o), işaretsiz
onluk (u) veya işaretsiz onaltılık (X
veya x) tabanda basılır.
- f
- girdi, [-]ddd.ddd biçeminde basılır;
burada ondalık noktadan sonraki d’lerin
sayısı, hassasiyet belirtimindeki basamak
sayısıdır. Hassasiyet belirtilmemişse 6
basamak öntanımlıdır; hassasiyet
açıkça 0 ise, ondalık nokta ve
sağındaki basamaklar basılmaz.
- eE
- girdi, [-]d.ddde±dd biçeminde
basılır; burada ondalık noktadan önce bir
basamak vardır ve sonraki basamak sayısı hassasiyet
belirtimindeki basamak sayısıdır. Hassasiyet
belirtilmemişse 6 basamak öntanımlıdır.
’E’ biçemi için büyük E
harfi kullanılır.
- gG
- girdi, f ve e (E) biçemlerinden tam
hassasiyeti en küçük alanda sağlayan
biçem kullanılarak basılır.
- b
- girdideki karakterler, ters eğik çizgili karakterler
genişletilerek basılır. Diğerlerine ek olarak
aşağıdaki ters eğik çizgili karakterler
desteklenir:
- \c
- Kendisini içeren girdideki kalan karakterlerin, kalan
girdilerin ve biçemdeki tüm ek karakterlerin
yok sayılmasına neden olur.
- \0NNN
- ASCII değeri, sekizlik tabanda 1, 2 veya 3 rakamdan oluşan 8
bitlik karakteri basar.
-
- c
- girdinin ilk karakteri basılır.
- s
- girdideki karakterler, sona ulaşılana veya hassasiyet
belirtimiyle belirtilen bayt sayısına
ulaşılana kadar basılır; hassasiyet
belirtilmemişse, girdideki tüm karakterler
basılır.
- %
- Yalnızca ’%’ basar.
- Hiçbir durumda, alan genişliğinin
olmayışı veya küçük alan
genişliği, bir alanın
kırpılmasına neden olmaz; dolgu, yalnızca
belirtilen alan genişliği asıl
genişliği aşarsa gerçekleşir.
-
- set [{
-seçenekler | +seçenekler | -- }] girdi
...
- set komutunun üç farklı işlevi
vardır.
Girdisiz kullanımda tüm kabuk
değişkenlerinin değerleriyle listeler.
seçenekler verilirse, belirtilen seçenek
imlerini ayarlar veya Girdi Listesinin İşlenmesi
bölümünde
açıklandığı gibi bunları
temizler. Özel bir durum olarak, seçenek -o veya
+o ise ve herhangi bir girdi sağlanmazsa, kabuk
tüm seçeneklerinin ayarlarını
gösterir. Seçenek -o ise, ayarlar tablo olarak
gösterilir; seçenek +o ise, ayarlar, aynı
seçenek ayarlarını etkilemek için
kabuğa yeniden girilmeye uygun biçimde listelenir.
Üçüncü kullanımında,
kabuğun konumsal değişkenlerinin değerlerine
belirtilen girdiler atanır. Herhangi bir
seçeneği değiştirmeden konumsal
değişkenleri değiştirmek için, ilk
girdi “--” olmalıdır. Hiçbir
girdi belirtilmezse, set komutu tüm konumsal
değişkenleri siler ("shift $#" komutuna
eşdeğerdir).
- shift
[N]
- Konumsal değişkenleri N kez kaydırır.
Kaydırma, $1’in değerini $2’nin
değerine, $2’nin değerini $3’e
vb. atamak, $# değerini bir azaltmak şeklinde
uygulanır. N, konumsal değişken
sayısından büyükse, shift hatayı
belirten bir ileti gösterir ve 2 durumu ile çıkar.
- test ifade
[ ifade ]
- test yerleşiği ifadeyi değerlendirir ve
doğru olarak değerlendirirse
çıkış durumu 0 (doğru), aksi takdirde 1
(yanlış) olur. ifade belirtilmediği takdirde
de, 1 (yanlış) ile çıkar.
Tüm işleçler ve seçenekler, test
yerleşiği için ayrı bir girdidir.
ifade öncelikle
aşağıdakilerden oluşur:
- -b dosya
- dosya mevcut ve blok özel dosyası ise sonuç
doğrudur.
- -c dosya
- dosya mevcut ve karakter özel dosyası ise
sonuç doğrudur.
- -d dosya
- dosya mevcut ve bir dizin ise sonuç doğrudur.
- -e dosya
- dosya mevcut ise sonuç doğrudur (türüne
bakılmaksızın).
- -f dosya
- dosya mevcut ve normal bir dosya ise sonuç doğrudur.
- -g dosya
- dosya mevcut ve grup kimliği belirleme biti etkinse
sonuç doğrudur.
- -h dosya
- dosya mevcut ve sembolik bağ ise sonuç
doğrudur.
- -k dosya
- dosya mevcut ve yapışkan biti etkinse sonuç
doğrudur.
- -n dizge
- dizge uzunluğu sıfır değilse
sonuç doğrudur.
- -p dosya
- dosya isimli bir ardışık komut (FIFO) ise
sonuç doğrudur.
- -r dosya
- dosya mevcut ve okunabilirse sonuç doğrudur.
- -s dosya
- dosya mevcut ve boyutu sıfırdan büyükse
sonuç doğrudur.
- -t
dosya-tanıtıcı
- dosya-tanıtıcısı belirtilen dosya
açık ve bir uçbirim ile ilişkili ise
sonuç doğrudur.
- -u dosya
- dosya mevcut ve kullanıcı kimliği belirleme
biti etkinse sonuç doğrudur.
- -w dosya
- dosya mevcut ve yazılabilir ise sonuç
doğrudur. Sonuç yanlızca yazmanın etkin olup
olmadığı ile ilgilidir. Dosya salt-okunur
bağlı bir dosya sisteminde olsa bile sonuç
doğru olacaktır.
- -x dosya
- dosya mevcut ve çalıştırılabilir
ise sonuç doğrudur. Sonuç yanlızca kipin etkin
olup olmadığı ile ilgilidir. Dosya, bir dizin ise
doğru sonucu dizinde arama yapılabileceğini belirtir.
- -z dizge
- dizge uzunluğu sıfır ise sonuç
doğrudur.
- -L dosya
- dosya mevcut ve sembolik bağ ise sonuç
doğrudur. Önceki sürümlerle uyumluluk
için vardır. Bu seçeneğe güvenilmemeli,
yerine -h kullanılmalıdır.
- -O dosya
- dosya mevcut ve dosyanın sahibi sürecin etkin
kullanıcısı ile aynıysa sonuç
doğrudur.
- -G dosya
- dosya mevcut ve dosyanın grubu sürecin etkin grubu
ile aynıysa sonuç doğrudur.
- -S dosya
- dosya mevcut ve bir soketse sonuç doğrudur.
- dosya1 -nt
dosya2
- dosya1 ve dosya2 mevcut ve dosya1
dosya2’den yeniyse sonuç doğrudur.
- dosya1
-ot dosya2
- dosya1 ve dosya2 mevcut ve dosya1
dosya2’den eskiyse sonuç doğrudur.
- dosya1
-ef dosya2
- dosya1 ve dosya2 mevcut ve ikisi de aynı dosyaya
bağlı ise sonuç doğrudur.
- dizge
- dizge null değilse sonuç doğrudur.
- dizge1 =
dizge2
- dizge1 ve dizge2 aynıysa sonuç
doğrudur.
- dizge1
!= dizge2
- dizge1 ve dizge2 aynı değilse sonuç
doğrudur.
- dizge1
< dizge2
- Karakterlerinin ASCII değerlerine göre dizge1,
dizge2den önce geliyorsa sonuç doğrudur.
- dizge1
> dizge2
- Karakterlerinin ASCII değerlerine göre dizge1,
dizge2den sonra geliyorsa sonuç doğrudur.
- tamsayı1
-eq tamsayı2
- tamsayı1 ve tamsayı2 matematiksel olarak
eşitse sonuç doğrudur.
- tamsayı1
-ne tamsayı2
- tamsayı1 ve tamsayı2 matematiksel olarak
eşit değilse sonuç doğrudur.
- tamsayı1
-gt tamsayı2
- tamsayı1, tamsayı2’den matematiksel
olarak büyükse sonuç doğrudur.
- tamsayı1
-ge tamsayı2
- tamsayı1, tamsayı2’den matematiksel
olarak büyük veya eşitse sonuç
doğrudur.
- tamsayı1
-lt tamsayı2
- tamsayı1, tamsayı2’den matematiksel
olarak küçükse sonuç doğrudur.
- tamsayı1
-le tamsayı2
- tamsayı1, tamsayı2’den matematiksel
olarak küçük veya eşitse sonuç
doğrudur.
- Yukarıdaki öncüller aşağıdaki
işleçlerle birlikte belirtilebilir:
- ! ifade
- ifade yanlışsa sonuç doğrudur.
- ifade1 -a
ifade2
- ifade1 VE ifade2 doğru ise sonuç
doğrudur.
- ifade -o
ifade2
- ifade1 VEYA ifade2 doğru ise sonuç
doğrudur.
- (ifade)
- ifade doğru ise sonuç doğrudur.
- -a (VE) işleci -o (VEYA) işlecinden
önceliklidir.
- times
- Kabuğun ve kabukta çalışan sürecin
harcadığı kullanıcı ve sistem
sürelerini basar. Çıkış durumu daima
sıfırdır.
- trap [eylem
sinyal ...]
- Belirtilen sinyal’lerden biri
alındığında kabuk eylem’i
genişletir ve yürütür. sinyaller,
sinyal numarasıyla veya sinyalin adıyla belirtilebilir.
sinyal 0 veya EXIT ise, eylem kabuk
çıktığında
yürütülür. eylem boş olabilir
(’’), bu da belirtilen sinyallerin yok
sayılmasına neden olur. eylem belirtilmez veya
’-’ olursa, belirtilen sinyaller için
bunların öntanımlı eylemleri uygulanır.
Kabuk bir alt kabuğu çatalladığında,
yakalanan (ancak yok sayılmayan) sinyaller için
öntanımlı eylemleri uygulanır. Trap komutunun,
kabuk başlatılırken yok sayılan sinyaller
üzerinde hiçbir etkisi yoktur. trap girdisiz
kullanımda, sinyalleri ve ilişkili eylemleri standart
çıktıya (trap yerleşiğinin
aynı sonuçlara ulaşacağı kabuk
girdileri olarak) listeler.
Örnekler:
- Sinyalleri ve ilişkili eylemleri listeler.
- INT QUIT TSTP USR1 sinyallerini yoksayar.
- INT sinyali alınınca tarihi basar.
- type [isim
...]
- Belirtilen her isim bir komut olarak yorumlanır ve komut
aramasının çözümü
gösterilir. Olası çözümler
şunlardır: kabuk anahtar
sözcüğü, takma ad, kabuk
yerleşiği, komut, izlenen takma ad ve bulunamadı.
Takma adlar için takma adın değeri gösterilir;
komutlar ve izlenen takma adlar için komutun tam yolu
gösterilir.
- ulimit [-H |
-S] [-a | -tfdscmlpnv [değer]]
- Süreçler üzerinde, katı ve esnek
sınırları belirler veya bilgi verir ya da yeni
sınırları belirler. Katı sınır
(hiçbir sürecin ihlal etmesine izin verilmeyen,
değeri artırılamayan veya eksiltilemeyen
sınırlar) ve esnek sınır (ihlal eden
sürecin sinyallenmesine ancak öldürülmemesine
sebep olan değeri arttırılabilir/eksiltilebilir
sınırlar) arasında seçim
yapılabilmesini sağlayan seçenekler:
- -H
- Katı sınırları etkinleştirir veya bilgi
verir.
- -S
- Esnek sınırları belirler veya bilgi verir. Ne
-H ne de -S belirtilmişse ya esnek
sınırlar gösterilir ya da
sınırların ikisi de etkin olur. İki
seçenek de belirtilmişse sonuncusu kazanır.
- Sorgulanacak veya atanacak sınır
aşağıdaki seçeneklere göre
seçilir:
- -a
- Geçerli tüm sınırlar gösterilir.
- -t
- İşlemci zamanı ile ilgili sınır (saniye
cinsinden) gösterilir veya atanır.
- -f
- Oluşturulabilecek en büyük dosya boyutu (512
baytlık blok sayısı olarak) gösterilir veya
belirlenir.
- -d
- Süreç veri segmanının boyutu (kilobayt olarak)
gösterilir veya belirlenir.
- -s
- Süreç yığıt boyutu (kilobayt olarak)
gösterilir veya belirlenir.
- -c
- Üretilebilecek en büyük çekirdek
dökümünün boyutu (512 baytlık blok
sayısı olarak) gösterilir veya belirlenir.
- -m
- Bir sürece ayrılan toplam fiziksel belleğin
sınırı (kilobayt olarak) gösterilir veya
belirlenir.
- -l
- Bir sürecin lock veya mlock kullanarak kilitleyebileceği
bellek boyutu (kilobayt olarak) gösterilir veya belirlenir.
- -p
- Kullanıcının aynı anda sahibi
olabileceği süreç sayısı
gösterilir veya belirlenir.
- -n
- Bir sürecin aynı anda açabileceği dosya
sayısı gösterilir veya belirlenir.
- -v
- Bir sürecin kullanılabileceği toplam sanal bellek
(kilobayt olarak) gösterilir veya belirlenir.
- -r
- Bir sürecin gerçek zamanlı zamanlama
önceliği gösterilir veya belirlenir.
- Bunlardan hiçbiri belirtilmezse, sınır,
gösterilen veya ayarlanan dosya boyutunun
sınırıdır. değer belirtilirse,
sınır o sayıya ayarlanır; aksi takdirde
geçerli sınır görüntülenir.
Bir sürecin sınırları
sysctl(8) ile belirlenebilir veya gösterilebilir.
- umask
[maske]
- umask değerini (bkz. umask(2)) belirtilen sekizlik
değere ayarlar. maske belirtilmezse, umask değeri
gösterilir.
- unalias
[-a][isim]
- isim belirtilirse kabuk bu takma adı siler. -a
belirtilirse tüm takma adlar silinir.
- unset [-fv
]isim ...
- Belirtilen değişken ve işlev isimleri
tanımsız ve dışa
aktarılmamış duruma getirilir. -f ve -v
belirtilirse, işlem karşılık gelen
işlev veya değişkene uygulanır. Belirtilen
isim hem bir değişkene hem de bir işleve
karşılık geliyorsa ve herhangi bir seçenek
verilmezse, yalnızca değişken tanımsız
olur.
- wait
[görev]
- Belirtilen görevin tamamlanmasını bekler ve
görevdeki son sürecin
çıkış durumuyla çıkar.
görev belirtilmezse, tüm görevlerin
tamamlanmasını bekler ve sıfır durumu ile
çıkar.
dash bir uçbirimden etkileşimli olarak
kullanıldığında, geçerli komut ve komut
geçmişi (Yerleşiklerde fc’ye
bakın) vi kipinde komut satırı
düzenlemesi kullanılarak düzenlenebilir. Bu kip,
vi kılavuz sayfasında
açıklandığı gibi
kullanılır. ’set -o vi’ komutu, vi
kipinde düzenlemeyi etkinleştirir ve kabuğu vi
ekleme kipine yerleştirir. vi kipi
etkinleştirildiğinde kabuk, ekleme kipine veya komut kipine
alınabilir. vi’ye benzer olarak, ESC tuşuna
basılırsa komut kipine girer. Komut kipindeyken Enter
tuşuna basılırsa, satır kabuğa
aktarılır.