CD kullanırken / kullanırken


12

Mac bilgisayarımın ana dizinindeyim:

$ pwd
/Users/lukas

Ne zaman cdetrafta, bilmiyorum (ve olamaz) ile yolunu başlatmak /:

$ cd Documents/
/Users/lukas/Documents

$ cd /Documents
-bash: cd: /Documents: No such file or directory

İçindekiler hariç /:

$ pwd
/
$ cd Users
/Users

$ cd /Users
/Users

Neden kullanabilirsiniz /geçerken yolun önünde /hiç /Usersama sonradan seviyelerinde? Bu macOS'a özgü mü veya bu standart Unix davranışı mı?


11
Bence göreceli ve mutlak yollar hakkında sorular soruldu befofre
adamczi

6
@adamczi OP'nin göreli bir yolun ne olduğunu veya sözdiziminin nasıl olduğunu bilmediği oldukça açıktır, bu yüzden bakamaz.
Monica

12
@ K.Gkinis Bu, kopya olarak kapanmamanın bir nedeni değildir. Sorucuların iyi yanıtlar almasına (yanıtların iyi olduğunu varsayalım) ve yanıtlayanların aynı içeriğin daha az sürümünü kullanmasına yardımcı olur.
user202729

9
@ K.Gkinis Ve bir bakıma, bu bir kopya olarak kapanma noktasının büyük bir kısmı: insanlar birçok farklı şekilde soru soracaklar, bu yüzden tek bir cevabı işaret eden birçok soru (bu yollarla eşleşen) İyi bir şey. Bu gibi durumlarda (bir OP'nin arama terimini bilmediği yerlerde), dupe olarak kapanmak onların eleştirisi değildir, sadece insanların soru sorma şeklini ele almanın en iyi yolu.
TripeHound

1
@adamczi Onlar (bağlantılar için teşekkür ederim!) önce sorulan ama benim soru burada verilen özellikle büyük cevaplar edilmiştir yolu daha ayrıntılı ve bağlı yanıtlardan daha iyi kavramını açıklar. Bunun yinelenen olarak kapatılmasının önemli olup olmadığını bilmiyorum, ancak dikkate alınabilir.
LukasKawerau

Yanıtlar:


45

Bu standart Unix davranışıdır.

/Yolun başında diskin (ya da dosya sistemi ağacının başlangıç / üst düzey) kök temsil eder. Gibi Documentskökünden kapalı değil, /Documentsbulunamıyor.

/Users kök dizinin dışında olduğundan, bu sorun oluşmaz.

Bu cd /Users/lukas/Documentsyola geçmek için kullanabilirsiniz .

Alternatif olarak, göreli adreslemeyi kullanabilirsiniz. Unix tabanlı dosya sistemlerinin 2 özel dizini vardır:

  • . yani "bu dizin",
  • .. üst dizin anlamına gelir.

Eğer varsa /Users/lukas, cd ./Documentsdoğru yere alacaktı.

İçinde bulunduğunuzu /Users/Lukas/Documentsve gitmek istediğinizi varsayalım /Users/Janes/Documents, bir komut verebilirsiniz cd ../../Janes/Documents- kullanmak ..sizi bir seviyeye geri götürür - böylece yeni göreceli yola girmeden önce iki kez yaparsınız.


1
Not: @davidgo bahsedilen olarak, ne zaman Users/lukas, cd Documentsçağrıları göreli yolu ; mutlak yolucd /Users/Lukas/Documents çağırır (bu komutu çağırırken hangi repertuarda çalışırsanız çalışın).
Shan-x

1
Soru, bir Unix sistemi olan bir Mac ile ilgili olsa da, /DOS'un Unix'ten ödünç aldığı (uzun, kıvrık bir geçmiş yoluyla) bu standart MS-DOS / Windows davranışıdır ( `\` ile değiştiriliyor ).
FreeMan

2
Ayrıca kullandığınız kabuğa bağlı olarak cd $ HOME / Documents veya cd ~ / Documents da çalışır. HOME ($ HOME ile erişilir) kabuk değişkeni, ana dizininiz için normal depolama konumudur (~ $ HOME için özel bir takma addır).
pboss3010

13

/Users/lukas"mutlak" bir yoldur. Lider /senin dosya sisteminin kök dizinini temsil eder.

lukas"göreceli" bir yoldur. Köke sabitlenmediği için " geçerli dizinde ara" anlamına gelir . Geçerli dizin /Users(veya içinde başka bir dizin) olmadığı sürece lukasbu başarısız olur.

Öyleyse, içinde olduğunuzu varsayarak örneklerinizi inceleyelim /Users/lukas:

$ cd Documents/
/Users/lukas/Documents

Göreli yol verilen => içindeki "Belgeler" dizinine değiştirin /Users/lukas.

$ cd /Documents
-bash: cd: /Documents: No such file or directory

Mutlak yol verilen => dizine değiştirin /Documents.

$ pwd
/

Bu, çalışma dizinini artık kök dizine değiştirdiğinizi gösterir /(ancak cdbunu yapma komutu gösterilmemiştir).

$ cd Users
/Users

Göreli yol verilen => içindeki "Kullanıcılar" dizinine değiştirin /.

$ cd /Users
/Users

Mutlak yol verilen => dizine değiştirin /Users.

Her seferinde anahtar bu liderliktir /. Bununla birlikte, yol mutlaktır. Onsuz, yol görecelidir. Tüm mutlak yollar ile başladığı için /(kök dizin her zaman çağrıldığı için /) bu kural açık değildir .

İşte bu algoritmayı gevşek bir şekilde tanımlayan bazı sözde kod:

MakePathAbsolute(path):
   if <path> starts with '/'
      return <path>
   else
      return <current directory>/<path>

Geçtiğiniz argüman cdbu algoritmadan geçer; sonunda değiştirdiğiniz dizin algoritmanın döndürdüğü yoldur.


Daha fazla okuma:


Bu aynı zamanda harika bir adımdır ve bu davranışın anlaşılmasında gerçekten yardımcı olur. Teşekkür ederim! :)
LukasKawerau
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.