Kaçış dizisi - Escape sequence

Olarak bilgisayar biliminin , bir kaçış dizisi bir kombinasyonudur karakter hazır karakter içinde bulunan başka bir anlama sahiptir; bir veya daha fazla önceki (ve muhtemelen sonlanan) karakterle işaretlenmiştir.

Örnekler

  • In C ve birçok türevi programlama dilleri, bir dize çıkış sırası, iki veya daha fazla karakterden oluşan bir dizi ters eğik çizgi ile başlayan\ .
    • C bir eğik çizgi hemen olmayan bir yeni satır ardından bu Not olmayan dize çıkış sekansları beşinci için fazında dönüştürülür ise, bir çıkış sırasını oluşturan, ancak ikinci dönüşüm aşamasından mantıksal olanları içine fiziksel kaynak hatları kesikler.
    • Ters eğik çizgi karakterinin kendisini temsil etmek \\için kullanılabilir, burada ilk ters eğik çizgi bir kaçışı gösterir ve ikincisi bir ters eğik çizginin kaçıldığını belirtir.
    • Bir karakter birden çok farklı şekilde kaçabilir. ASCII kodlama, çıkış sıralarını varsayarsak \x5c, \\, \134ve \x5Cters eğik çizgi: tüm kodlamak aynı karakter \.
  • ANSI kaçış dizilerine yanıt veren aygıtlar için , ASCII "escape" karakteriyle başlayan (ondalık karakter kodu 27) ve ardından sol parantez karakteri [(ondalık karakter kodu 91) ile başlayan üç veya daha fazla karakterin birleşimi bir kaçış dizisini tanımlar.

Kontrol dizileri

Bu dizi, yönergede yer aldığı zaman karakter değiştirmek için kullanılır durumuna ait bilgisayar ve bunlara bağlı periferal gösterilen ya da düzenli olarak basılacak yerine, cihazlar veri baytı, bu da şekilde bilinmektedir kontrol dizileri kullanımlarını yansıtan cihaz kontrolü başlayan ile Kontrol Sırası Başlatıcı aslen "kaçış karakteri" ASCII kod - - karakter 27 (ondalık) - genellikle "Esc" yazılı Tuşların .

ANSI terminallerinin kullanıma sunulmasıyla birlikte çoğu kaçış dizisi önce "ESC" sonra "[" iki karakterle veya 155 (ondalık) kodlu özel olarak ayrılmış bir CSI karakteriyle başladı.

Tüm kontrol dizileri bir kaçış karakteri kullanmamıştır; Örneğin:

  • AT/ Hayes uyumlu modemler tarafından kullanılan modem kontrol dizileri
  • Data General terminal kontrol dizileri, ancak genellikle hala kaçış dizileri olarak adlandırılıyordu ve programlama dillerinde ve komut satırı parametrelerinde "kaçan" özel karakterlerin çok yaygın kullanımı, diziyi başlatmak için genellikle "ters eğik çizgi" karakterini kullanır.

İletişimde kaçış dizileri, bir bilgisayar ve bir çevre biriminin, içinden ileri geri bilgi göndermek için yalnızca tek bir kanala sahip olduğu durumlarda yaygın olarak kullanılır (bu nedenle kaçış dizileri, bant içi sinyallemeye bir örnektir ). Çoğu aptal terminal iletişim için 7 veri bitli ASCII kullandığında yaygındı ve bazen "yabancı" veya grafik karakterler için farklı bir karakter kümesine geçmek için kullanılırdı, aksi takdirde 7 veri bitinde bulunan 128 kodla kısıtlanırdı. Nispeten "aptal" terminaller bile, orijinal mekanik Teletype yazıcılar ("cam Teletypes" veya VDU'ların dayandığı) dahil olmak üzere bazı kaçış dizilerine yanıt verdi, harfler ve rakamlar modları arasında geçiş yapmak için 27 ve 31 karakterlerine yanıt verdi.

Tuş takımı

Bir kaçış karakteri genellikle bir bilgisayar klavyesindeki Esc tuşuna atanır ve bir kaçış dizisinin parçası olmaktan başka yollarla gönderilebilir. Örneğin, Esc tuşu vi gibi editörlerde giriş karakteri olarak veya bazı uygulamalarda menüde bir seviyeyi yedeklemek için kullanılabilir. Hewlett Packard HP 2640 terminallerinde, hata ayıklama uygulamalarına yardımcı olmak için Esc dahil tüm kontrol karakterleri için grafik görüntüleyen bir "görüntüleme işlevleri" modu için bir anahtar vardı .

Esc tuşu ve kaçış dizileri gönderen diğer tuşların her ikisinin de bir uygulama için anlamlı olması gerekiyorsa, bir karakter terminali kullanımdaysa bir belirsizlik ortaya çıkar . Uygulama ASCII çıkış karakterini aldığında, bu karakterin kullanıcının Esc tuşuna basmasının sonucu mu yoksa bir çıkış dizisinin ilk karakteri mi (örneğin, bir ok tuşuna basılmasından kaynaklanan) olduğu açık değildir. Belirsizliği çözmenin geleneksel yöntemi, kaçış karakterini hızlı bir şekilde başka bir karakterin takip edip etmediğini gözlemlemektir. Değilse, bir kaçış dizisinin parçası olmadığı varsayılır. Bu buluşsal yöntem , özellikle yüksek modern iletişim hızları olmadan, bazı durumlarda başarısız olabilir.

Kaçış dizileri en azından 1874 Baudot koduna kadar uzanır .

modem kontrolü

Hayes komut seti , örneğin, tek bir çıkış sırasını tanımlayan +++ . ( Verinin bir parçası olabilecek +++ 'ı çıkış sırası olarak yorumlamak için gönderici +++ 'dan bir saniye önce ve sonra iletişimi keser.) .Modem bir veri akışında bununla karşılaştığında, geçiş yapar. telefona herhangi bir karakter gönderen normal çalışma modundan, aşağıdaki verilerin komut dilinin bir parçası olduğu varsayılan bir komut moduna. O komutunu göndererek çevrimiçi moda geri dönebilirsiniz .

Hayes komut seti modal olup komut modundan çevrimiçi moda geçer. Komutların ve verilerin hızla ileri geri değişeceği durumlarda bu uygun değildir. Olmayan bir kalıcı çıkış sırası kontrol dili bir örneği VT100 bir öneki bir dizi komut kullanılan kontrol Sekans sokucu .

Kontrol karakterleriyle karşılaştırma

Denetim karakteri, tek başına, satır başı (CR) gibi bazı denetim işlevlerine sahip olan bir karakterdir . Bunun aksine kaçış dizileri, sonraki karakterlerin yorumunu değiştiren bir veya daha fazla kaçış karakterinden oluşur .

ASCII video veri terminalleri

VT52 terminali kullanılan basit digraph kaçış-A gibi komutlar: izolasyon, "A" basitçe "A" harfi geliyordu ama çıkış sırası "kaçış-A" bir parçası olarak, farklı bir anlamı vardı. VT52 ayrıca parametreleri de destekledi: ikame olarak kodlanmış basit bir kontrol dili değildi.

Daha sonraki VT100 terminali , imleç hareketini, karakter setini ve ekran geliştirmelerini kontrol etme gibi işlevler için daha karmaşık ANSI kaçış dizileri standardını (şimdi ECMA-48) uyguladı . Hewlett Packard HP 2640 serisi, blok ve karakter modları, programlama tuşları ve bunların yumuşak etiketleri, grafik vektörleri ve hatta verileri teyp veya disk dosyalarına kaydetme için belki de en ayrıntılı kaçış dizilerine sahipti.

DOS ve Windows'ta kullanın

Bir yardımcı, ANSI.SYS altında ANSI (ECMA-48), terminal çıkış dizilerinin yorumlanması sağlamak için kullanılabilir DOS (kullanarak $eiçinde PROMPT komutu) veya 16-bit komutu pencerelerde , Windows . Doğrudan ekran kartlarına yazan GUI uygulamalarının yükselişi, Microsoft platformlarında kaçış dizilerinin kullanımını büyük ölçüde azalttı, ancak yine de, karakter tabanlı kitaplık rutinleriyle etkileşimli rastgele erişimli karakter tabanlı ekran arayüzleri oluşturmak için kullanılabilirler. GUI programına başvurmadan printf olarak .

Linux ve Unix ekranlarında kullanım

Varsayılan metin terminali ve metin pencereleri ( xterm kullanmak gibi ) ANSI kaçış dizilerine yanıt verir.

alıntı kaçış

genel bakış

Alıntılanan/kaçan dizede bir kaçış karakteri gerektiğinde, programlama ve komut dosyası dillerinde kullanılan iki strateji vardır:

  • çift ​​sınırlayıcı (örn. 'He didn''t do it.')
  • ikincil kaçış dizisi

İkincisinin bir örneği, şapka işaretinin ( ^) kullanımındadır. Örneğin bu çıkışlar içinde "Sen Kes üzerinden bunu & Yapıştır yapabilirsiniz" CMD . (aksi halde, ve işareti sınırlı bir kullanıma sahiptir)

echo You can do so via Cut^&Paste

Detayda

Kaçış dizilerinin yaygın bir kullanımı aslında bir ikili veri akışında bulunan kontrol karakterlerini yanlışlıkla kontrol işlevlerine neden olmayacak şekilde kaldırmaktır. Bu durumda, kontrol karakteri, tanımlanmış bir "kaçış karakteri" (US-ASCII çıkış karakteri olması gerekmez) ve bir veya daha fazla başka karakter ile değiştirilir; kontrol karakterinin bir eyleme neden olacağı bağlamdan çıktıktan sonra, dizi tanınır ve kaldırılan karakterle değiştirilir. "Kaçış karakterinin" kendisini iletmek için iki kopya gönderilir.

Birçok programlama dilinde ve komut satırı arabirimlerinde , yazdırılamayan veya karakter veya dizelerin sözdizimi ile çakışan karakterleri ifade etmek için karakter değişmezlerinde ve dize değişmezlerinde kaçış dizileri kullanılır . Örneğin, kontrol karakterlerinin kendilerinin editör programı tarafından kodlanan programa yerleştirilmesine izin verilmeyebilir veya bir komuta yazıldığında istenmeyen yan etkileri olabilir. Alıntı sonu karakteri, programcılar için de kaçarak çözülebilecek bir sorundur. Çoğu bağlamda kaçış karakteri ters eğik çizgidir (" \ ").

örnekler

Örneğin, tek tırnak işareti , '\''yazı '''kabul edilmediği için şeklinde ifade edilebilir.

Birçok modern programlama dili , bir dize değişmezi için sınırlayıcı" olarak çift ​​tırnak karakterini ( ) belirtir . Ters eğik çizgi kaçış karakteri, tipik olarak, dizeye ( ) gömülü çift tırnaklı karakterin anlamını değiştirerek veya bir çift tırnaklı karakterin onaltılık değeri dahil bir karakter dizisinin anlamını değiştirerek olduğu gibi, bir dize değişmezi içine çift tırnak eklemenin yollarını sağlar. ( ). Her iki dizi de gerçek bir çift tırnak ( ) kodlar . \"\x22"

In Perl veya Python 2

print "Nancy said "Hello World!" to the crowd.";

bir sözdizimi hatası üretirken:

print "Nancy said \"Hello World!\" to the crowd.";  ### example of \"

amaçlanan çıktıyı üretir. Başka bir alternatif:

print "Nancy said \x22Hello World!\x22 to the crowd.";  ### example of \x22

Aşağıdaki iki karakterin onaltılık basamaklar olduğunu belirtmek için "\x" kullanır, "22" onaltılık bir çift tırnak için ASCII değeridir.

C , C++ , Java ve Ruby, tamamıyla aynı iki ters eğik çizgi kaçış stiline izin verir. PostScript dil ve Microsoft zengin metin biçimi de ters eğik çizgi kaçar kullanırlar. Alıntılanan-yazdırılabilir kodlama kullanır eşittir işareti çıkış karakteri olarak.

URL ve URI , ASCII olmayan karakterlerde olduğu gibi özel bir anlamı olan karakterleri alıntılamak için yüzde kodlamasını kullanır.

Bir başka benzer (ve kısmen örtüşen) sözdizimsel hile, stropping .

Bazı programlama dilleri ayrıca özel karakterleri bir kaçış karakteri gerektirmeden hazır değerlerde temsil etmenin başka yollarını da sağlar (bkz. örn. sınırlayıcı çarpışma ).

Ayrıca bakınız

Referanslar