Próbuję zrozumieć naturę ..
(podwójna kropka). Wydaje się wskazywać na różne cele w zależności od tego, w jaki sposób masz do niego dostęp.
Przykład:-
/outer/
middle/
inner/
inner --> ./middle/inner/
Teraz /outer/middle/inner/..
prowadzi do /outer/middle/
, ale jeśli uzyskam do niego dostęp poprzez łącze symboliczne, /outer/inner/..
prowadzi do /outer/
. Wygląda na to, że są tu dwa różne ..
.
Co to jest ..
dokładnie link symboliczny? twardy link? A może jest generowany dynamicznie w zależności od ścieżki dostępu do katalogu? A może moje rozumienie dowiązań symbolicznych jest błędne.
Edytować:
Inne powiązane obserwacje
/outer/
middle/
file
inner/
f --> ./../file
inner --> ./middle/inner/
Teraz, jeśli spróbuję uzyskać dostęp do pliku przez /outer/inner/f
to działa. Ale nie powinno, ponieważ /outer/inner/../file
nie wskazuje pliku. plik jest w /outer/middle/inner/..
. Wydaje się to przeczyć powyższemu zachowaniu !?
źródło
Odpowiedzi:
..
to stałe łącze do katalogu nadrzędnego, który jest tworzony jako część wpisu katalogu.Jeśli wydajesz
ls -ail
w każdym z tych katalogów, powinieneś zobaczyć, że wszystkie poniższe wpisy mają to samoinode
(pierwsze pole) i twarde łącze (trzecie pole):..
podczas wykonywanials -ail
winner
.
podczas wykonywanials -ail
wmiddle
middle
podczas wykonywanials -ail
wouter
Jest jeden
..
wpis winner
. Jeśli bieżącym katalogiem roboczym jestouter
, powinieneś zobaczyć te same wyniki (lista katalogówmiddle
) zls -al inner/..
ls -al middle/inner/..
Jedyna sytuacja, w której „dostępu”
..
przez dowiązania symbolicznego powinna zapewniać różne zachowanie jest, jeślicd
sięinner
za pomocą łącza symbolicznego, tak że logiczne katalogu roboczego (pwd -L
) różni się od swojej fizycznej katalogu roboczym (pwd -P
). W takim przypadkucd ..
cofniesz sięouter
nie dlatego, że jest inny..
wpis, ale dlatego, że twoja powłoka śledzi logiczny katalog roboczy i wyskakuje o jeden poziom, zamiast odwoływać się do rzeczywistego..
wpisuinner
.Jest to wygoda zapewniana przez, na przykład,
bash
jako część wbudowanegocd
polecenia. Możesz to zmienić, prosząc o zmianę na rzeczywistą..
pozycję za pomocągdzie
-P
instruujecd
(jakpwd
wyżej), aby użyć ścieżki fizycznej.źródło
cd
do sprawdzania. Więc popraw mnie, jeśli się mylę,..
zawsze wskazuje na fizycznego rodzica, jeśli dowiązanie symboliczne..
zostanie przekierowane do faktycznego (fizycznego) rodzica. Zamieszanie zdarza się tylko po wejściucd
do katalogów.ls -lai
pokazuje, że/..
to jest sam katalog główny (aka/.
lub/
). O ile system plików nie jest uszkodzony, nie powinno być innego przypadku. == ..
; nawet gdy gdzieś zamontowany jest fs, otrzymuje poprawność..
(tymczasowego) rodzica (więc dzieje się tam trochę magii,..
nie jest to zwykły, statyczny wpis w tabeli systemu plików).