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

15

Bazując na pytanie: Jak zrobić za pomocą wiersza polecenia mniej bolesne , jakie są .i ..wpisy w większości głosowali odpowiedź? Widzę to, gdy wykonuję dirpolecenie, ale nie jest ono widoczne dla użytkownika w postaci pliku.

Jeśli nie wiesz, co mam na myśli, oto przykład:

.
..
Su.exe
Sup.txt
SuperUser.COM
Społeczność
źródło

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.

John T.
źródło
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.

hasen
źródło
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”).

Daniel H
źródło
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.

OscarRyz
źródło