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 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 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.