Co to jest „.” I „..” w katalogu?


Odpowiedzi:


39

The. jest bieżącym katalogiem, podczas gdy .. oznacza katalog nadrzędny. Sprawia, że ​​wszystko jest szybsze w linii poleceń, więc nie musisz wpisywać pełnych ścieżek.

przykład:

przejdź do 2 katalogów:

cd ..\..\

lub w systemie UNIX, aby uruchomić wykonywalne pliki binarne w bieżącym katalogu:

./program

Wykorzystuje również wiele skryptów UNIX. do reprezentowania bieżącego katalogu, na przykład w celu skanowania plików (Perl):

#!/usr/bin/perl

opendir ( DIR, "." ) || die "Error opening current directory\n";
while( ($f = readdir(DIR))){
     print("$f\n");
}
closedir(DIR);

Jest znacznie bardziej przenośny, jeśli chcesz przenieść skrypt do różnych katalogów lub systemów, ponieważ nazwa katalogu nie jest na stałe zakodowana.


3
Jest mało znany, ale wiersz poleceń systemu Windows rozszerza to dalej. . = ten katalog .. = katalog nadrzędny ... = nadrzędny katalog nadrzędny 3 kropki są czasami użyteczne, znacznie więcej niż to i jest to zbyt trudne do rozwiązania.
— salmonmoose

4
3 kropki nie działają dla mnie, używając Vista
— Kevin Panko

1
ani ja w Windows 7 64 bit RTM. Dla mnie brzmi jak mit. co jest nie tak ... w każdym razie?
— AdamV

2
@salmonmoose: Nie działa również na XP.
— Simon P Stevens


9

..Służy do poruszania się w górę hierarchii systemu plików. Jest to przydatne, gdy nie chcesz wpisywać długiej ścieżki lub podczas pisania skryptu / programu, który nie wie, gdzie dokładnie zostanie zainstalowany, ale wie, że ../media/powinien przechowywać wszystkie obrazy / filmy / ikony itp.

Pojedyncza kropka .jest przydatna w Linuksie, gdzie chcesz uruchomić plik wykonywalny w bieżącym katalogu, więc wpisz, ./a.outponieważ powłoka polecenia domyślnie nie przeszukuje bieżącego katalogu w poszukiwaniu plików wykonywalnych (ze względów bezpieczeństwa).

Pojedyncza kropka .jest również używana, jeśli chcesz przekazać bieżący katalog jako argument polecenia.


PowerShell również nie zawiera. na liście ścieżek do wyszukiwania plików wykonywalnych.
— Joey

Jak przejść „.” jako argument polecenia?
— Algebra

@DeFu podajesz kropkę jako kropkę, na przykład:ls .
— hasen

ls działa tak samo jakls .
— Algebra

@DeFu tak dobrze, ale kiedy robisz ls .ty są przechodzącej „” jako argument do „ls”; czy nie o to pytałeś? Działa tak samo, ponieważ domyślnie lswyświetla bieżący katalog i .jest bieżącym katalogiem. Ale są przekazaniem go do komendy, na pewno.
— hasen

5

The. jest bieżącym katalogiem. Rzadko musisz tego używać; większość poleceń przyjmuje bieżący katalog. The .. jest kolejnym poziomem; jest to raczej przydatny skrót. Jeśli jesteś w pasku C: foo i chcesz przejść do C: bar 2, możesz powiedzieć

cd ..\bar2

a będziesz w C: bar 2. Jeśli nie chcesz iść do bar2, ale chcesz uruchomić C: booo bar.exe, możesz powiedzieć

..\bar.exe

lub .. bar, aby go uruchomić bez powrotu do katalogu nadrzędnego. Oczywiście jest to bardziej użyteczne, gdy reprezentuje dłuższą ścieżkę, którą C: foo (np. „C: Użytkownicy Daniel Moje Dropbox”).


1
Znajduję . czasami bardzo przydatne, zwłaszcza przy kopiowaniu lub przenoszeniu plików do bieżącej lokalizacji ( copy F:\*.foo .) lub odwołując się do niej w inny sposób (na przykład start .otwiera Eksplorator w bieżącym katalogu).
— Joey

3

Oznacza to:

.

Aktualny reż

.. 

Reprezentuje katalog macierzysty

Więc jeśli masz plik wykonywalny „su.exe” w:

  • Zmienna środowiskowa Twojej ścieżki (powiedzmy C: MyExecutables su.exe)
  • Twój aktualny reż
  • Twój rodzic reż.

Możesz wykonać każdy taki sposób:

 su.exe  

Wykonuje ten na Ścieżce

.\su.exe 

Wykonuje ten z aktualnego reż

..\su.exe

Wykonuje ten w katalogu macierzystym.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.