Unix'teki yol adı bileşenlerinde, yalnızca iki karakter kullanılamaz: C'deki (çekirdeğin dili) dizeleri sonlandıran boş karakter ve yol ayırıcı olarak ayrılmış eğik çizgi. Ayrıca, yol bileşenleri boş dizeler olamaz.
Dolayısıyla, bir yol adında, sadece iki tür jetonumuz var: eğik çizgi ve bir bileşen.
Yeni bir simge eklemeden , göreli ve mutlak olmak üzere iki tür yolu desteklemeyi istediğimizi varsayalım . Dahası, adı olmayan bir kök dizine de başvurabilmeyi isteriz (isim veren bir ebeveyni yoktur).
Göreceli yolları, mutlak yolları nasıl gösterebilir ve sadece eğik çizgiyi kullanarak kök dizinine nasıl başvurabiliriz?
Bir dili genişletmenin en açık yolu (yeni belirteci tanıtmak dışında) yeni sözdizimi oluşturmaktır: geçersiz sözdizimi olan belirteçlerin birleşimlerine yeni anlamlar kazandırmak.
Bir eğik çizgiyle başlayan yollar anlamsızdır, öyleyse neden "eğri değil, mutlak" olduğunu belirten bir işaretleyici olarak neden bir eğik çizgi kullanmıyorsunuz?
Eğik çizgiden başka bir şey içermeyen bir yol da geçersizdir, bu nedenle neden "root dizini" anlamına gelmiyor.
Bu iki anlam birbirine bağlanır çünkü mutlak bir yol kök dizininde arama yapmaya başlar. Başka bir deyişle, önde gelen bir eğik çizginin şu anlama sahip olduğu kabul edilebilir:
- kök dizine gidin ve eğik çizgi karakterini kullanın.
- Yolda daha fazla malzeme varsa, onu göreceli bir yol olarak işleyin, aksi takdirde işiniz biter.
Daha sonra, son yol bileşeninin normal bir dosya yerine bir dizinin adı olduğunu iddia eden "bu yol, son yol bileşeninin normal bir dosya yerine bir dizinin adı olduğunu söyler" anlamına gelebilir. eğik çizginin kök dizini gösterme şekli. "
Tüm bu sözdiziminde, hala atanmamış bir anlama sahip sözdizimimiz var: çift eğik çizgi, üçlü eğik çizgi vb.
Neden sadece başka bir simge tanıtmıyor ve farklı bir şekilde yapmıyorsunuz. Bunun nedeni, tasarımcıların genel olarak minimalist yaklaşımlar benimsemeleridir. ( ed
Editör neden yalnızca ?
yanlış bir şey yaptığınızda bir a görüntüler ?) Eğik çizginin yazılması kolaydır, kaydırma gerektirmez. Sadece iki simge tipine sahip bir yol dili (bileşen ve eğik çizgi) hatırlaması ve kullanması kolaydır.
Bir başka önemli husus, sadece string gösterimleri kullanarak yolların kolay manipülasyonlarının mümkün olmasıdır. Örneğin, yeni bir ana dizine olan mutlak yolları oldukça kolay bir şekilde "yeniden köklendirebiliriz":
OLD_PATH=/old/path
NEW_HOME=/new/home
NEW_PATH="$NEW_HOME$OLD_PATH" /new/home/old/path
Önde gelen dolar işareti veya başka bir şekilde mutlak yolları başka bir şekilde belirtirsek bu işe yaramaz:
OLD_PATH=^old/path # ^ means absolute path
NEW_HOME=^new/home
# now we need more string kung-fu than just catenation
NEW_PATH="$NEW_HOME/${OLD_PATH#^}"
Bu tür kodlama, Unix tarzı yollarla uğraşırken bazı durumlarda hala gereklidir, ancak daha az vardır.
cd /home
eşit olması , bu dizine erişim sağlar.cd /home/
/