Dlaczego cd ..
wpisany w folderze głównym nie ostrzega lub kończy się niepowodzeniem z błędem?
Oczekiwałbym:
/$ cd ..
-bash: cd: ..: No such file or directory
Zamiast tego jestem w /
. Oczywiście ..
dzieje się tak, ponieważ istnieje /
i jest po /
prostu takie jak .
. Zastanawiam się tylko, dlaczego tak jest.
directory
cd-command
Kawaler
źródło
źródło
Odpowiedzi:
Według Open Group (odpowiedzialnego za standard POSIX):
(Źródło)
źródło
Nie pojawia się błąd, ponieważ nawet
/
katalog faktycznie zawiera prawidłowy wpis katalogu..
, ale w przeciwieństwie do innych katalogów wskazuje na sam katalog, a zatem zachowuje się identycznie jak.
:Jako pierwsza kolumna informuje,
.
,..
, i/
wszystkie mają ten sam numer i-węzła-więc są te same wpisy plików.Więc nawet jeśli jesteś w
cd ..
środku/
, po prostu pozostań w środku/
.źródło
..
pozycja katalogu ma./
jak każdy inny folder, w tym prawidłowy wpis..
. W przeciwnym razie będziesz traktować/
inaczej niż wszystkie inne foldery w systemie.Jest tam, ponieważ jego usunięcie wymagałoby utworzenia kodu obsługi specjalnych przypadków w jądrze i bibliotekach C. W tej chwili możesz założyć, że zawsze będzie „.” i „..” w dowolnym katalogu, do którego się wybierasz.
Jedynym wymaganym obecnie kodem specjalnym jest kod instalacyjny systemu plików, w którym kod przesłania wartość i-węzła „..”, aby wskazać katalog zawierający punkt podłączenia, ponieważ katalogi główne nie zawsze są katalogami głównymi.
źródło
mount
polecenia i powiązanego z nim specjalnego pliku/etc/fstab
.Innym sposobem, aby sprawdzić, co
.
i..
w/
naprawdę jest:Jak widać
.
i..
jest wskazany/
.źródło
Innym powodem, dla którego „..” jest w /, jest to, że gdyby go nie było, utworzyłby inny specjalny przypadek: katalog główny miałby o jedno twarde łącze mniej niż wszystkie inne katalogi (wszystkie węzły katalogu mają n + 2 łącza, gdzie n to liczba bezpośrednich podkatalogów w środku). Spowodowałoby to uszkodzenie różnych programów, które polegają na optymalizacji skanowania katalogów.
źródło
Fajnie, że tam jest, bo inaczej nie byłbym w stanie spamować,
../../../../
aby dostać się do katalogu głównego z folderu. Gdyby to nie pozwoliło..
na rootowanie, utknęłbym licząc liczbę folderów w dół od katalogu roboczego.źródło
cd /
?../
jest lepsze. Wykonuję również wiele operacji na plikach w PHP, których nie mogę wykonać/
z kilku powodów.../
sekund i operujesz (lub usuwasz) plik, którego nie zamierzałeś bezbłędnie.../
więcej razy, niż jest to potrzebne, i życzenie, aby działało zgodnie z przeznaczeniem, wydaje mi się (uśpionym) błędem logicznym, nawet jeśli system plików na to pozwala.