// bir yolda ne anlama geliyor?


9

Terminalimde çalışıyordum, cdroot ( /) 'a yazarken yanlış yazdım . Yanlışlıkla yazdım //ve terminale girdim:

root@weblocalhost://#

Ne zaman yazıyorum pwd, ben yanıt almak //ama yazdığımda ls -sben /dizinde aynı liste var .

2'den fazla yazdığınızda, yani ///:

root@weblocalhost:/#

2 /hariç her zaman 1. Fark var mıdır ve ne işe //yarar?

Yanıtlar:


8

/ eşittir //

Kaynaktan POSIX tarifnamede (eklenen):

3.267 Yol adı

Bir dosyayı tanımlamak için kullanılan bir dize. POSIX.1-2008 bağlamında, bir yol adı, biten boş bayt dahil olmak üzere {PATH_MAX} bayt ile sınırlandırılabilir. İsteğe bağlı başlangıç <slash> karakterleri, ardından <slash> karakterlerle ayrılmış sıfır veya daha fazla dosya adı vardır . Bir yol adı isteğe bağlı olarak bir veya daha fazla arka <slash>karakter içerebilir . Birbirini izleyen iki karakterin durumu dışında, birbirini izleyen birden çok <slash>karakterin bir karakterle aynı olduğu kabul edilir .<slash><slash>

Ve :

4.12 Yol Adı Çözünürlüğü

...
Tekli bir yol adı <slash>, işlemin kök dizinine çözümlenecektir. Boş bir yol adı başarıyla çözümlenmeyecektir. Bir yol adı birbirini izleyen iki <slash>karakterle başlıyorsa , önde gelen <slash>karakterleri izleyen ilk bileşen, uygulama tanımlı bir şekilde yorumlanabilir, ancak ikiden fazla önde gelen <slash>karakter tek bir <slash> karakter olarak değerlendirilmelidir.

İstisnalar (cygwin ve dizinler) hakkında güzel bir tartışma için bakınız: Linux birden fazla ardışık yol ayırıcısını (/ home //// kullanıcıadı /// dosyası) nasıl işler?


4

Bir dizine birden fazla eğik çizgi ekleyebilirsiniz ve hiçbir şey değişmez.

Örneğin, bu üç komutun hepsi aynı şeyi yapar:
cd /home
cd /home/
cd /home//

Bunlardan herhangi biri sonra benim geçerli çalışma dizini / home olarak ayarlanır (ile kontrol edin pwd).

Ben sanırım sen üzere yapılandırılmış senin istemi olması akıllıca bir şey ve beklenmeyen davranışları ile karşılaştım söyledi. Ne zaman alırsın echo $PS1?

Bunu açıklayabilecek https://unix.stackexchange.com/ adresindeki bir yoruma bağlantı verin .


OSX'te bash'deki PS1'im "\ h: \ W \ u \ $" ve bu garip davranışı da alıyorum. / ve /// ve //// ve ///// hepsi / olarak görünür, ancak iki ileri eğik çizgi özel durumu iki ileri eğik çizgi olarak görünür.
Sparr

Ubuntu 12.10'da \ u @ \ h: \ w (<b> h </b> ost, <b> w </b> orking dir) 'i buldum ama yapamıyorum sorunu yeniden oluşturun.
Hennes

hayır ben her zaman // her durumda pwd kontrol ederken olsun. echo $ PS1 için şunu alıyorum: \ [\ e] 0; \ u @ \ h: \ w \ a \] $ {debian_chroot: + ($ debian_chroot)} \ u @ \ h: \ w \ $
Dimitris Theodoridis

PS1'imi manuel olarak ayarladım ve iki eğik çizgiyle çoğaltamıyorum . Tuhaf. 1, 3 veya 4 ile değil. Sadece 2 ile. Bunu açıklamak için bir kayıptayım.
Hennes

Belki de unix.stackexchange'ten gelen bu yorum cevaptır: Windows POSIX uyumlu API'lerin // remote / ... UNC yolu \\ remote \ ... biçimiyle aynı şekilde işlem yapacağına inanıyorum. - Stephen P 20 Ocak 19, 0:39
Hennes
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.