Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen zshmisc komutudur.
Program:
ADI
zshmisc - her şey ve sonra bazıları
BASİT KOMUTLAR & BORU HATLARI
A basit komuta takip eden isteğe bağlı parametre atamaları dizisidir
isteğe bağlı yönlendirmeler serpiştirilmiş, boş ayrılmış sözcükler. açıklaması için
atama, başlangıcına bakın zshparam(1).
İlk kelime yürütülecek komuttur ve varsa kalan kelimeler
komuta argümanlar. Bir komut adı verilirse, parametre atamaları değişir
yürütüldüğünde komutun ortamı. Basit bir komutun değeri, onun
çıkış durumu veya bir sinyal tarafından sonlandırılırsa 128 artı sinyal numarası. Örneğin,
kaçırmak foo
argümanlarla basit bir komuttur.
A boru hattı ya basit bir komuttur ya da iki veya daha fazla basit komut dizisidir.
her komut bir sonrakinden ` ile ayrılır|' veya '|&'. Komutların ayrıldığı yer
`|', ilk komutun standart çıktısı, komut satırının standart girişine bağlanır.
sonraki. `|&' kısaltmasıdır '2> & 1 |', hem standart çıktıyı hem de
komutun standart hatası, bir sonraki standart girişe. Bir boru hattının değeri
ardışık düzenden önce ` gelmedikçe, son komutun değeridir.!' bu durumda
değer, son komutun değerinin mantıksal tersidir. Örneğin,
kaçırmak foo | susuzluk 's/foo/bar/'
çıktının (`foo' artı bir yeni satır) ilk komutun iletilecek
ikinci girişe.
Bir boru hattının önünde ` varsakoprok', bir ortak işlem olarak yürütülür; iki yönlü bir boru
onunla ana kabuk arasında kurulur. Kabuk şuradan okuyabilir veya yazabilir
` aracılığıyla birlikte işlem>&p' ve '<&p' yönlendirme operatörleri veya ' ilebaskı -p' ve
`okumak -p'. Bir boru hattından önce her iki `koprok' ve '!'. iş kontrolü ise
aktif, yardımcı süreç, girdi ve çıktı dışında sıradan bir işlem olarak ele alınabilir.
arka plan işi.
A alt liste ya tek bir boru hattıdır ya da iki veya daha fazla boru hattı dizisidir.
`&&' veya '||'. İki boru hattı ` ile ayrılırsa&&', ikinci boru hattı yürütülür
yalnızca ilki başarılı olursa (sıfır durumu döndürür). İki boru hattı ayrılırsa
`||', ikincisi yalnızca ilki başarısız olursa yürütülür (sıfırdan farklı bir durum döndürür). Her ikisi de
operatörler eşit önceliğe sahiptir ve ilişkisel bırakılır. Alt listenin değeri,
yürütülen son işlem hattının değeri. Örneğin,
dmesg | grep panik && baskı Evet
iki boru hattından oluşan bir alt listedir, ikincisi sadece basit bir komut olacaktır.
yürütülürse ve ancak grep komutu sıfır durumu döndürür. Olmazsa, değer
alt listenin bu iade durumu, aksi takdirde baskı (hemen hemen
kesinlikle sıfır).
A liste her bir alt listenin ` ile sonlandırıldığı sıfır veya daha fazla alt liste dizisidir.;',
`&', `&|', `&!' veya yeni satır. Bu sonlandırıcı isteğe bağlı olarak son
liste `içinde karmaşık bir komut olarak göründüğünde listede alt liste(Kendi ID’n ile mağazalarını oluştur)' veya '{Kendi ID’n ile mağazalarını oluştur}'.
Bir alt liste ` ile sonlandırıldığında;' veya yeni satır, kabuk önce bitmesini bekler
sonraki alt listeyi yürütür. Bir alt liste bir ` ile sonlandırılırsa&', `&|' veya '&!', Deniz kabuğu
içindeki son işlem hattını arka planda yürütür ve bitmesini beklemez
(arka planda tüm alt listeyi yürüten diğer mermilerden farkı not edin).
Arka planlı bir işlem hattı, sıfır durumunu döndürür.
Daha genel olarak, bir liste herhangi bir kabuk komutu seti olarak görülebilir.
aşağıdaki karmaşık komutlar; bu, daha sonra 'liste' kelimesinin geçtiği her yerde ima edilir.
Açıklamalar. Örneğin, bir kabuk işlevindeki komutlar, özel bir liste türü oluşturur.
ÖN KOMUTA DEĞİŞTİRİCİLER
Basit bir komuttan önce bir ön komut niteleyici, bu nasıl değiştirecek
komutu yorumlanır. Bu değiştiriciler, aşağıdakiler dışında kabuk yerleşik komutlarıdır.
doğru değil hangi bir ayrılmış kelimedir.
- Komut bir ` ile yürütülür-' onun başına argüman[0] dize.
builtin
Komut sözcüğü, bir kabuk yerine yerleşik bir komutun adı olarak alınır.
işlev veya harici komut.
komuta [ -pvV ]
Komut sözcüğü, bir komut yerine harici bir komutun adı olarak alınır.
kabuk işlevi veya yerleşik. Eğer POSIX_BUILTINS seçenek ayarlandığında, yerleşikler
yürütülebilir ancak bazı özel özellikleri bastırılır. bu -p bayrak
bunun yerine varsayılan bir yolun aranmasına neden olur. $yol. Ile -v bayrak,
komuta benzer nereden Ve birlikte -V, eşdeğerdir nereden -v.
exec [ -cl ] [ -a argv0 ]
Herhangi bir argümanla birlikte aşağıdaki komut, geçerli komut yerine çalıştırılır.
süreç, bir alt süreç olarak değil. Kabuk çatallanmaz ve değiştirilir.
Kabuk çağırmıyor TRAPEKSİT, ne de kaynak oturumu kapat Dosyalar. Seçenekler
diğer kabuklarla uyumluluk için sağlanmıştır.
The -c seçeneği çevreyi temizler.
The -l seçenek eşdeğerdir - değiştirmeyi tedavi etmek için ön komut değiştirici
oturum açma kabuğu olarak komut; komut bir ile yürütülür - başına eklendi argüman[0]
sicim. Bu bayrak ile birlikte kullanıldığında hiçbir etkisi yoktur. -a seçeneği.
The -a seçeneği açıkça belirtmek için kullanılır argüman[0] dize (adı
işlemin kendisi tarafından görüldüğü gibi komut) değiştirme komutu tarafından kullanılacak ve
için bir değer ayarlamaya doğrudan eşdeğerdir. ARGV0 Çevre değişkeni.
doğru değil
Hiçbir kelimede yazım düzeltmesi yapılmamıştır. Bu herhangi bir şeyden önce görünmelidir
herhangi bir ayrıştırma yapılmadan hemen önce yorumlandığı için diğer ön komut değiştirici
tamamlamak. Etkileşimli olmayan mermilerde etkisi yoktur.
noglob Dosya adı oluşturma (globbing) hiçbir kelime üzerinde yapılmaz.
KOMPLEKS KOMUTLAR
A karmaşık komuta zsh'de aşağıdakilerden biridir:
if liste sonra liste [ elif liste sonra liste ] ... [ başka liste ] fi
The if liste yürütülür ve sıfır çıkış durumu döndürürse, sonra liste is
uygulanmış. Aksi takdirde, elif liste yürütülür ve durumu sıfır ise, sonra
liste Idam edildi. her biri elif liste sıfır olmayan durumu döndürür, başka liste is
idam edildi.
için isim ... [ in sözcük ... ] dönem do liste yapılmış
nerede dönem en az bir yeni satır veya ;. Listeyi genişlet sözcüks'yi ayarlayın ve
parametre isim sırayla her birine, yürütme liste her seferinde. Eğer in sözcük
atlanırsa, yerine konumsal parametreleri kullanın. sözcüks.
Birden fazla parametre isim listesinden önce görünebilir sözcüks. Eğer N isims
verildi, ardından döngünün her yürütülmesinde bir sonraki N sözcüks atanır
karşılık gelen parametreler. daha varsa isims kalandan daha sözcüks
kalan parametrelerin her biri boş dizeye ayarlanır. Döngünün yürütülmesi biter
hiç kalmadığında sözcük ilk atamak isim. sadece mümkün
için in ilk olarak görünmek isim listede, aksi takdirde işaretleme olarak kabul edilecektir.
listenin sonu.
için (( [ifade1] ; [ifade2] ; [ifade3] )) do liste yapılmış
aritmetik ifade ifade1 önce değerlendirilir (bkz. `Aritmetik
Değerlendirme'). aritmetik ifade ifade2 kadar tekrar tekrar değerlendirilir
sıfır olarak değerlendirir ve sıfır olmadığında, liste yürütülür ve aritmetik ifade
ifade3 değerlendirildi. Herhangi bir ifade atlanırsa, değerlendirilmiş gibi davranır.
1 için.
süre liste do liste yapılmış
Uygula do liste sürece süre liste sıfır çıkış durumu döndürür.
kadar liste do liste yapılmış
Uygula do liste olduğu sürece kadar liste sıfır olmayan bir çıkış durumu döndürür.
tekrar et sözcük do liste yapılmış
sözcük genişletilir ve bir aritmetik ifade olarak değerlendirilir;
numara n. liste daha sonra yürütülür n kez.
The tekrar et kabuk öykünme modunda başladığında sözdizimi varsayılan olarak devre dışı bırakılır
başka bir kabuk. ` komutu ile etkinleştirilebilir.etkinleştirmek -r tekrar et'
dava sözcük in [[(] model [ | model ] ... ) liste (;;|;&|;|)] ... esac
Uygula liste ilki ile ilgili model eşleşen sözcük, varsa. bu
kalıpların biçimi, dosya adı oluşturma için kullanılanla aynıdır. Bkz.
"Dosya Adı Oluşturma" bölümü.
Şuna da dikkat edin: SH_GLOB seçenek ayarlandı, tüm desen
alternatifler, kabuk tarafından, içindeki bir grup örüntüye eşdeğer olarak değerlendirilir.
parantezler, ancak parantezler ve dikey hakkında beyaz boşluk görünebilir
bar ve bu noktalarda kalıptan çıkarılacaktır. Beyaz boşluk görünebilir
desenin başka bir yerinde; bu soyulmuyor. Eğer SH_GLOB seçenek ayarlandı, yani
bir açılış parantezinin açık bir şekilde davanın bir parçası olarak ele alınabileceğini
sözdizimi, ifade ayrı kelimelere ayrıştırılır ve bunlar
katı alternatifler (diğer mermilerde olduğu gibi).
Eğer liste yürütülen ile sonlandırılır ;& ziyade ;;, aşağıdaki
liste de yürütülür. Aşağıdaki listenin sonlandırıcı kuralı ;;, ;& or
;| uygulanmadığı sürece esac ulaşıldı.
Eğer liste yürütülen ile sonlandırılır ;| kabuk taramaya devam ediyor
modelbir sonraki eşleşmeyi arıyor, ilgili işlemi yürütüyor liste, ve başvuru
karşılık gelen sonlandırıcı için kural ;;, ;& or ;|. Bunu not et sözcük değil
yeniden genişletilmiş; tüm uygulanabilir models aynı ile test edilir sözcük.
seçmek isim [ in sözcük Kendi ID’n ile mağazalarını oluştur dönem ] do liste yapılmış
nerede dönem bir veya daha fazla yeni satır veya ; sonlandırmak için sözcüks. setini yazdır
sözcüks, her birinin önünde bir sayı vardır. Eğer in sözcük atlanırsa, konumsal kullanın
parametreler. bu İSTEM3 istem yazdırılır ve satır düzenleyiciden bir satır okunur
kabuk etkileşimliyse ve bu etkinse veya standart girdiyse. Eğer bu
satırı, listelenenlerden birinin sayısından oluşur sözcüks, ardından parametre isim is
ayarlamak sözcük bu sayıya karşılık gelir. Bu satır boşsa, seçim
liste yeniden yazdırılır. Aksi takdirde, parametrenin değeri isim null olarak ayarlanır.
Standart girişten okunan satırın içeriği parametreye kaydedilir. YANIT.
liste bir dosya sonu veya sonu ile karşılaşılıncaya kadar her seçim için yürütülür.
( liste )
Gerçekleştirmek liste bir alt kabukta. tarafından kurulan tuzaklar tuzak yerleşik kendi değerlerine sıfırlanır
yürütülürken varsayılan değerler liste.
{ liste }
Gerçekleştirmek liste.
{ deneme listesi } her zaman { her zaman-liste }
İlk çalıştırma deneme listesi. Hatalardan bağımsız olarak veya kırılma, devam etmekya da dönüş
içinde karşılaşılan komutlar deneme listesi, yürütmek her zaman-liste. Yürütme o zaman
yürütülmesinin sonucundan devam eder. deneme listesi; başka bir deyişle, herhangi bir hata,
or kırılma, devam etmekya da dönüş komut, sanki normal şekilde ele alınır.
her zaman-liste mevcut değildi. İki kod parçasına "deneme" adı verilir.
engelle' ve 'her zaman engelle'.
İsteğe bağlı yeni satırlar veya noktalı virgüller, her zaman; unutmayın, ancak
yapabilirler değil önceki kapanış ayracı ve her zaman.
Bu bağlamda bir "hata", sözdizimi hatası gibi bir koşuldur.
Geçerli işlevin, komut dosyasının veya listenin yürütülmesini iptal etmek için kabuk. Sözdizimi hataları
kabuk kodu ayrıştırırken karşılaşıldığında, her zaman-liste olduğu
uygulanmış. Örneğin, hatalı oluşturulmuş bir if engellemek deneme listesi neden olur
ayrıştırma sırasında iptal edilecek kabuk, böylece her zaman-liste yürütülmezken,
gibi hatalı bir ikame ${*foo*} sonra bir çalışma zamanı hatasına neden olur
hangi her zaman-liste idam edilecekti.
Özel tamsayı değişkeni ile bir hata durumu test edilebilir ve sıfırlanabilir
TRY_BLOCK_ERROR. dışında bir her zaman-liste değer önemsizdir, ancak
başlatıldı -1. İçeride her zaman-liste, bir hata oluştuysa değer 1'dir.
deneme listesi, başka 0. Eğer TRY_BLOCK_ERROR sırasında 0 olarak ayarlanır. her zaman-liste, hata
neden olduğu durum deneme listesi sıfırlanır ve kabuk yürütme normal şekilde devam eder
bittikten sonra her zaman-liste. sırasında değerin değiştirilmesi deneme listesi kullanışlı değil
(bu, bir ekin parçası olmadıkça her zaman blok).
Bakmadan TRY_BLOCK_ERROR, bittikten sonra her zaman-liste normal kabuk durumu
$? döndürülen değer deneme listesi. varsa, bu sıfır olmayacaktır.
hata olsa bile TRY_BLOCK_ERROR sıfıra ayarlandı.
Aşağıdaki, verilen kodu yürütür ve neden olduğu hataları yok sayar. Bu bir
bir kodda yürüterek kodu korumanın olağan kuralına alternatif
alt kabuk.
{
# kod hangi eğer yalnızca sığınmacı statüleri sona erdirilmemişse, kalıcı oturma iznine sebeb olmak an hata
} her zaman {
# Bu kod is infaz ne olursa olsun of the hata.
(( TRY_BLOCK_ERROR = 0 ))
}
# The hata koşul vardır olmuştur sıfırlayın.
An çıkış komut (veya dönüş a öğesinin en dıştaki işlev düzeyinde yürütülen komut
komut dosyası) içinde karşılaşılan deneme listesi yok değil yürütülmesine neden olmak her zaman-liste.
Bunun yerine, kabuk herhangi bir işlemden hemen sonra çıkar. EXIT tuzak uygulandı.
işlev sözcük ... [ () ] [ dönem ] { liste }
sözcük Kendi ID’n ile mağazalarını oluştur () [ dönem ] { liste }
sözcük Kendi ID’n ile mağazalarını oluştur () [ dönem ] komuta
nerede dönem bir veya daha fazla yeni satır veya ;. Tarafından başvurulan bir işlev tanımlayın
herhangi biri sözcük. Normalde sadece bir sözcük sağlanır; çoklu sözcüks genellikle
sadece tuzak kurmak için kullanışlıdır. Fonksiyonun gövdesi, liste arasına {
ve }. 'İşlevler' bölümüne bakın.
Eğer seçenek SH_GLOB diğer mermilerle uyumluluk için ayarlandı, ardından boşluk
tek olduğunda sol ve sağ parantezler arasında görünebilir sözcük;
aksi takdirde, parantezler bu durumda bir glob kalıbı oluşturuyormuş gibi işlem görecektir.
vaka.
Yukarıdaki formlardan herhangi birinde, işlev gövdesinin dışında bir yeniden yönlendirme görünebilir, çünkü
örnek
işlev() { Kendi ID’n ile mağazalarını oluştur } 2> & 1
Yönlendirme, işlevle birlikte saklanır ve işlev her çalıştığında uygulanır.
uygulanmış. Yönlendirmedeki herhangi bir değişken, işlev noktasında genişletilir.
yürütülür, ancak işlev kapsamı dışındadır.
zaman [ boru hattı ]
The boru hattı yürütülür ve zamanlama istatistikleri standart hatada raporlanır
tarafından belirtilen biçimde ZAMANFMT parametre. Eğer boru hattı atlandı, yazdır
kabuk süreci ve çocukları hakkında istatistikler.
[[ exp ]]
Koşullu ifadeyi değerlendirir exp ve varsa sıfır çıkış durumu döndürün
doğru. Açıklama için "Koşullu İfadeler" bölümüne bakın. exp.
ALTERNATİF FORMLAR İÇİN KOMPLEKS KOMUTLAR
zsh'nin karmaşık komutlarının birçoğunun alternatif biçimleri vardır. Bunlar standart değildir ve
muhtemelen deneyimli kabuk programcıları için bile aşikar değildir; kullanılmamalılar
kabuk kodunun taşınabilirliğinin bir endişe olduğu her yerde.
Aşağıdaki kısa sürümler yalnızca şu durumlarda çalışır: alt liste ` şeklindedir{ liste }' veya eğer
SHORT_LOOPS seçeneği ayarlandı. İçin if, süre ve kadar komutlar, her iki durumda da
döngünün test kısmı da uygun şekilde sınırlandırılmalıdır, örneğin `[[ Kendi ID’n ile mağazalarını oluştur ]]' veya '(( Kendi ID’n ile mağazalarını oluştur
))', aksi takdirde testin sonu tanınmayacaktır. İçin için, tekrar et, dava ve
seçmek argümanlar için böyle özel bir form gerekli değildir, ancak diğer
durum (özel şekli alt liste veya kullanımı SHORT_LOOPS seçeneği) hala geçerlidir.
if liste { liste } [ elif liste { liste } ] ... [ başka { liste } ]
Alternatif bir formu if. Kurallar demek ki
if [[ -o göz ardı parantezler ]] {
baskı Evet
}
çalışıyor, ama
if gerçek { # Mı değil iş!
baskı Evet
}
yok değil, çünkü test uygun şekilde sınırlandırılmamış.
if liste alt liste
Alternatifin kısa bir şekli if. Aynı sınırlamalar, liste uygulamak
önceki forma gelince.
için isim Kendi ID’n ile mağazalarını oluştur ( sözcük Kendi ID’n ile mağazalarını oluştur ) alt liste
Kısa bir formu için.
için isim ... [ in sözcük ... ] dönem alt liste
nerede dönem en az bir yeni satır veya ;. Başka bir kısa form için.
için (( [ifade1] ; [ifade2] ; [ifade3] )) alt liste
Aritmetiğin kısa bir formu için Komut.
her biri için isim Kendi ID’n ile mağazalarını oluştur ( sözcük Kendi ID’n ile mağazalarını oluştur ) liste son
Başka bir formu için.
süre liste { liste }
alternatif bir formu süre. biçimindeki sınırlamalara dikkat edin. liste adı geçen
yukarıdaki.
kadar liste { liste }
alternatif bir formu kadar. biçimindeki sınırlamalara dikkat edin. liste adı geçen
yukarıdaki.
tekrar et sözcük alt liste
Bu kısa formu tekrar et.
dava sözcük { [[(] model [ | model ] ... ) liste (;;|;&|;|)] ... }
alternatif bir formu dava.
seçmek isim [ in sözcük Kendi ID’n ile mağazalarını oluştur dönem ] alt liste
nerede dönem en az bir yeni satır veya ;. Kısa bir formu seçmek.
AYRILMIŞ KELİMELER
Aşağıdaki kelimeler, bir kelimenin ilk kelimesi olarak kullanıldığında ayrılmış kelimeler olarak tanınır.
alıntı yapılmadığı veya devre dışı bırakılmadığı sürece komut Enable / Disable -r:
do yapılmış esac sonra elif başka fi için dava if süre işlev tekrar et zaman kadar seçmek koprok
doğru değil her biri için son ! [[ { } bildirmek ihracat şamandıra tamsayı yerel Sadece oku dizgi
Ayrıca, `}' herhangi bir pozisyonda tanınmazsa IGNORE_BRACES seçenek ne de
the IGNORE_CLOSE_BRACES seçeneği ayarlandı.
HATALAR
Bazı hatalar kabuk tarafından ölümcül olarak değerlendirilir: etkileşimli bir kabukta,
komut satırına dönmek için kontrol ve etkileşimli olmayan bir kabukta kabuğa neden olurlar
iptal edilmek üzere. zsh'nin eski sürümlerinde, bir komut dosyası çalıştıran etkileşimli olmayan bir kabuk,
tamamen iptal edilmez, ancak okunacak bir sonraki komutta yürütmeye devam eder.
komut dosyası, herhangi bir işlevin geri kalanını veya döngüler veya
koşullar; bu biraz mantıksız davranış, seçeneği ayarlayarak kurtarılabilir.
CONTINUE_ON_ERROR.
Etkileşimli olmayan mermilerde bulunan önemli hatalar şunları içerir:
· Kabuk çağrılırken kabuk seçenekleri ayrıştırılamadı
· Seçenekler ile seçeneklerin değiştirilememesi set builtin
· Matematiksel ifadeleri ayrıştırmadaki başarısızlıklar da dahil olmak üzere her türlü ayrıştırma hatası
· Değişken davranışı ayarlama veya değiştirmedeki başarısızlıklar dizgi, yerel, bildirmek, ihracat,
tamsayı, şamandıra
· Yanlış yerleştirilmiş döngü kontrol yapılarının yürütülmesi (devam etmek, kırılma)
· Normal ifade modülü mevcut değilken normal ifade kullanma girişimleri
· İzin verilmeyen işlemler KISITLI seçenekler ayarlandı
· Bir boru hattı için gerekli borunun oluşturulamaması
· Multio oluşturulamadı
· Bildirilen bir kabuk özelliği için gerekli bir modülün otomatik olarak yüklenememesi
· Komut veya işlem ikameleri oluşturma hataları
· Glob niteleyicilerinde sözdizimi hataları
· Seçenek tarafından yakalanmayan dosya oluşturma hataları KÖTÜ_PATTERN
· Case ifadeleri içinde eşleştirmek için kullanılan tüm kötü kalıplar
· Neden olmadığı durumlarda dosya oluşturma hataları HAYIR_MATCH veya benzer seçenekler
· Desenin bir multio oluşturmak için kullanıldığı tüm dosya oluşturma hataları
· Kabuk tarafından algılanan bellek hataları
· Kabuk değişkenlerine geçersiz abonelikler
· Salt okunur değişkenler atama girişimleri
· Yanlış türe atama gibi değişkenlerle ilgili mantıksal hatalar
· Geçersiz değişken adlarının kullanılması
· Değişken ikame sözdizimindeki hatalar
· Karakterlerin dönüştürülememesi $'Kendi ID’n ile mağazalarını oluştur' ifade
Eğer POSIX_BUILTINS seçenek ayarlandığında, kabuk yerleşik komutlarıyla ilişkili daha fazla hata
POSIX standardı tarafından belirtildiği gibi ölümcül olarak kabul edilir.
YORUMLAR
Etkileşimli olmayan kabuklarda veya etkileşimli kabuklarda INTERACTIVE_COMMENTS seçenek
küme, üçüncü karakterle başlayan bir kelime geçmiş karakterler parametre (`#' varsayılan olarak)
o sözcüğün ve sonraki tüm karakterlerin yeni satıra kadar yoksayılmasına neden olur.
aliasing
Her uygun sözcük kabuk girişinde, tanımlanmış bir takma ad olup olmadığını görmek için kontrol edilir.
o. Eğer öyleyse, komut konumundaysa (eğer öyleyse) takma adın metni ile değiştirilir.
basit bir komutun ilk sözcüğü olabilir) veya takma ad genel ise. Eğer
değiştirme metni bir boşlukla biter, kabuk girişindeki bir sonraki kelime her zaman uygundur
takma ad genişletme amacıyla. Bir takma ad kullanılarak tanımlanır takma ad yerleşik; küresel
takma adlar kullanılarak tanımlanabilir -g bu yerleşik için seçenek.
A sözcük olarak tanımlanır:
· Herhangi bir düz dize veya glob deseni
· Herhangi bir alıntı yöntemi kullanılarak alıntılanan herhangi bir dize (tırnakların bir parçası olması gerektiğini unutmayın.
bunun uygun olması için takma ad tanımı)
· Herhangi bir parametre referansı veya komut ikamesi
· Yukarıdakilerin herhangi bir serisi, boşluk veya diğer belirteçler olmadan birleştirilmiştir
onların arasında
· Herhangi bir ayrılmış kelime (dava, do, başkaVb.)
· Genel takma ad, herhangi bir komut ayırıcı, herhangi bir yeniden yönlendirme operatörü ve `('veya
`)' bir glob modelinin parçası olmadığında
` adını takmak şu anda mümkün değil.((' aritmetiği tanıtan belirteç
ifadeler, çünkü tam bir ifade ayrıştırılıncaya kadar ayırt edilemez
iki ardışık `(' iç içe geçmiş alt kabukları tanıtan belirteçler.
Ne zaman POSIX_ALIASES ayarlanırsa, yalnızca düz tırnak içine alınmamış dizeler takma için uygundur. bu
takma ad Yerleşik, uygun olmayan takma adları reddetmez, ancak bunlar genişletilmez.
Takma ad genişletme, geçmiş dışında herhangi bir genişletmeden önce kabuk girişinde yapılır
genleşme. Bu nedenle, kelime için bir takma ad tanımlanmışsa foo, takma ad genişletme olabilir
kelimenin bir kısmını alıntılayarak kaçınılır, örn. \foo. Her ne kadar herhangi bir alıntı şekli işe yarasa da
alıntılanan form için bir takma adın tanımlanmasını önleyecek bir şey değildir, örneğin \foo gibi.
Ayrıca, gibi bir ayırıcı varsa && takma addır, \&& iki jetona dönüşür \& ve &her biri
bunlardan ayrı olarak adlandırılmış olabilir. Benzer şekilde \<, \>|, vb.
Baştaki ters eğik çizgiyi ve ardından bir karakter kaldıran tamamlama ile kullanım için
bu özel değil, tek bir kelimeyle başlayarak kelimeyi alıntılamak daha uygun olabilir.
alıntı, yani 'foo; tamamlama, sondaki tek alıntıyı otomatik olarak ekleyecektir.
Aşağıdaki kodla gösterilen takma adlarla ilgili yaygın olarak karşılaşılan bir sorun vardır:
takma ad echobar='eko Çubuk'; yankı çubuğu
Bu, komutun yankı çubuğu bulunamadı. Bu olur çünkü
kod okunduğunda takma adlar genişletilir; tüm satır tek seferde okunur, böylece
ne zaman yankı çubuğu yürütüldüğünde, yeni tanımlanan diğer adı genişletmek için çok geç. Bu genellikle
` ile yürütülen kabuk komut dosyalarında, işlevlerde ve kodda bir sorunkaynak' veya '.'.
Sonuç olarak, etkileşimli olmayan kodda takma adlar yerine işlevlerin kullanılması önerilir.
Takma adların ve işlev tanımlarının yararsız etkileşimine de dikkat edin:
takma ad func='noglob işlev
işlev() {
kaçırmak Do bir şey ile $*
}
Diğer adlar, işlev tanımlarında genişletildiğinden, bu, aşağıdaki komutun
idam edilecek:
noglob işlev() {
kaçırmak Do bir şey ile $*
}
hangi tanımlar noglob yanısıra func verilen gövde ile işlevler olarak. Bundan kaçınmak için,
ya adını alıntı func veya alternatif fonksiyon tanımı formunu kullanın `işlev
func'. Takma adın işlev çalıştıktan sonra tanımlanmasını sağlamak, ancak sorunluysa
kod parçası yeniden çalıştırılabilir.
ALINTI YAPMAK
bir karakter olabilir alıntı (yani, kendi başına ayakta duracak şekilde) önünde bir ` ile\'.
`\' ardından yeni bir satır yoksayılır.
` arasına alınmış bir dize$'' ve ''' dize argümanlarıyla aynı şekilde işlenir
arasında baskı yerleşik ve elde edilen dizenin tamamen alıntılanmış olduğu kabul edilir. A
gerçek `'' karakteri, ` kullanılarak dizeye dahil edilebilir.\'' kaçmak.
Bir çift tek tırnak arasına alınmış tüm karakterler ('') önünde bir ` olmayan$'
alıntıdır. Seçenek olmadıkça, tek tırnak içinde tek bir alıntı görünemez. RC_QUOTES
ayarlanır, bu durumda bir çift tek tırnak tek bir alıntıya dönüştürülür. İçin
örnek,
baskı '' ''
eğer bir yeni satırdan başka bir şey çıkmazsa RC_QUOTES ayarlanmadı, ancak tek bir alıntı
ayarlanır.
Çift tırnak içinde (""), parametre ve komut ikamesi gerçekleşir ve `\' alıntılar
karakterler `\', ``', `"' ve '$'.
YÖNLENDİRME
Bir komut tarafından takip edilirse & ve iş denetimi etkin değil, ardından varsayılan standart
komut için girdi boş dosyadır / Dev / null. Aksi takdirde, ortamın
bir komutun yürütülmesi, tarafından değiştirildiği şekliyle çağıran kabuğun dosya tanımlayıcılarını içerir.
giriş/çıkış özellikleri.
Aşağıdakiler basit bir komutta herhangi bir yerde görünebilir veya karmaşık bir komuttan önce gelebilir veya onu takip edebilir.
emretmek. Genişleme önce gerçekleşir sözcük or basamak aşağıda belirtilenler dışında kullanılır. Eğer
üzerinde ikame sonucu sözcük birden fazla dosya adı üretir, yeniden yönlendirme oluşur
sırayla her ayrı dosya adı.
< sözcük Açık dosya sözcük standart giriş olarak okumak için.
<> sözcük
Açık dosya sözcük standart girdi olarak okuma ve yazma için. dosya olmazsa
var, sonra yaratılıyor.
> sözcük Açık dosya sözcük standart çıktı olarak yazmak için. Dosya yoksa, o zaman
yaratıldı. Dosya varsa ve YAĞMUR seçenek ayarlanmamışsa, bu
hata; aksi takdirde, sıfır uzunluğa kesilir.
>| sözcük
>! sözcük
Aynısı >, dosyanın varsa sıfır uzunlukta kesilmesi dışında,
YAĞMUR ayarlanmamış.
>> sözcük
Açık dosya sözcük standart çıktı olarak ekleme modunda yazmak için. dosya olmazsa
var ve YAĞMUR seçenek ayarlanmamışsa, bu bir hataya neden olur; aksi halde dosya
yaratıldı.
>>| sözcük
>>! sözcük
Aynısı >>, ancak dosya mevcut değilse bile oluşturulur. YAĞMUR
ayarlanmamış.
<<[-] sözcük
Kabuk girişi, aynı satıra kadar okunur. sözcükveya bir
dosyanın sonu. Parametre genişletme, komut değiştirme veya dosya adı oluşturma yok
üzerinde gerçekleştirilir sözcük. Sonuç olarak adlandırılan belge, burada-belge, olur
standart girdi.
eğer herhangi bir karakter sözcük tek veya çift tırnak veya ` ile alıntı yapılır\', Hayır
yorum, belgenin karakterleri üzerine yerleştirilir. Aksi takdirde, parametre
ve komut ikamesi gerçekleşir, `\' ardından yeni bir satır kaldırılır ve '\' zorunlu
karakterlerden alıntı yapmak için kullanılabilir `\', `$', ``' ve ilk karakter sözcük.
Bunu not et sözcük kendisi kabuk genişlemesine uğramaz. Geri alıntılar sözcük yapma
her zamanki etkisine sahip olmak; bunun yerine çift tırnak işaretine benzer şekilde davranırlar;
geri alıntıların kendileri değişmeden geçirilir. (Bu bilgi
eksiksiz olması için verilmiştir ve ters alıntıların kullanılması tavsiye edilmez.) Alıntılar
şeklinde $'Kendi ID’n ile mağazalarını oluştur' ters eğik çizgili referansları genişletme standart etkisine sahip
özel karakterlere.
If << - kullanılırsa, tüm önde gelen sekmeler çıkarılır. sözcük ve belgeden.
<< sözcük
Kabuk genişletmeyi şurada gerçekleştir: sözcük ve sonucu standart girdiye iletin. Bu
olarak bilinen burada-dize. kullanımını karşılaştırın sözcük yukarıdaki belgelerde, nerede
sözcük kabuk genişlemesine uğramaz.
<& numara
>& numara
Standart girdi/çıktı, dosya tanıtıcıdan kopyalanır numara (görmek dup2(2)).
<& -
>& - Standart girdi/çıktıyı kapatın.
<& p
>& p Ortak işlemden/işlemden gelen/çıktı, standart giriş/çıkışa taşınır.
>& sözcük
&> sözcük
( `>& sözcük' yukarıdaki sözdizimlerinden biriyle eşleşir; `&>' her zaman kullanılabilir
bu belirsizliği önlemek için.) Hem standart çıktıyı hem de standart hatayı yeniden yönlendirir (dosya
tanımlayıcı 2) ` şeklinde> sözcük'. Bunun yaptığını unutmayın değil aynı
` gibi etki> sözcük 2> & 1' multios varlığında (aşağıdaki bölüme bakın).
>&| sözcük
>&! sözcük
&>| sözcük
&>! sözcük
Hem standart çıktıyı hem de standart hatayı (dosya tanımlayıcı 2) şu şekilde yeniden yönlendirir
`>| sözcük'.
>>& sözcük
&>> sözcük
Hem standart çıktıyı hem de standart hatayı (dosya tanımlayıcı 2) şu şekilde yeniden yönlendirir
`>> sözcük'.
>>&| sözcük
>>&! sözcük
&>>| sözcük
&>>! sözcük
Hem standart çıktıyı hem de standart hatayı (dosya tanımlayıcı 2) şu şekilde yeniden yönlendirir
`>>| sözcük'.
Yukarıdakilerden birinin önünde bir rakam varsa, o zaman atıfta bulunulan dosya tanıtıcısı şudur:
varsayılan 0 veya 1 yerine rakamla belirtilir. Yönlendirmelerin yapılma sırası.
belirtilen anlamlıdır. Kabuk, her yeniden yönlendirmeyi (dosya
açıklayıcısı, dosya) değerlendirme sırasında dernek. Örneğin:
Kendi ID’n ile mağazalarını oluştur 1>isim 2> & 1
ilk olarak dosya tanıtıcı 1'i dosya ile ilişkilendirir isim. Daha sonra dosya tanımlayıcı 2'yi ilişkilendirir.
dosya tanıtıcı 1 ile ilişkili dosyayla (yani, isim). sırası ise
yönlendirmeler tersine çevrildi, dosya tanımlayıcı 2 terminal ile ilişkilendirilecekti
(dosya tanımlayıcı 1'in olduğu varsayılarak) ve ardından dosya tanımlayıcı 1 ile ilişkilendirilecek
dosya isim.
`|&' içinde açıklanan komut ayırıcı Basit Komutları & Boru Hatları in zshmisc(1) bir
` için kısa yol2> & 1 |'.
Süreç ikamesinin çeşitli biçimleri,<(liste)' ve '=(liste)' giriş için ve
`>(liste)' çıktı için, genellikle yeniden yönlendirme ile birlikte kullanılır. örneğin, eğer sözcük in
bir çıktı yönlendirmesi ` biçimindedir>(liste)' daha sonra çıktı komuta yönlendirilir
ile temsil edilen liste. Görmek Süreç Ikame in zshexpn(1).
AÇILIŞ DOSYA TANIMLAYICILAR KULLANMA PARAMETRELERİ
Kabuk bir komuta argümanları ayrıştırırken ve kabuk seçeneği IGNORE_BRACES is
ayarlanmadıysa, farklı bir yeniden yönlendirme biçimine izin verilir:
operatörü, parantez içine alınmış geçerli bir kabuk tanımlayıcısı vardır. Kabuk yeni açılacak
en az 10 olması garanti edilen dosya tanımlayıcısı ve tarafından adlandırılan parametreyi ayarlayın.
açılan dosya tanımlayıcısının tanımlayıcısı. Kapanış arasında boşluk bırakılamaz
ayraç ve yönlendirme karakteri. Örneğin:
Kendi ID’n ile mağazalarını oluştur {myfd}>&1
Bu, dosya tanıtıcı 1'in kopyası olan yeni bir dosya tanıtıcı açar ve
parametre myfd en az 10 olacak olan dosya tanıtıcı numarasına
dosya tanımlayıcı sözdizimi kullanılarak yazılabilir >&$myfd.
Sözdizimi {değişken}>&-Örneğin, {myfd}>&-, bir dosya tanıtıcıyı kapatmak için kullanılabilir
bu şekilde açıldı. tarafından verilen parametreye dikkat edin. değişken önceden ayarlanmış olmalıdır
bu durumda bir dosya tanımlayıcı.
Parametre seçildiğinde bir dosya tanıtıcısını bu şekilde açmak veya kapatmak bir hatadır.
Sadece oku. Ancak, kullanarak bir dosya tanıtıcıyı okumak veya yazmak bir hata değildir. <&$param
or >&$param if param salt okunurdur.
Eğer seçenek YAĞMUR ayarlanmamışsa, bir parametre kullanarak bir dosya tanıtıcıyı açmak bir hatadır
zaten bu mekanizma tarafından önceden tahsis edilmiş bir açık dosya tanımlayıcısına ayarlanmış.
Bir dosya tanıtıcı tahsis etmek için kullanmadan önce parametrenin ayarını kaldırmak, hatayı önler.
Bu mekanizmanın yalnızca bir dosya tanıtıcı tahsis ettiğini veya kapattığını unutmayın; performans göstermez
veya ondan herhangi bir yönlendirme. Bir dosya tanıtıcısı tahsis etmek genellikle uygundur
argüman olarak kullanmadan önce exec. Sözdizimi kullanıldığında hiçbir durumda çalışmaz
parantezli alt kabuklar veya döngüler gibi karmaşık komutların etrafında, burada açılış ayracı
geçerli kabukta yürütülecek bir komut listesinin parçası olarak yorumlanır.
Aşağıda, bir dosyanın tipik bir tahsisi, kullanımı ve kapatılması sırası gösterilmektedir.
tanımlayıcı:
tamsayı myfd
exec {myfd}>~/logs/mylogfile.txt
baskı Bu is a log mesaj. >&$myfd
exec {myfd}>&-
İfadedeki değişkenin genişlemesinin >&$myfd noktasında meydana gelir
Yönlendirme açılır. Bu, komut argümanlarının genişletilmesinden sonra ve herhangi bir
komut satırında sola yönlendirmeler işlendi.
ÇOKLULAR
Kullanıcı bir defadan fazla yazmak için bir dosya tanıtıcı açmaya çalışırsa, kabuk açılır.
dosya tanıtıcısı, girdisini belirtilen tüm
çıktılar, benzer t şeklinde, sağlanan ÇOKLULAR seçenek, varsayılan olarak olduğu gibi ayarlanmıştır. Böylece:
tarih >foo >çubuk
tarihi ` adlı iki dosyaya yazarfoo' ve 'bar'. Bir borunun örtük olduğuna dikkat edin
yeniden yönlendirme; Böylece
tarih >foo | kedi
dosyaya tarihi yazar `foo' ve ayrıca kediye borular.
Eğer ÇOKLULAR seçeneği ayarlandığında, bir yeniden yönlendirme operatöründen sonraki kelime de tabi tutulur.
dosya adı oluşturma (globbing). Böylece
: > *
en az bir tane olduğunu varsayarak, geçerli dizindeki tüm dosyaları kesecektir. (Olmadan
the ÇOKLULAR seçeneği, `adlı boş bir dosya oluşturur*'.) Benzer şekilde, yapabilirsiniz
kaçırmak çıkış 0 >> *.NS
Kullanıcı bir dosya tanıtıcısını birden fazla kez okumak için açmaya çalışırsa, kabuk açılır.
dosya tanıtıcısı, belirtilen tüm girdileri kendi bilgisayarına kopyalayan bir sürece giden bir kanal olarak
belirtilen sırayla çıktı, benzer şekilde kedi, sağlanan ÇOKLULAR seçeneği ayarlandı. Böylece
tür <foo <fubar
ya da
tür <f{oo,ubar}
` ile eşdeğerdirkedi foo fubar | tür'.
Yeniden yönlendirme argümanının genişletilmesi, yeniden yönlendirmenin açıldığı noktada gerçekleşir.
değişkenin genişlemesi için yukarıda açıklanan nokta >&$myfd.
Bir borunun örtük bir yeniden yönlendirme olduğuna dikkat edin; Böylece
kedi bar | tür <foo
` ile eşdeğerdirkedi bar foo | tür' (girişlerin sırasına dikkat edin).
Eğer ÇOKLULAR seçenektir unayarlandığında, her yeniden yönlendirme önceki yeniden yönlendirmenin yerini alır.
bu dosya tanımlayıcısı. Ancak, yönlendirilen tüm dosyalar aslında açılır, bu nedenle
kaçırmak Merhaba > bar > baz
ne zaman ÇOKLULAR ayarlanmadığında kesilecek `bar' ve ' yazınMerhaba' içine 'baz'.
Bir çıkış multio'su harici bir programa eklendiğinde bir sorun var. Basit
örnek bunu gösteriyor:
kedi dosya >dosya1 >dosya2
kedi file1 file2
Burada ikinci `kedi' tam içeriğini göstermeyecek file1 ve
file2 (yani orijinal içeriği dosya iki kez tekrarlandı).
Bunun nedeni, multioların aşağıdakilerden sonra ortaya çıkmasıdır. kedi süreç çatallandı
ana kabuk, bu nedenle ana kabuk multiosun yazmayı bitirmesini beklemez
veri. Bu, gösterilen komutun daha önce çıkabileceği anlamına gelir. file1 ve file2 tamamen
yazılı. Bir geçici çözüm olarak, çalıştırmak mümkündür kedi bir işin parçası olarak süreç
mevcut kabuk:
{ kedi dosya } >dosya >dosya2
İşte, {Kendi ID’n ile mağazalarını oluştur} iş, her iki dosyanın da yazılmasını beklemek için duraklayacaktır.
YÖNLENDİRMELER İLE YOK HAYIR KOMUT
Basit bir komut, bir veya daha fazla yeniden yönlendirme operatöründen ve sıfır veya daha fazlasından oluştuğunda
parametre atamaları, ancak komut adı yok, zsh çeşitli şekillerde davranabilir.
Parametre ise BOŞCMD ayarlanmadı veya seçenek CSH_NULLCMD ayarlanır, bir hataya neden olur.
Bu csh davranış ve CSH_NULLCMD öykünürken varsayılan olarak ayarlanır csh.
Eğer seçenek SH_NULLCMD ayarlandı, yerleşik `:' verilen ile bir komut olarak eklenir
yönlendirmeler. Bu, öykünürken varsayılandır sh or ksh.
Aksi takdirde, eğer parametre BOŞCMD ayarlanırsa, değeri komutla birlikte kullanılacaktır.
verilen yönlendirmeler. İkisi de olursa BOŞCMD ve REDNULLCMD ayarlanır, ardından ikincisinin değeri
yeniden yönlendirme bir girdi olduğunda, öncekinin yerine kullanılacaktır. Varsayılan
için BOŞCMD `kedi' ve için REDNULLCMD `Daha'. Böylece
< dosya
içeriğini gösterir dosya standart çıktıda, bu bir terminal ise sayfalama ile. BOŞCMD
ve REDNULLCMD kabuk işlevlerine atıfta bulunabilir.
KOMUT UYGULAMA
Komut adı eğik çizgi içermiyorsa, kabuk onu bulmaya çalışır. eğer varsa
bu adla kabuk işlevi, bölümde açıklandığı gibi işlev çağrılır
"İşlevler". Bu isimde bir kabuk yerleşiği varsa, yerleşik çağrılır.
Aksi takdirde, kabuk her bir elemanı arar. $yol içeren bir dizin için
bu adla yürütülebilir dosya. Arama başarısız olursa, kabuk bir hata yazdırır.
mesajı verir ve sıfırdan farklı bir çıkış durumu döndürür.
Dosya yürütülebilir biçimde olmadığı için yürütme başarısız olursa ve dosya bir
dizin, bir kabuk betiği olduğu varsayılır. / Bin / sh yürütmek için doğar. Eğer
program ` ile başlayan bir dosyadır.#!', ilk satırın geri kalanı bir
programın tercümanı. Kabuk, belirtilen yorumlayıcıyı şurada yürütür:
çekirdekte bu yürütülebilir biçimi işlemeyen işletim sistemleri.
Bir fonksiyon dışında harici bir komut bulunamazsa command_not_found_handler kabuk var
bu işlevi tüm komut satırı bağımsız değişkenleriyle yürütür. İşlev durumu döndürmelidir
komutu başarıyla yerine getirdiyse sıfır veya başarısız olduysa sıfır olmayan durum. İçinde
ikinci durumda standart işleme uygulanır: 'komut bulunamadı' standarda yazdırılır
hata verir ve kabuk 127 durumuyla çıkar. İşleyicinin bir
alt kabuk, harici bir komut yürütmek için çatallandı, bu nedenle dizinlerde değişiklikler, kabuk
parametrelerin vb. ana kabuk üzerinde hiçbir etkisi yoktur.
FONKSİYONLAR
Kabuk işlevleri ile tanımlanır işlev ayrılmış kelime veya özel sözdizimi
`işlev adı ()'. Kabuk işlevleri dahili olarak okunur ve saklanır. takma adlar
fonksiyon okunduğunda çözülür. İşlevler, komutlar gibi yürütülür.
konumsal parametreler olarak iletilen argümanlar. ("Komut Yürütme" bölümüne bakın.)
Fonksiyonlar, arayan ile aynı süreçte yürütülür ve tüm dosyaları paylaşır ve sunar.
arayan ile çalışma dizini. üzerinde bir tuzak EXIT bir işlevin içine ayarlandıktan sonra yürütülür
işlev, arayanın ortamında tamamlanır.
The dönüş Yerleşik işlev çağrılarından geri dönmek için kullanılır.
Fonksiyon tanımlayıcıları şu şekilde listelenebilir: fonksiyonlar yerleşik. Fonksiyonlar tanımsız olabilir
ile işlevsizlik yerleşik.
OTOMATİK YÜKLEME FONKSİYONLAR
Bir işlev olarak işaretlenebilir tanımlanmamış ile özdevinimli_yükle yerleşik (veya `fonksiyonlar -u'veya
`dizgi -furan'). Böyle bir işlevin gövdesi yoktur. Fonksiyon ilk çalıştırıldığında,
kabuk, tanımını aşağıdaki öğeleri kullanarak arar: f yolu değişken. Böylece
otomatik yükleme için işlevleri tanımlayın, tipik bir sıra şöyledir:
fyol=(~/işlevlerim $fyol)
özdevinimli_yükle benimfunc1 benimfunc2 Kendi ID’n ile mağazalarını oluştur
Okuma sırasındaki olağan takma ad genişletmesi, aşağıdaki durumlarda bastırılır: özdevinimli_yükle yerleşik veya onun
eşdeğer seçenek verilir -U. Bu, sağlanan işlevlerin kullanımı için önerilir.
zsh dağılımı ile. ile önceden derlenmiş işlevler için derlemek builtin
bayrağa komuta etmek -U yapıldığında sağlanmalıdır. .zwc dosya oluşturulur, karşılık gelen
bilgiler ikincisinde derlenir.
Her biri için eleman in f yolu, kabuk, en yenisi olan üç olası dosya arar.
işlevin tanımını yüklemek için kullanılır:
eleman.zwc
ile oluşturulan bir dosya derlemek içermesi beklenen yerleşik komut
adlı dizindeki tüm işlevler için tanımlar eleman. dosya işlenir
işlevler için dosyalar içeren bir dizinle aynı şekilde ve aranır
fonksiyonun tanımı için. Tanım bulunamazsa, arama
bir tanım için aşağıda açıklanan diğer iki olasılık ile ilerler.
If eleman zaten içerir .zwc uzantısı (yani uzantı açıkça
kullanıcı tarafından verilen), eleman olmadan fonksiyonun tanımı aranır.
yaşının diğer dosyaların yaşıyla karşılaştırılması; aslında hiç olmasına gerek yok
adlı dizin eleman sonek olmadan. Böylece gibi bir unsur dahil
`/usr/yerel/funcs.zwc' içinde f yolu ile fonksiyonların aranmasını hızlandıracaktır.
dezavantajı, dahil edilen işlevlerin önceden elle açıkça yeniden derlenmesi gerektiğidir.
kabuk herhangi bir değişikliği fark eder.
eleman/işlev.zwc
ile oluşturulan bir dosya derlemektanımını içermesi beklenen
işlev. Diğer işlev tanımlarını da içerebilir, ancak bunlar ikisi de değildir.
yüklendi veya yürütülmedi; bu şekilde bulunan bir dosya aranır bir tek tanım için
of işlev.
eleman/işlev
için tanım olarak alınan bir zsh komut metni dosyası işlev.
Özetle, arama sırası, öncelikle ebeveyn of dizinler f yolu için
derlenmiş bir dizinin veya içindeki bir dizinin daha yenisi f yolu; ikincisi, birden fazla ise
Bunlardan en soldaki, aranan fonksiyon için bir tanım içerir. f yolu
seçilir; ve üçüncüsü, bir dizin içinde, derlenmiş bir işlevin veya bir
sıradan fonksiyon tanımı kullanılır.
Eğer KSH_AUTOLOAD seçeneği ayarlanmışsa veya dosya yalnızca basit bir tanım içeriyorsa
işlevi, dosyanın içeriği yürütülecektir. Bu normalde işlevi tanımlar
soru, ancak aynı zamanda bağlamında yürütülen başlatma işlemini de gerçekleştirebilir.
işlev yürütme ve bu nedenle yerel parametreleri tanımlayabilir. eğer bir hatadır
işlev, dosya yüklenerek tanımlanmadı.
Aksi takdirde, işlev gövdesi (çevresinde `işlev adı() {Kendi ID’n ile mağazalarını oluştur}') olarak alınır
dosyanın tam içeriği. Bu form, dosyanın doğrudan bir dosya olarak kullanılmasına izin verir.
yürütülebilir kabuk komut dosyası. Dosyanın işlenmesi, işlevin
yeniden tanımlandığında, işlevin kendisi yeniden yürütülmez. Kabuğu gerçekleştirmeye zorlamak için
başlatma ve ardından tanımlanan işlevi çağırın, dosya başlatma içermelidir
eksiksiz bir işlev tanımına ek olarak kod (çalışır ve sonra atılır)
(sonraki işlev çağrıları için tutulacaktır) ve kabuğa bir çağrı
sonunda herhangi bir argüman dahil olmak üzere işlev.
Örneğin, otomatik yükleme dosyasını varsayalım func içeren
işlev() { baskı Bu is işlev; }
baskı func is başlatıldı
sonra `işlev; func' ile birlikte KSH_AUTOLOAD set, ilk aramada her iki mesajı da üretecektir, ancak
sadece mesaj `Bu is func' ikinci ve sonraki aramalarda. Olmadan KSH_AUTOLOAD
ayarlandığında, ilk aramada başlatma mesajını ve diğer mesajı üretecektir.
ikinci ve sonraki aramalarda.
Otomatik yüklendi olarak işaretlenmemiş ancak yüklenen bir işlev oluşturmak da mümkündür.
arama yaparak kendi tanımını f yolu` kullanaraközdevinimli_yükle -X' bir kabuk işlevi içinde.
Örneğin, aşağıdakiler eşdeğerdir:
işlevim() {
özdevinimli_yükle -X
}
işlevim argümanlar...
ve
işlevsizlik işlevim # if işlevim oldu tanımlı
özdevinimli_yükle işlevim
işlevim argümanlar...
Aslında, fonksiyonlar komut çıktıları `builtin özdevinimli_yükle -X' otomatik yüklenmiş bir gövde olarak
işlev. Bu yapılır, böylece
değerlendirme "$(işlevler)"
makul bir sonuç üretir. Gerçek bir otomatik yüklenen işlev şu şekilde tanımlanabilir:
yorumun varlığı `# tanımlanmamış' vücutta, çünkü tüm yorumlar atılır
tanımlanmış fonksiyonlar
Otomatik yüklenen bir işlevin tanımını yüklemek için işlevim yürütmeden işlevimKullanın:
özdevinimli_yükle +X işlevim
ANONİM FONKSİYONLAR
Bir fonksiyon için isim verilmemişse, o 'anonim'dir ve özel olarak ele alınır. Herhangi biri
işlev tanımı biçimi kullanılabilir: a `()' ön ad olmadan veya 'işlev'
hemen takip eden açık ayraç ile. İşlev, anında yürütülür.
tanım noktasıdır ve gelecekte kullanılmak üzere saklanmaz. İşlev adı olarak ayarlandı
`(anon)'.
İşleve ilişkin argümanlar, kapanış ayracı tanımlamasını izleyen kelimeler olarak belirtilebilir.
işlev, dolayısıyla hiçbir argüman yoksa (bunun dışında $0) ayarlanır. Bu bir
diğer işlevlerin ayrıştırılma biçiminden farkı: normal işlev tanımları
ardından ` gibi belirli anahtar kelimeler gelir.başka' veya 'fi', hangi argümanlar olarak ele alınacak
anonim işlevler, böylece anahtar kelimeyi zorlamak için yeni satır veya noktalı virgül gerekir
yorumlama.
Ayrıca, herhangi bir çevreleyen komut dosyasının veya işlevin bağımsız değişken listesinin gizli olduğuna da dikkat edin (olduğu gibi).
bu noktada çağrılan diğer işlevler için geçerli olabilir).
Yönlendirmeler, anonim işleve, bir
parantez içine alınmış akım kabuğu yapısı. Anonim işlevlerin ana kullanımı,
yerel değişkenler için bir kapsam sağlar. Bu, özellikle başlangıç dosyalarında kullanışlıdır.
bunlar kendi yerel değişken kapsamını sağlamaz.
Örneğin,
değişken=dış
işlev {
yerel değişken=iç
baskı "I am $değişken ile argümanlar $*"
} Re-Tweet ve o
baskı "I am $değişken"
aşağıdaki çıktıları verir:
I am içeride ile argümanlar Re-Tweet ve o
I am dışında
Hiçbir şeye genişleyen argümanlara sahip işlev tanımlarının, örneğin `isim=;
işlev $ isim { Kendi ID’n ile mağazalarını oluştur }', anonim işlevler olarak kabul edilmez. Bunun yerine, onlar
tanımın sessizce atıldığı normal işlev tanımları olarak kabul edilir.
ÖZEL FONKSİYONLAR
Belirli işlevler, tanımlanmışsa, kabuk için özel anlamlara sahiptir.
kanca fonksiyonlar
Aşağıdaki işlevler için, aynı ada sahip bir dizi tanımlamak mümkündür.
` ile işlev_fonksiyonlar' ekli. Böyle bir dizideki herhangi bir öğe, adı olarak alınır.
yürütülecek bir işlev; ile aynı bağlamda ve aynı argümanlarla yürütülür.
temel işlev. örneğin, eğer $chpwd_işlevleri değerleri içeren bir dizidir
`mychpwd', `chpwd_save_dirstack', ardından kabuk işlevleri yürütmeye çalışır
`chpwd', `mychpwd' ve 'chpwd_save_dirstack', bu sırayla. olmayan herhangi bir fonksiyon
varlığı sessizce göz ardı edilir. Bu mekanizma tarafından bulunan bir fonksiyon, başka bir yerde şu şekilde anılır:
bir "kanca işlevi". Herhangi bir fonksiyondaki bir hata, sonraki fonksiyonların çalıştırılmamasına neden olur.
Ayrıca, bir hatanın önceden belirlenmiş kanca hemen takip edilmesine neden olur periyodik
çalışmama işlevi (bir sonraki fırsatta çalışabilir olsa da).
chpwd Geçerli çalışma dizini her değiştirildiğinde yürütülür.
periyodik
Parametre ise DÖNEM ayarlandığında, bu işlev her $DÖNEM saniye
bir istemden hemen önce. Dizi kullanılarak birden fazla işlev tanımlanmışsa, şunu unutmayın:
periyodik_fonksiyonlar tam işlev kümesine yalnızca bir nokta uygulanır ve
fonksiyon listesi değiştirilirse programlanan zaman sıfırlanmaz. Bu nedenle küme
fonksiyonlarının her zaman birlikte çağrılır.
önceden belirlenmiş Her istemden önce yürütülür. Önkomut işlevlerinin yeniden yürütülmediğini unutmayın
sadece komut satırı yeniden çizildiği için, örneğin, bir
çıkmakta olan bir iş hakkında bildirim görüntülenir.
ön işlem
Bir komut okunduktan ve yürütülmek üzereyken hemen yürütülür. Eğer
geçmiş mekanizması aktif (hattın sistemden atılıp atılmadığına bakılmaksızın)
geçmiş arabelleği), kullanıcının yazdığı dize ilk argüman olarak iletilir,
aksi halde boş bir dizedir. Yürütülecek gerçek komut
(genişletilmiş takma adlar dahil) iki farklı biçimde iletilir: ikinci argüman
komutun tek satırlı, boyut sınırlı bir sürümüdür (işlev gibi şeylerle birlikte)
bedenler çıkarıldı); üçüncü argüman yürütülmekte olan tam metni içerir.
zshaddhistory
Bir geçmiş satırı etkileşimli olarak okunduğunda, ancak okunmadan önce yürütülür.
uygulanmış. Tek argüman tam tarih satırıdır (böylece herhangi bir sonlandırma
yeni satır hala mevcut olacak).
Kanca işlevlerinden herhangi biri durum 1'i (veya 2 dışında sıfır olmayan herhangi bir değeri) döndürürse,
bu, kabuğun gelecekteki sürümleri için garanti edilmese de) geçmiş satırı
bir sonraki satıra kadar tarihte kalmasına rağmen kaydedilmeyecektir.
yürütülür, hemen yeniden kullanmanıza veya düzenlemenize izin verir.
Kanca işlevlerinden herhangi biri durum 2'ye dönerse, geçmiş satırı,
dahili geçmiş listesi, ancak geçmiş dosyasına yazılmaz. Bir çatışma durumunda,
ilk sıfır olmayan durum değeri alınır.
Bir kanca işlevi ` çağırabilirfc -p Kendi ID’n ile mağazalarını oluştur' geçmiş bağlamını değiştirmek için
geçmiş, global dosyadakinden farklı bir dosyaya kaydedilir. HISTDOSYASI
parametre. Bu özel olarak ele alınır: geçmiş bağlamı otomatik olarak
geçmiş satırının işlenmesi tamamlandıktan sonra geri yüklenir.
Aşağıdaki örnek işlev, seçeneklerden biriyle çalışır INC_APPEND_HISTORY or
PAYLAŞIM_TARİHİ satırın hemen ardından yazılması için ayarlayın.
Tarih girişi eklendi. İlk önce tarih satırını normal tarihe ekler.
genellikle doğru davranış olan yeni satır çıkarılır. Sonra değiştirir
geçmiş bağlamı, böylece satırın geçerli dosyadaki bir geçmiş dosyasına yazılması
dizin.
zshaddhistory() {
baskı -sr -- ${1%%$'\n'}
fc -p .zsh_local_history
}
zshexit
Ana kabuğun normal olarak çıkmak üzere olduğu noktada yürütülür. Bu değil
alt kabuklardan çıkılarak veya exec ön komut değiştirici daha önce kullanılır
harici bir komut. Ayrıca, aksine TRAPEKSİT, işlevler çıktığında çağrılmaz.
Tuzak fonksiyonlar
Aşağıdaki işlevler özel olarak ele alınır, ancak karşılık gelen kanca dizilerine sahip değildir.
TUZAKnal
Tanımlanmışsa ve boş değilse, bu işlev kabuk yakaladığında yürütülür.
bir işaret SIGnal, Burada nal için belirtildiği gibi bir sinyal adıdır. öldürmek yerleşik. bu
sinyal numarası fonksiyona ilk parametre olarak iletilecektir.
Bu formun bir işlevi tanımlanmış ve boşsa, kabuk ve tarafından oluşturulan süreçler
görmezden gelecek SIGnal.
Fonksiyondan dönüş durumu özel olarak işlenir. sıfır ise,
sinyalin işlendiği varsayılır ve yürütme normal şekilde devam eder.
Aksi takdirde, geri dönüş durumu dışında kabuk kesintiye uğramış gibi davranacaktır.
tuzak tutulur.
Yakalanmayan sinyallerle sonlandırılan programlar tipik olarak 128 durumunu artı
sinyal numarası Bu nedenle, aşağıdakiler işleyicinin SIGINT yazdırmak için
mesajı, ardından sinyalin olağan etkisini taklit edin.
TUZAK() {
baskı "Yakalanmış İŞARET, iptal."
dönüş $ (( 128 + $1 ))
}
Fonksiyonlar TRAPZER, TRAPDEBUG ve TRAPEKSİT asla diğerlerinin içinde yürütülmez
tuzaklar.
TRAPDEBUG
Eğer seçenek DEBUG_BEFORE_CMD ayarlanır (varsayılan olarak olduğu gibi), her birinden önce yürütülür
emretmek; aksi takdirde her komuttan sonra yürütülür. açıklamasına bakın tuzak
yerleşik zshbuildins(1) hata ayıklamada sağlanan ek özelliklerin ayrıntıları için
tuzaklar.
TRAPEKSİT
Kabuk çıktığında veya içeride tanımlanmışsa geçerli işlev çıktığında yürütülür
bir işlev. Değeri $? yürütmenin başlangıcında, çıkış durumu
kabuk veya çıkan işlevin dönüş durumu.
TRAPZER
Bir komutun sıfırdan farklı bir çıkış durumu olduğunda yürütülür. Bununla birlikte, işlev
komut bir alt listede ve ardından `&&' veya '||'; bir tek
bu türden bir alt listedeki son komut, tuzağın yürütülmesine neden olur. bu
işlev TRAPER aynı şekilde davranır TRAPZER olmadığı sistemlerde SIGERR
(bu olağan bir durumdur).
` ile başlayan işlevlerTUZAK' alternatif olarak ile tanımlanabilir tuzak yerleşik: bu
bazı kullanımlar için tercih edilebilir. Tek bir formla bir tuzak ayarlamak, herhangi bir tuzağı kaldırır.
aynı sinyal için başka bir biçim; herhangi bir biçimde bir tuzağı kaldırmak, tüm tuzakları kaldırır.
aynı sinyal. Formlar
TRPNAL() {
# kod
}
('işlev tuzakları') ve
tuzak '
# kod
' nal
('list traps') çoğu yönden eşdeğerdir, istisnalar şunlardır:
· Fonksiyon tuzakları, listede görünen normal fonksiyonların tüm özelliklerine sahiptir.
işlevlerin yerine kendi işlev bağlamları ile çağrılırlar.
tuzağın tetiklendiği bağlam.
· Fonksiyon tuzaklarından dönüş durumu özeldir, oysa bir liste tuzağından dönüş
çevreleyen bağlamın verilen durumla geri dönmesine neden olur.
· İşlev tuzakları, zsh davranışına göre alt kabuklar içinde sıfırlanmaz;
liste tuzakları, POSIX davranışına göre sıfırlanır.
JOBS
Eğer MONITOR seçeneği ayarlandığında, etkileşimli bir kabuk, bir iş her boru hattı ile.
tarafından yazdırılan mevcut işlerin bir tablosunu tutar. iş fırsatları komut ve onları küçük atar
tam sayılar. Bir iş ` ile eşzamansız olarak başlatıldığında&', kabuk bir satır yazdırır
şuna benzeyen standart hataya:
[1] 1234
asenkron olarak başlatılan işin 1 numaralı iş olduğunu ve bir tane olduğunu belirten
süreç kimliği 1234 olan (üst düzey) süreç.
` ile bir iş başlatılırsa&|' veya '&!', sonra o iş derhal reddedilir. Sonrasında
başlangıç, iş tablosunda yeri yoktur ve iş kontrolüne tabi değildir.
burada açıklanan özellikler.
Bir iş yürütüyorsanız ve başka bir şey yapmak istiyorsanız ^Z (kontrol-Z) tuşuna basabilirsiniz.
hangi bir gönderir TSTP mevcut işe sinyal: bu anahtar, askıya almak
harici seçenek arpacık emretmek. Kabuk daha sonra normalde işin
'askıya alındı' ve başka bir bilgi istemi yazdırın. Daha sonra bunun durumunu manipüle edebilirsiniz
iş, ile arka plana koyarak bg komut verin veya başka komutları çalıştırın ve ardından
sonunda ön plan komutuyla işi ön plana geri getirin fg. bir ^Z
hemen yürürlüğe girer ve bekleyen çıktıda ve okunmamış girdide bir kesinti gibidir
yazıldığında atılır.
Arka planda çalıştırılan bir iş, terminalden okumaya çalışırsa askıya alınır.
Ön planda çalışan iş bir kabuk işleviyse, askıya alındığını unutmayın.
kabuğun çatallanmasına neden olma etkisine sahip olacaktır. ayırmak için bu gereklidir
işlevin durumu, iş kontrolünü gerçekleştiren ana kabuğun durumundan, böylece
ikincisi komut satırı istemine dönebilir. Sonuç olarak, olsa bile fg devam etmek için kullanılır
işlevin işi artık ana kabuğun bir parçası olmayacak ve tarafından ayarlanan herhangi bir değişken
işlev üst kabukta görünmeyecektir. Böylece davranış farklı
işlevin hiçbir zaman askıya alınmadığı durumda. Zsh diğerlerinden farklıdır
bu konuda kabuklar.
Aynı davranış, kabuk bir kodun sağ tarafı olarak kod yürütürken de bulunur.
boru hattı veya herhangi bir karmaşık kabuk yapısı gibi if, için, vb., tamamının olması için
kod bloğu tek bir iş olarak yönetilebilir. Arka plan işlerine normalde izin verilir
çıktı üretir, ancak bu, ` komutu verilerek devre dışı bırakılabilir.arpacık durdurmak'. eğer ayarlarsan
bu tty seçeneği, daha sonra arka plan işleri gibi çıktı üretmeye çalıştıklarında askıya alınır
girdiyi okumaya çalıştıklarında yaparlar.
Bir komut askıya alındığında ve daha sonra fg or beklemek yerleşikler, zsh geri yükler
Askıya alındığında yürürlükte olan tty modları. Bu (kasıtlı olarak) geçerli değildir
komut ` üzerinden devam ettirilirseöldürmek -DEVAM', ne de devam edildiğinde bg.
Kabuktaki işlere başvurmanın birkaç yolu vardır. Bir iş tarafından sevk edilebilir
işin herhangi bir sürecinin süreç kimliği veya aşağıdakilerden biri:
%numara
Verilen numara ile iş.
%dizi
Komut satırı ile başlayan herhangi bir iş dizi.
%?dizi
Komut satırı şunları içeren herhangi bir iş dizi.
%% Mevcut iş.
%+ ` ile eşdeğer%%'.
%- Önceki iş.
Kabuk, bir süreç durumu değiştirdiğinde hemen öğrenir. Normalde sizi bilgilendirir
daha fazla ilerlemenin mümkün olmaması için bir iş engellendiğinde. Eğer NOTIFY
seçeneği ayarlanmadıysa, sizi bilgilendirmeden önce bir istem yazdırmadan hemen önce bekler.
Bu tür tüm bildirimler, standart çıktıya değil, doğrudan terminale gönderilir veya
standart hata.
İzleme modu açıkken, tamamlanan her arka plan işi, aşağıdakiler için ayarlanmış herhangi bir tuzak tetikler.
ÇOCUK.
İşler çalışırken veya askıya alınırken kabuktan ayrılmaya çalıştığınızda uyarılırsınız.
`(çalışan) işleri askıya aldınız. kullanabilirsiniz iş fırsatları ne olduklarını görmek için komut
vardır. Bunu yaparsanız veya hemen tekrar çıkmayı denerseniz, kabuk sizi uyarmayacaktır.
ikinci kez; askıya alınan işler sonlandırılacak ve devam eden işler bir
GÖRÜŞ sinyal, eğer HÜP seçeneği ayarlandı.
Kabuğun çalışan işleri sonlandırmasını önlemek için, hayır komut (bkz.
hayır(1)) veya reddetmek yerleşik.
SİNYALLER
The INT ve ÇIK çağrılan bir komut için sinyaller, komutun ardından aşağıdakiler gelirse yoksayılır.
`&' ve MONITOR seçeneği aktif değil. Kabuğun kendisi her zaman ÇIK
sinyal. Aksi takdirde, sinyaller kabuk tarafından ebeveyninden miras alınan değerlere sahiptir (ancak
bakın TUZAKnal 'İşlevler' bölümündeki özel işlevler).
Belirli işler, açıkça belirtilenler dışında kabuk tarafından eşzamansız olarak çalıştırılır.
arka fon; kabuğun genellikle bu tür işleri beklediği durumlarda bile, açık bir
çıkış seçenek nedeniyle komut veya çıkış HATA_ÇIKIŞ kabuğun olmadan çıkmasına neden olur
beklemek. Bu tür asenkron işlere örnek olarak süreç ikamesi verilebilir, bkz.
PROSES İKAME zshexpn(1) kılavuz sayfası ve multios için işleyici işlemleri,
bölümündeki MULTIOS bölümüne bakın. zshmisc(1) kılavuz sayfası.
ARİTMETİK DEĞERLENDİRME
Kabuk, yerleşik kullanarak tamsayı ve kayan nokta aritmetiği gerçekleştirebilir. izin,
veya formun değiştirilmesi yoluyla $ ((Kendi ID’n ile mağazalarını oluştur)). Tamsayılar için kabuk genellikle derlenir
mümkün olduğunda 8 baytlık kesinlik kullanmak için, aksi takdirde kesinlik 4 bayttır. Bu
örneğin ` komutu verilerek test edilebilir.baskı - $ (( 12345678901 ))'; eğer numara
değişmemiş görünüyor, kesinlik en az 8 bayttır. Kayan nokta aritmetiği her zaman
derleyici tarafından sağlanan ilgili hassasiyet ne olursa olsun 'double' türünü kullanır
ve kütüphane.
The izin yerleşik komut, aritmetik ifadeleri argüman olarak alır; her biri değerlendirilir
ayrı ayrı. Boşlukların yanı sıra aritmetik operatörlerin çoğu alıntı yapmayı gerektirdiğinden,
alternatif bir form sağlanmıştır: ` ile başlayan herhangi bir komut için((', hepsi
eşleşen bir ` kadar karakterler))' alıntı bir ifade ve aritmetik olarak kabul edilir
bir argüman olarak gerçekleştirilen genişleme izin. Daha doğrusu,`((Kendi ID’n ile mağazalarını oluştur))' eşdeğerdir
`izin "Kendi ID’n ile mağazalarını oluştur"'. İfadenin aritmetik değeri ise, dönüş durumu 0'dır.
sıfır değilse, sıfırsa 1 ve bir hata oluştuysa 2'dir.
Örneğin, aşağıdaki ifade
(( val = 2 + 1 ))
eşdeğerdir
izin "val = 2 + 1"
her ikisi de kabuk değişkenine 3 değerini atar val ve sıfır durumu döndürme.
Tamsayılar 10'dan farklı tabanlarda olabilir. Baştaki `0x' veya '0X' onaltılık sayıyı belirtir ve
önde gelen `0b' veya '0B' ikili. Tamsayılar ` biçiminde de olabilirbaz#n', nerede baz bir
aritmetik tabanı temsil eden iki ile otuz altı arasındaki ondalık sayı ve n bir
bu tabandaki sayı (örneğin, `16#ff' onaltılık olarak 255'tir). bu baz# Da olabilir
atlanmıştır, bu durumda 10 tabanı kullanılır. Geriye dönük uyumluluk için form `[baz]n' dır-dir
ayrıca kabul etti.
` şeklinde verilen bir tamsayı ifadesi veya bir tabanbaz#n' alt çizgi içerebilir (`_')
görsel rehberlik için baştaki rakamdan sonra; bunlar hesaplamada göz ardı edilir. Örnekler
vardır 1_000_000 or 0xffff_ffff eşdeğer olan 1000000 ve 0xffffffff respectivamente.
Çıktı için kullanılacak bir taban da ` şeklinde belirtilebilir.[#baz]', için
örnek `[# 16]'. Bu, aritmetik ikamelerin çıktısı alınırken veya
skaler parametrelere atama, ancak açıkça tanımlanmış bir tamsayı veya kayan nokta
parametre etkilenmeyecektir. Bir tamsayı değişkeni örtük olarak bir
aritmetik ifade, bu şekilde belirtilen herhangi bir taban, değişkenin çıktısı olarak ayarlanacaktır.
aritmetik taban sanki `seçenek-i baz' için dizgi yerleşik kullanılmıştı. bu
ifadenin önceliği yoktur ve bir matematiksel ifadede birden fazla kez geçiyorsa,
son karşılaşılan kullanılır. Anlaşılır olması için şurada görünmesi önerilir:
bir ifadenin başlangıcı. Örnek olarak:
dizgi -i 16 y
baskı $ (( [# 8] x = 32, y = 32 ))
baskı $x $y
önce çıktılar `8 # 40', verilen çıktı tabanındaki en sağdaki değer ve ardından `8 # 40 16 # 20',
Çünkü y açıkça çıktı tabanı 16'ya sahip olduğu beyan edilirken, x (olduğunu varsayarsak
zaten mevcut değil), aritmetik değerlendirme tarafından örtük olarak yazılır, burada
çıkış tabanı 8.
The baz bir alt çizgi ile değiştirilebilir veya arkasından bir alt çizgi gelebilir;
pozitif tamsayı (eksikse 3 değeri kullanılır). Bu, alt çizgilerin
görsel netlik için sayı gruplandırılarak çıktı dizesine eklenmelidir. bu
aşağıdaki tamsayı, birlikte gruplanacak basamak sayısını belirtir. Örneğin:
seçmek cbase'ler
baskı $ (( [#16_4] 65536 ** 2 ))
çıktılar `0x1_0000_0000'.
Özellik, kayan nokta sayılarıyla kullanılabilir, bu durumda taban
atlanmış; gruplama ondalık noktadan uzaktadır. Örneğin,
zmod yükü zsh/matematik işlevi
baskı $ (( [#_] sqrt(1e7) ))
çıktılar `3_162.277_660_168_379_5' (gösterilen ondalık basamak sayısı değişebilir).
Eğer C_BASES seçeneği ayarlandığında, onaltılık sayılar standart C biçiminde çıktı olarak alınır,
örnek `0xFF'her zamanki yerine'16#FF'. eğer seçenek OCTAL_ZEROES ayrıca ayarlanır (bu
varsayılan olarak değildir), sekizli sayılar benzer şekilde ele alınır ve bu nedenle ` olarak görünür.077'
` yerine8 # 77'. Bu seçeneğin, aşağıdakiler dışındaki bazların çıktısı üzerinde hiçbir etkisi yoktur.
onaltılık ve sekizli ve bu biçimler her zaman girişte anlaşılır.
` kullanılarak bir çıktı tabanı belirtildiğinde[#baz]' sözdizimi, uygun bir temel önek
değer çıkışı giriş için geçerli sözdizimi olacak şekilde gerekirse çıkış olacaktır. Eğer #
iki katına çıkar, örneğin `[##16]', o zaman hiçbir temel önek çıktısı alınmaz.
Kayan nokta sabitleri, bir ondalık nokta veya bir üs bulunmasıyla tanınır.
Ondalık nokta, sabitin ilk karakteri olabilir, ancak üs karakteri e
or E bir parametre adı için alınacağı için olmayabilir. Tüm sayısal parçalar (öncesi ve
ondalık noktadan sonra ve üs içinde), baştakilerden sonra alt çizgi içerebilir
görsel rehberlik için rakam; bunlar hesaplamada göz ardı edilir.
Bir aritmetik ifade, ifadelerin hemen hemen aynı sözdizimini ve ilişkilendirilebilirliğini kullanır.
C cinsinden
Yerel çalışma modunda, aşağıdaki operatörler desteklenir (bkz.
azalan öncelik sırası):
+ - ! ~ ++ --
tekli artı/eksi, mantıksal DEĞİL, tamamlayıcı, {pre,post}{in,de}arttırma
<< >> bit düzeyinde sola, sağa kaydırma
& bitsel VE
^ bitsel XOR
| bitsel VEYA
** üstalma
* / % çarpma, bölme, modül (kalan)
+ - toplama çıkarma
< > <= >=
karşılaştırma
== != eşitlik ve eşitsizlik
&& mantıksal VE
|| ^^ mantıksal VEYA, XOR
? : üçlü operatör
= += -= *= /= %= &= ^= |= << = >> = && = || = ^^= ** =
atama
, virgül operatörü
operatörler `&&', `||', `&& =' ve '|| =' kısa devre yapıyor ve bunlardan sadece biri
bir üçlü operatördeki son iki ifade değerlendirilir. önceliğine dikkat edin
bit düzeyinde AND, OR ve XOR operatörleri.
seçeneği ile C_PRECEDENENCES operatörlerin öncelikleri (ancak başka özellikler yok)
ilgili dili destekleyen diğer dillerin çoğuyla aynı olacak şekilde değiştirilmiştir.
operatörler:
+ - ! ~ ++ --
tekli artı/eksi, mantıksal DEĞİL, tamamlayıcı, {pre,post}{in,de}arttırma
** üstalma
* / % çarpma, bölme, modül (kalan)
+ - toplama çıkarma
<< >> bit düzeyinde sola, sağa kaydırma
< > <= >=
karşılaştırma
== != eşitlik ve eşitsizlik
& bitsel VE
^ bitsel XOR
| bitsel VEYA
&& mantıksal VE
^^ mantıksal XOR
|| mantıksal VEYA
? : üçlü operatör
= += -= *= /= %= &= ^= |= << = >> = && = || = ^^= ** =
atama
, virgül operatörü
Her iki durumda da üs almanın önceliğinin birli operatörlerinkinden daha düşük olduğuna dikkat edin,
dolayısıyla `-3**2' olarak değerlendirir9' değil '-9'. Gerektiğinde parantez kullanın: `-(3**2)'.
Bu, diğer mermilerle uyumluluk içindir.
Matematiksel fonksiyonlar sözdizimi ` ile çağrılabilir.func(args)', işlev nerede
olup olmadığına karar verir args bir dize veya virgülle ayrılmış bir aritmetik listesi olarak kullanılır
ifade. Kabuk şu anda varsayılan olarak hiçbir matematiksel işlev tanımlamamaktadır, ancak
modül zsh/matematik işlevi ile yüklenebilir zmod yükü standart yüzer sağlamak için yerleşik
nokta matematiksel fonksiyonlar.
` şeklinde bir ifade##x' nerede x ` gibi herhangi bir karakter dizisidira', `^A'veya
`\M-\Cx' bu karakterin değerini ve formun bir ifadesini verir '#isim' verir
parametre içeriğinin ilk karakterinin değeri isim. Karakter değerleri
geçerli yerel ayarda kullanılan karakter kümesine göredir; çok baytlı karakter için
seçeneği ele almak ÇOK BAYT kurulmalı. Bu formun şundan farklı olduğunu unutmayın:
`$#isim', parametrenin uzunluğunu veren standart bir parametre ikamesi isim.
`#\' yerine kabul edilir##', ancak kullanımı kullanımdan kaldırılmıştır.
Adlandırılmış parametreler ve indisli diziler, bir aritmetik içinde ada göre başvurulabilir.
parametre genişletme sözdizimini kullanmadan ifade. Örneğin,
((değer2 = val1 * 2))
değerinin iki katını atar $değer1 adlı parametreye val2.
Adlandırılmış bir parametrenin dahili tamsayı gösterimi ile belirtilebilir. tamsayı
yerleşik. Aritmetik değerlendirme, adlandırılmış bir atamaya her atamanın değeri üzerinde gerçekleştirilir.
parametre bu şekilde tamsayı olarak bildirilir. Bir kayan noktalı sayı atama
tamsayı, bir sonraki tam sayıya yuvarlama ile sonuçlanır.
Aynı şekilde, kayan noktalı sayılar şu şekilde bildirilebilir: şamandıra yerleşik; iki tane
için açıklandığı gibi, yalnızca çıktı biçiminde farklılık gösteren türler dizgi yerleşik. bu
çıktı formatı, parametre yerine aritmetik ikame kullanılarak atlanabilir
ikame, yani `${şamandıra}' tanımlı biçimi kullanır, ancak '$ ((şamandıra))' jenerik kullanır
kayan nokta biçimi.
Tamsayıların kayan noktalı değerlere yükseltilmesi gerektiğinde yapılır. Ek olarak,
tamsayı gerektiren herhangi bir operatör (`~', `&', `|', `^', `%', `<<', `>>' ve onların
atamalı eşdeğerler) kayan nokta argümanı verilir, sessizce
sonraki tam sayıya yuvarlanır.
Kullanıcılar, diğer birçok programlama dilinde ortak olan ancak yazılımda olmayan şuna dikkat etmelidir:
hesaplama için tasarlanmış, zsh cinsinden bir ifadenin değerlendirilmesi her seferinde bir terim olarak alınır
ve tam sayıların kayan noktaya yükseltilmesi, yalnızca içeren terimlerle gerçekleşmez.
tamsayılar. Bunun tipik bir sonucu, aşağıdaki gibi bir bölünmenin olmasıdır. 6/8 kesilmiş, bu
0'a yuvarlanıyor. FORCE_FLOAT kabuk seçeneği, komut dosyalarında veya işlevlerde kullanılabilir
boyunca kayan nokta değerlendirmesinin gerekli olduğu yerlerde.
Skaler değişkenler, farklı zamanlarda tamsayı veya kayan nokta değerleri tutabilir; yok
bu durumda sayısal türün belleği.
Bir değişken önceden bildirilmeden önce sayısal bir bağlamda atanırsa,
örtük olarak yazılacak tamsayı or şamandıra ve bu türü, tür olana kadar koruyun
açıkça değiştirilen veya kapsamın sonuna kadar. Bunun öngörülemeyen sonuçları olabilir.
Örneğin, döngüde
için (( f = 0; f < 1; f += 0.1 )); do
# kullanım $f
yapılmış
if f henüz bildirilmediyse, ilk atama onun bir
tamsayı ve dolayısıyla işlem `f += 0.1' her zaman sonucun olmasına neden olur
sıfıra kesilir, böylece döngü başarısız olur. Basit bir düzeltme,
` içine başlatmaf = 0.0'. Bu nedenle sayısal değişkenleri şu şekilde bildirmek en iyisidir:
açık tipler.
KOŞULLU İFADE
A şartlı ifade ile kullanılır [[ dosyaların özelliklerini test etmek için bileşik komut
ve dizeleri karşılaştırmak için. Her ifade, bir veya daha fazla ifadeden oluşturulabilir.
aşağıdaki tekli veya ikili ifadeler:
-a dosya
eğer doğruysa dosya bulunmaktadır.
-b dosya
eğer doğruysa dosya vardır ve blok özel bir dosyadır.
-c dosya
eğer doğruysa dosya var ve bir karakter özel dosyasıdır.
-d dosya
eğer doğruysa dosya var ve bir dizindir.
-e dosya
eğer doğruysa dosya bulunmaktadır.
-f dosya
eğer doğruysa dosya vardır ve normal bir dosyadır.
-g dosya
eğer doğruysa dosya vardır ve setgid bit setine sahiptir.
-h dosya
eğer doğruysa dosya vardır ve sembolik bir bağdır.
-k dosya
eğer doğruysa dosya var ve yapışkan bit seti var.
-n dizi
uzunluğu doğruysa dizi sıfır değildir.
-o seçenek
seçenek adlandırılmışsa doğru seçenek açık. seçenek tek bir karakter olabilir, bu durumda
tek harfli bir seçenek adıdır. ('Seçeneklerin Belirlenmesi' bölümüne bakın.)
-p dosya
eğer doğruysa dosya vardır ve bir FIFO özel dosyasıdır (boru olarak adlandırılır).
-r dosya
eğer doğruysa dosya mevcut ve mevcut süreç tarafından okunabilir.
-s dosya
eğer doğruysa dosya var ve sıfırdan büyük boyutu var.
-t fd dosya tanıtıcı numarası true ise fd açık ve bir terminal cihazı ile ilişkili.
(Not: fd isteğe bağlı değil)
-u dosya
eğer doğruysa dosya vardır ve setuid bit setine sahiptir.
-w dosya
eğer doğruysa dosya var ve geçerli işlem tarafından yazılabilir.
-x dosya
eğer doğruysa dosya mevcut ve mevcut işlem tarafından yürütülebilir. Eğer dosya var ve bir
dizin, ardından geçerli işlemin dizinde arama izni vardır.
-z dizi
uzunluğu doğruysa dizi sıfırdır.
-L dosya
eğer doğruysa dosya vardır ve sembolik bir bağdır.
-O dosya
eğer doğruysa dosya var ve bu işlemin etkin kullanıcı kimliğine ait.
-G dosya
eğer doğruysa dosya var ve grubu, bu sürecin etkin grup kimliğiyle eşleşiyor.
-S dosya
eğer doğruysa dosya vardır ve bir sokettir.
-N dosya
eğer doğruysa dosya var ve erişim zamanı, değişiklik zamanından daha yeni değil.
file1 -Nt file2
eğer doğruysa file1 var ve daha yeni file2.
file1 Ot file2
eğer doğruysa file1 var ve daha eski file2.
file1 -eğer file2
eğer doğruysa file1 ve file2 var ve aynı dosyaya bakın.
dizi = model
dizi == model
eğer doğruysa dizi maçlar model. `==' formu tercih edilendir. `=' form
geriye dönük uyumluluk içindir ve modası geçmiş olarak kabul edilmelidir.
dizi != model
eğer doğruysa dizi eşleşmiyor model.
dizi =~ regexp
eğer doğruysa dizi normal ifadeyle eşleşir regexp. eğer seçenek RE_MATCH_PCRE
ayarlanır regexp kullanılarak bir PCRE normal ifadesi olarak test edilir. zsh/pcre modül,
Aksi takdirde, POSIX genişletilmiş düzenli ifadesi olarak test edilir. zsh/normal ifade
modül. Başarılı eşleşmenin ardından bazı değişkenler güncellenecektir; değişken yok
eşleştirme başarısız olursa değiştirilir.
Eğer seçenek BASH_REMATCH skaler parametre ayarlanmadı MAÇ ayarlandı
desen ve tamsayı parametreleriyle eşleşen alt dize MBEGIN ve DEĞİŞTİR için
maçın sırasıyla başlangıç ve bitiş indeksi dizi, öyle ise
dizi değişkende bulunur var ` ifadesi${var[$MBEGIN,$MEND]}' dır-dir
` ile aynı$MATCH'. seçeneğin ayarlanması KSH_ARRAYS saygı duyulur.
Aynı şekilde dizi maç parantez içinde eşleşen alt dizelere ayarlanır
alt ifadeler ve diziler başlangıç ve tamir başlangıç ve bitiş indekslerine
içindeki alt dizelerin sırasıyla konumları dizi. diziler ayarlanmadı
parantez içine alınmış alt ifadeler olmasaydı. Örneğin, ` dizesia
kısa dizi' normal ifadeyle eşleştirilir 's(...)t', sonra (varsayılan
seçenek KSH_ARRAYS ayarlanmadı) MAÇ, MBEGIN ve DEĞİŞTİR `kısa', 3 ve 7,
sırasıyla maç, başlangıç ve tamir içeren tek girişli dizilerdir.
dizelerhor', `4' ve '6', sırasıyla.
Eğer seçenek BASH_REMATCH dizi ayarlandı BASH_REMATCH alt dizeye ayarlandı
desenle eşleşen, ardından parantez içinde eşleşen alt dizeler
desen içindeki alt ifadeler.
string1 < string2
eğer doğruysa string1 önce gelir string2 karakterlerinin ASCII değerine göre.
string1 > string2
eğer doğruysa string1 sonra gelir string2 karakterlerinin ASCII değerine göre.
deneyim1 -eşit deneyim2
eğer doğruysa deneyim1 sayısal olarak eşittir deneyim2. Tamamen sayısal olduğunu unutmayın
karşılaştırmalar kullanımı ((Kendi ID’n ile mağazalarını oluştur)) ARİTMETİK bölümünde açıklanan yerleşik
DEĞERLENDİRME' koşullu ifadelerden daha uygundur.
deneyim1 -ne deneyim2
eğer doğruysa deneyim1 sayısal olarak eşit değil deneyim2.
deneyim1 -Bu deneyim2
eğer doğruysa deneyim1 sayısal olarak daha azdır deneyim2.
deneyim1 -gt deneyim2
eğer doğruysa deneyim1 sayısal olarak daha büyüktür deneyim2.
deneyim1 Onları deneyim2
eğer doğruysa deneyim1 sayısal olarak daha küçük veya eşittir deneyim2.
deneyim1 -ge deneyim2
eğer doğruysa deneyim1 sayısal olarak daha büyük veya eşittir deneyim2.
( exp )
eğer doğruysa exp doğru.
! exp eğer doğruysa exp yanlış.
deneyim1 && deneyim2
eğer doğruysa deneyim1 ve deneyim2 ikisi de doğrudur.
deneyim1 || deneyim2
ya doğruysa deneyim1 or deneyim2 doğru.
Uyumluluk için, sözdizimsel olarak anlamlı olmayan tek bir argüman varsa,
tipik olarak bir değişken, koşul, ifadenin olup olmadığı için bir test olarak değerlendirilir.
sıfır olmayan uzunlukta bir dize olarak genişler. Başka bir deyişle, [[ $ var ]] aynıdır [[ -n
$ var ]]. Mümkünse ikinci, açık formun kullanılması önerilir.
Normal kabuk genişletmesi dosya, dizi ve model argümanlar, ancak
her bir genişlemenin sonucu tek bir kelimeyle sınırlandırılmıştır,
ikili alıntı.
Dosya adı oluşturma, koşullara ilişkin herhangi bir bağımsız değişken biçiminde gerçekleştirilmez. Ancak,
normal kabuk genişletmesinin geçerli olduğu ve seçeneğin geçerli olduğu her durumda zorlanabilir
EXTENDED_GLOB formun açık bir glob niteleyicisi kullanılarak yürürlüktedir (#Q) sonunda
dizenin. ` arasında normal bir glob niteleyici ifadesi görünebilir.q' ve
parantez kapatma; hiçbiri görünmüyorsa, ifadenin dosya adına neden olmanın ötesinde bir etkisi yoktur.
nesil. Dosya adı oluşturmanın sonuçları tek bir kelime oluşturacak şekilde birleştirilir,
diğer genişleme biçimlerinin sonuçlarında olduğu gibi.
Dosya adı oluşturmanın bu özel kullanımı yalnızca [[ sözdizimi. Eğer
içinde durum oluşur [ or test yerleşik komutlar daha sonra bunun yerine globbing gerçekleşir
koşul değerlendirilmeden önceki normal komut satırı genişletmesinin bir parçası. bu durumda
test komutunun sözdizimini karıştırabilecek birden fazla sözcük oluşturabilir.
Örneğin,
[[ -n dosya*(#qN) ]]
sadece ve sadece geçerli dizinde en az bir dosya varsa sıfır durumu üretir
` dizesiyle başlayandosya'. globbing niteleyicisi N ifadenin olmasını sağlar
eşleşen dosya yoksa boş.
Kalıp meta karakterleri şu şekilde etkindir: model argümanlar; desenler aynı
dosya adı üretimi için kullanılanlar, bkz. zshexpn(1), ancak özel bir davranışı yoktur
`/' ne de ilk noktalara ve hiçbir küresel niteleyiciye izin verilmez.
Yukarıdaki ifadelerin her birinde, eğer dosya ` şeklindedir/dev/fd/n', nerede n bir
tamsayı, ardından tanımlayıcı numarası olan açık dosyaya uygulanan test n, olsa bile
temel sistem desteklemiyor /dev/fd dizin.
Sayısal karşılaştırma yapılan formlarda ifadeler exp aritmetik genişlemeye uğramak
içine kapanmışlar gibi $ ((Kendi ID’n ile mağazalarını oluştur)).
Örneğin, aşağıdakiler:
[[ ( -f foo || -f bar ) && $rapor = y* ]] && baskı fileto bulunmaktadır.
her iki dosyanın da test edilip edilmediğini test eder foo veya dosya bar varsa ve varsa parametrenin değeri
rapor ` ile başlary'; tam koşul doğruysa, ` mesajıfileto bulunmaktadır.' dır-dir
basılı.
GENİŞLEME OF Hemen SIRALAMALAR
İstem dizileri özel bir genişleme biçiminden geçer. Bu tür bir genişleme aynı zamanda
kullanılarak mevcut -P seçeneği baskı yerleşik.
Eğer PROMPT_SUBST seçeneği ayarlandığında, bilgi istemi dizesi önce parametre
genişleme, komuta ikame ve aritmetik genişleme. Görmek zshexpn(1).
Bilgi istemi dizesinde belirli kaçış dizileri tanınabilir.
Eğer PROMPT_BANG seçeneği ayarlandığında, bir `!' komut isteminde geçerli geçmiş ile değiştirilir
olay numarası gerçek bir `!' daha sonra ' olarak temsil edilebilir!!'.
Eğer PROMPT_PERCENT seçeneği ayarlandığında, ` ile başlayan belirli kaçış dizileri%' NS
genişletilmiş. Çoğu kaçışı tek bir karakter izler, ancak bunlardan bazıları
` arasında görünmesi gereken isteğe bağlı tamsayı argümanı%' ve sonraki karakter
sıra. Koşullu sağlamak için daha karmaşık kaçış dizileri mevcuttur.
genişleme.
BASİT Hemen KAÇIRMALAR
Özel - Special karakterler
%% bir `%'.
%) bir `)'.
Oturum aç bilgi
%l Kullanıcının oturum açtığı satır (tty), ` olmadan/ Dev /' ön eki. eğer adı
` ile başlar/dev/tty', bu önek çıkarılır.
%M Tam makine ana bilgisayar adı.
%m İlk ` ana bilgisayar adı.'. Bir tamsayı `%' nasıl belirtmek için
ana bilgisayar adının birçok bileşeni istenmektedir. Negatif bir tamsayı ile, sondaki
ana bilgisayar adının bileşenleri gösterilir.
%n $USERNAME.
%y Kullanıcının oturum açtığı satır (tty), ` olmadan/ Dev /' ön eki. Bu değil
tedavi etmek/dev/tty' özel isimler.
Kabuk belirtmek, bildirmek
%# bir `#' kabuk ayrıcalıklarla çalışıyorsa, bir `%' değilse. Eşittir
`%(!.#.%%)'. Bu amaçlar için 'ayrıcalıklı' tanımı,
etkin kullanıcı kimliği sıfırdır veya POSIX.1e özellikleri destekleniyorsa,
Etkin veya Kalıtsal yetenekte en az bir yetenek yükseltilir
vektörler.
%? İstemden hemen önce yürütülen son komutun dönüş durumu.
%_ Ayrıştırıcının durumu, yani kabuk yapıları (gibi `if' ve 'için') olduğu
komut satırında başlatıldı. Bir tamsayı verilirse, bu kadar çok dizge
basılacak; sıfır veya negatif veya tamsayı yok, olduğu kadar yazdır anlamına gelir. Bu
en çok istemlerde yararlıdır PS2 devam satırları için ve PS4 ile hata ayıklamak için
XTRACE seçenek; ikinci durumda, etkileşimli olmayan bir şekilde de çalışacaktır.
%^ Ayrıştırıcının durumu tersine çevrilir. Bu aynı `%_"Siparişten başka
dizeleri. Genellikle kullanılır RPS2.
%d
%/ Geçerli çalışma dizini. Eğer bir tamsayı `%', bir dizi belirtir
gösterilecek geçerli çalışma dizininin takip eden bileşenleri; sıfır bütün demektir
yol. Negatif bir tamsayı, baştaki bileşenleri belirtir; %-1 gün belirtir
ilk bileşen.
%~ As %d ve %/, ancak geçerli çalışma dizini ile başlarsa $ HOME, o kısım
` ile değiştirilir~'. Ayrıca, öneki olarak adlandırılmış bir dizine sahipse,
parçası bir ` ile değiştirilir~' ardından dizinin adı gelir, ancak yalnızca
sonuç tam yoldan daha kısadır; görmek Hareketlilik ve Statik adlı dizinleri in
zshexpn(1).
%e Geçerli kaynaklı dosyanın değerlendirme derinliği, kabuk işlevi veya değerlendirme. Bu,
değeri her seferinde artırılır veya azaltılır %N ayarlanır veya bir değere döndürülür
sırasıyla önceki değer. Bu, bir parçası olarak hata ayıklama için en kullanışlıdır. $PS4.
%h
%! Güncel geçmiş olay numarası.
%i Şu anda komut dosyasında, kaynak dosyada veya kabukta yürütülmekte olan satır numarası
tarafından verilen işlev %N. Bu, bir parçası olarak hata ayıklama için en kullanışlıdır. $PS4.
%I Şu anda dosyada yürütülmekte olan satır numarası %x. Bu şuna benzer %i,
ancak satır numarası, kodun tanımlandığı dosyada her zaman bir satır numarasıdır,
kod bir kabuk işlevi olsa bile.
%j İş sayısı.
%L şu anki değeri $SHLVL.
%N zsh'nin şu anda olduğu betiğin, kaynaklı dosyanın veya kabuk işlevinin adı
yürütme, hangisi en son başlatıldıysa. Hiçbiri yoksa, bu
parametreye eşdeğer $0. Bir tamsayı `%' bir sayı belirtmek için
göstermek için takip eden yol bileşenlerinin; sıfır, tam yol anlamına gelir. Negatif bir tam sayı
önde gelen bileşenleri belirtir.
%x Yürütülmekte olan kaynak kodu içeren dosyanın adı. Bu
gibi davranır %N bunun yerine işlev ve değerlendirme komut adlarının gösterilmemesi dışında
tanımlandıkları dosya.
%c
%.
%C Geçerli çalışma dizininin takip eden bileşeni. Bir tamsayı `%'
birden fazla bileşen elde etmek için. sürece `%C' kullanılır, tilde daralması
ilk gerçekleştirildi. Bunlar, şu şekilde kullanımdan kaldırılmıştır: %c ve %C eşdeğerdir %1~ ve %1/,
sırasıyla, açık pozitif tamsayılar ile aynı etkiye sahipken
son iki dizi.
Tarih ve zaman
%D içindeki tarih yy-mm-dd biçimi.
%T Günün geçerli saati, 24 saat formatında.
%t
%@ 12 saatlik, am/pm formatında günün geçerli saati.
%* Saniye ile 24 saat formatında günün geçerli saati.
%w içindeki tarih gün-dd biçimi.
%W içindeki tarih mm/dd/yy biçimi.
%NS{dizi}
dizi kullanılarak biçimlendirilir strftime işlev. Görmek strftime(3) daha fazla ayrıntı için.
Çeşitli zsh uzantıları, sayının başında sıfır veya boşluk olmayan sayılar sağlar.
tek bir rakamdır:
%f ayın bir günü
%K 24 saatlik zaman diliminde günün saati
%L 12 saatlik zaman diliminde günün saati
Ayrıca sistem POSIX'i destekliyorsa gettimeofday sistem çağrısı, %. sağlar
Başında sıfırların olduğu çağdan bu yana saniyenin ondalık kesirleri. Varsayılan olarak
üç ondalık basamak sağlanır, ancak 6'ya kadar basamak sayısı verilebilir
Aşağıdaki %; bundan dolayı % 6. mikrosaniye verir. Bunun tipik bir örneği,
biçim `%D{%H:%M:%S.%.}'.
GNU uzantısı `-' arasında % ve biçim karakteri bir
baştaki sıfır veya sıyrılacak boşluk, doğrudan kabuk tarafından işlenir.
karakterleri biçimlendir d, f, H, k, l, m, M, S ve y; diğer biçim karakterleri
sistem tarafından sağlanan strftime(3) herhangi bir önde `-' mevcut, bu yüzden kullanım
sisteme bağlıdır. Diğer GNU (veya diğer) uzantıları da
strftime(3) ve sistem destekliyorsa çalışabilir.
Görsel etkileri
%B (%b)
Kalın yazı modunu başlatın (durdurun).
%E Satırın sonuna kadar temizleyin.
%U (%u)
Alt çizgi modunu başlat (durdur).
%S (%s)
Öne çıkma modunu başlat (durdur).
%F (%f)
Terminal tarafından destekleniyorsa, farklı bir ön plan rengi kullanarak başlayın (durdurun).
Renk iki şekilde belirtilebilir: sayısal bir argüman olarak, normal olarak veya
aşağıdaki parantez içinde bir dizi ile %FÖrneğin, %F{kırmızı}. son durumda
izin verilen değerler, aşağıdakiler için açıklandığı gibidir. fg zle_highlight bağlanmak; görmek
Karakter vurgulayarak in zshzle(1). Bu, sayısal renklere izin verildiği anlamına gelir
ayrıca ikinci formatta.
%K (%k)
Farklı bir arka plan rengi kullanarak başlayın (durdurun). Sözdizimi bununla aynı
için %F ve %f.
%{Kendi ID’n ile mağazalarını oluştur%}
Bir dizeyi değişmez bir kaçış dizisi olarak dahil edin. Parantez içindeki dize,
imleç konumunu değiştirmeyin. Braket çiftleri yuva yapabilir.
arasında pozitif bir sayısal argüman % ve { için açıklandığı gibi tedavi edilir %G
altında.
%G İçinde %{Kendi ID’n ile mağazalarını oluştur%} dizi, bir "aksaklık" içerir: yani, tek bir
karakter genişliği çıktısı alınacaktır. Bu, şu karakterlerin çıktısını alırken kullanışlıdır:
aksi takdirde, alternatif karakter gibi kabuk tarafından doğru şekilde işlenemez
bazı terminallerde ayarlayın. Söz konusu karakterler bir %{Kendi ID’n ile mağazalarını oluştur%}
uygun sayıda diziyle birlikte %G belirtmek için diziler
doğru genişlik. ` arasında bir tam sayı%' ve 'G' bir karakter genişliğini gösterir
birinden başka. Buradan %{seq%2G%} çıkışlar seq ve genişliğini kapladığını varsayar
iki standart karakter.
Çoklu kullanımlar %G bariz bir şekilde birikir; konumu %G is
önemsiz. Negatif tamsayılar işlenmez.
Hızlı kesme kullanımdayken çıktıyı bölümlere ayırmanın tavsiye edildiğini unutmayın.
her birinin içinde tek karakterler %{Kendi ID’n ile mağazalarını oluştur%} grup, böylece doğru kesme noktası
bulunabilir.
KOŞULLU ABONELİKLER IN İSTEMLER
%v İlk elemanın değeri psvar dizi parametresi. ardından `%'
bir tamsayı ile dizinin o öğesini verir. Negatif tamsayılar
dizinin sonu.
%(x.gerçek metin.yanlış metin)
Üçlü bir ifade belirtir. Aşağıdaki karakter x keyfidir; en
'true' sonucunun metnini, 'true' sonucunun metninden ayırmak için aynı karakter kullanılır.
'yanlış' sonuç. Bu ayırıcı şurada görünmeyebilir: gerçek metinparçası olarak hariç
%-kaçış dizisi. bir `)' içinde görünebilir yanlış metin ` gibi%)'. gerçek metin ve
yanlış metin her ikisi de isteğe bağlı olarak yuvalanmış kaçış dizileri içerebilir;
üçlü ifadeler.
Sol parantezden önce veya sonra pozitif bir tam sayı gelebilir n, Hangi
varsayılan olarak sıfırdır. Negatif bir tam sayı, aksi belirtilmedikçe -1 ile çarpılacaktır.
` için aşağıdal'. test karakteri x aşağıdakilerden herhangi biri olabilir:
! Kabuk ayrıcalıklarla çalışıyorsa doğrudur.
# Geçerli işlemin etkin kullanıcı kimliği ise doğrudur n.
? Son komutun çıkış durumu ise doğru n.
_ En azından doğruysa n kabuk yapıları başlatıldı.
C
/ Geçerli mutlak yolun en az değeri varsa doğru n ile ilgili unsurlar
kök dizin, bu nedenle / 0 eleman olarak sayılır.
c
.
~ Geçerli yol, önek değiştirme ile en az n elemanları
kök dizine göre, dolayısıyla / 0 eleman olarak sayılır.
D Ay şuna eşitse doğrudur n (Ocak = 0).
d Ayın günü şuna eşitse doğrudur n.
e Değerlendirme derinliği en az ise doğrudur n.
g Geçerli işlemin etkin gid'i ise doğru n.
j İş sayısı en az ise doğrudur n.
L Doğru ise ŞLVL parametre en az n.
l En azından doğruysa n karakterler zaten geçerli satırda yazdırıldı.
Ne zaman n negatif, en azından doğruysa karın kasları(n) karakterler önce kalır
karşı kenar boşluğu (dolayısıyla sol kenar boşluğu HIZLI).
S Doğru ise SANİYE parametre en az n.
T Saat cinsinden süre şuna eşitse doğrudur n.
t Dakika cinsinden süre şuna eşitse doğrudur n.
v Dizi eğer doğru psvar en azından n elemanları.
V True if öğesi n dizinin psvar ayarlanmış ve boş değil.
w Haftanın günü şuna eşitse doğrudur n (Pazar = 0).
%<dizi<
%>dizi>
%[xstring]
Bilgi istemi dizesinin geri kalanı için kesme davranışını belirtir. Üçüncü,
kullanımdan kaldırıldı, form ` ile eşdeğerdir%xstringx', yani x ` olabilir<' veya '>'.
dizi herhangi bir dizenin kesilmiş kısmı yerine görüntülenecektir; bunu not et
hızlı genişlemeye uğramaz.
Üçüncü biçimde ` işaretinden hemen sonra görünebilen sayısal argüman[',
görüntülenebilen çeşitli dizilerin izin verilen maksimum uzunluğunu belirtir
komut isteminde. İlk iki formda, bu sayısal argüman negatif olabilir.
bu durumda kesme uzunluğu, mutlak değeri çıkarılarak belirlenir.
üzerinde kalan karakter konumlarının sayısından sayısal argüman
geçerli komut satırı. Bu, sıfır veya negatif uzunlukla sonuçlanırsa, uzunluk 1
kullanıldı. Başka bir deyişle, olumsuz bir argüman, kesme işleminden sonra
en az n karakterler sağ kenar boşluğundan önce kalır (sol kenar boşluğu için HIZLI).
` ile formlar<' dizenin solunda kısalt ve ' ile formlar>'
dizenin sağındaki kes. Örneğin, geçerli dizin
`/ev/turna', istemi '%8<..<%/' genişleyecek '..e/pike'. Bu dizide,
sonlandırma karakteri (`<', `>' veya ']') veya aslında herhangi bir karakter, tarafından alıntı yapılabilir
bir önceki `\'; kullanırken not baskı -Pancak bunun iki katına çıkarılması gerektiği
dize de standarda tabidir baskı işlenmesine ek olarak,
çift tırnaklı bir dize tarafından kaldırılan ters eğik çizgiler: bu nedenle en kötü durum `baskı
-P "%<\\\\<<..."'.
Eğer dizi belirtilen kesme uzunluğundan daha uzunsa,
dolu, kesilmiş dizeyi tamamen değiştirir.
Bilgi istemi dizesinin kesilecek kısmı, dizenin sonuna kadar veya
` sonraki çevreleyen grubun sonu%(' inşa, ya da bir sonraki
aynı gruplama düzeyinde karşılaşılan kesme (yani, bir ` içindeki kesmeler)%('
ayrıdır), hangisi önce gelirse. Özellikle, argümanlı bir kesme
sıfır (örneğin, `%<') kesilecek dize aralığının sonunu işaretlerken
oradan kesmeyi kapatın. Örneğin, komut istemi `%10<...<%~%<<%# '
geçerli dizinin kesik bir temsilini ve ardından bir ` yazdıracaktır.%'
veya `#', ardından bir boşluk. ` olmadan%<', bu iki karakter olurdu
kesilecek dizeye dahil edilir. Şuna dikkat edin `%-0<' eşdeğer değildir
`%<' ancak istemin sağ kenar boşluğunda kesildiğini belirtir.
Kısaltma, yalnızca bilgi isteminin her bir satırında,
gömülü yeni satırlar (varsa). İstemin herhangi bir satırının toplam uzunluğu sonra
kesme, terminal genişliğinden daha büyükse veya kesilecek parça
katıştırılmış yeni satırlar içerir, kesme davranışı tanımsızdır ve
kabuğun gelecekteki sürümü. ` kullanın%-n(l.gerçek metin.yanlış metin)' parçalarını kaldırmak için
kullanılabilir alan şundan az olduğunda istem n.
onworks.net hizmetlerini kullanarak zshmisc'i çevrimiçi kullanın