Provided by: manpages-tr_2.0.6-2_all 

İSİM
dash - komut yorumlayıcı (kabuk)
KULLANIM
dash [-aCefnuvxIimqVEb] [+aCefnuvxIimqVEb] [-o SEÇENEK_ADI] [+o SEÇENEK_ADI] [KOMUT_DOSYASI
[KOMUT_GİRDİSİ...]]
dash -c [-aCefnuvxIimqVEb] [+aCefnuvxIimqVEb] [-o SEÇENEK_ADI] [+o SEÇENEK_ADI] KOMUT_DİZGESİ [KOMUT_ADI
[KOMUT_GİRDİSİ...]]
dash -s [-aCefnuvxIimqVEb] [+aCefnuvxIimqVEb] [-o SEÇENEK_ADI] [+o SEÇENEK_ADI] [GİRDİ...]
AÇIKLAMA
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.
Giriş
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.
Kullanım
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.
Girdi Listesinin İşlenmesi
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
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:
$ ’ " \ <satırsonu>.
Bunların dışında kalan herşey aslını korur.
Anahtar Sözcükler
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 Adlar
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,
lf foobar ⟨return⟩
komut satırı girdisi şu hale gelir:
ls -F foobar ⟨return⟩
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.
Komutlar
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
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.
Arama ve Yürütme
Üç 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.
Dosya Yolu Araması
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.
Komut Çıkış Durumu
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
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 Komutlar
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,
$ komut1 2<&1 | komut2
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).
Artalan Komutları -- &
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:
komut1 & [komut2 & ...]
Kabuk etkileşimli değilse, eşzamansız komutun (artalan komutunun) standart girdisi /dev/null olur.
Listeler (genel olarak)
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-VEYA Listeleri (Kısa Liste İşleçleri)
“&&” 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.
Akış Denetim Deyimleri -- if, while, for, case
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,
(liste)
sözdizimi ile veya
{ liste; }
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:
isim () komut
İş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 [değişken | -] ...
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 [çıkışdurumu]
return deyimi işlevin yürütmesini durdurur. return yerleşik komut olarak gerçeklenmiştir.
Değişkenler
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:
isim=değer
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:
"abc" "def ghi"
# 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
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:
${ifade}
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şken}
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
$(komut)
sarmalandığında veya
’komut’
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:
$((ifade))
İ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.
Yerleşikler
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:
$ echo "12\r3"
32
\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 name=value
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.
readonly isim=değer
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:
trap
Sinyalleri ve ilişkili eylemleri listeler.
trap ’’ INT QUIT tstp 30
INT QUIT TSTP USR1 sinyallerini yoksayar.
trap date INT
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.
Komut Satırı Düzenleme
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.
ÇIKIŞ DURUMU
Kabuk tarafından saptanan sözdizimi hatası gibi hatalar, kabuğun sıfırdan farklı bir çıkış durumuyla
çıkmasına neden olur. Kabuk etkileşimli değilse, kabuk dosyasının yürütmesi durdurulur. Aksi takdirde,
kabuk yürütülen son komutun çıkış durumunu döndürür veya exit yerleşiği sayısal bir girdi ile
kullanılırsa, bu sayıyı döndürür.
ORTAM DEĞİŞKENLERİ
HOME
Parola dosyasındaki (passwd(4)) kullanıcının oturum açma dizini olup değişkene login(1) tarafından
otomatik olarak atanır. Bu ortam değişkeni ayrıca cd yerleşiğinin de öntanımlı girdisidir.
PATH
Yürütülebilirler için öntanımlı dosya arama yolu. Bkz: Dosya Yolu Araması
CDPATH
cd yerleşik komutuyla kullanılan dosya arama yolu.
MAIL
Yeni posta için denetlenecek posta dosyasının adı. MAILPATH tarafından geçersiz kılınır.
MAILCHECK
MAILPATH veya MAIL değişkeni ile belirtilen dosyalara posta gelişini kabuğun denetleme sıklığının
saniye cinsinden değeri. 0 atanırsa, her istemde posta denetimi yapılır.
MAILPATH
Kabuğun gelen postayı denetlemesi için iki nokta üst üste ":" ile ayrılmış dosya adları listesi. MAIL
ortam değişkenini geçersiz kılar. Aynı anda en fazla 10 posta kutusu izlenebilir.
PS1 Birincil istem dizgesi, süper kullanıcı için “# ”, diğer kullanıcılar için “$ ” öntanımlıdır.
PS2 İkincil istem dizgesi, “> ” öntanımlıdır.
PS4 Yürütme izi (set -x) etkinleştirildiğinde her satırdan önceki çıktı, “+ ” öntanımlıdır.
IFS Girdi Alanı Ayraçları. Normalde boşluk, sekme ve satırsonu karakterlerinden oluşur. Daha fazla
ayrıntı için bkz: Boşluk Ayıklama (Alanlara Ayırma)
TERM
Kabuğun öntanımlı uçbirimi. Kabuğun çocukları tarafından miras alınır ve geçmiş düzenleme kiplerinde
kullanılır.
HISTSIZE
Kabuğun geçmiş tamponundaki satır sayısı.
PWD Geçerli çalışma dizininin mantıksal değeri. cd komutuyla ayarlanır.
OLDPWD
Geçerli çalışma dizininin önceki mantıksal değeri. cd komutuyla ayarlanır.
PPID
Kabuğun üst (ebeveyn) sürecinin süreç kimliği.
İLGİLİ DOSYALAR
$HOME/.profile
/etc/profile
İLGİLİ BELGELER
csh(1), echo(1), getopt(1), ksh(1), login(1), printf(1), test(1), getopt(3), passwd(5), environ(7),
sysctl(8).
GEÇMİŞ
dash, /bin/sh’nin mümkün olduğu kadar küçük olmayı amaçlayan POSIX uyumlu gerçeklenimidir. Gerçeklenim,
ash’in (Almquist SHell) NetBSD sürümünden çatallanarak 1997 başlarında Linux’a aktarılmış, 2002’de dash
olarak yeniden adlandırılmıştır.
HATA AYIKLAMA
Önemli bir güvenlik riski oluşturduklarından setuid kabuk betiklerinden ne pahasına olursa olsun
kaçınılmalıdır.
PS1, PS2 ve PS4, gösterilmeden önce içeriği ayrıştırılmalıdır.
ÇEVİREN
© 2023 Nilgün Belma Bugüner
Bu çeviri özgür yazılımdır: Yasaların izin verdiği ölçüde HİÇBİR GARANTİ YOKTUR.
Lütfen, çeviri ile ilgili bildirimde bulunmak veya çeviri yapmak için https://github.com/TLBP/manpages-
tr/issues adresinde "New Issue" düğmesine tıklayıp yeni bir konu açınız ve isteğinizi belirtiniz.
dash 0.5.10 18 Ocak 2003 DASH(1)