Что такое «.» И «..» в каталоге?


15

Основываясь на вопрос: Как сделать с помощью командной строки менее болезненным , чем являются .и ..записи в наиболее голосовавшие ответ? Я вижу это, когда выполняю dirкоманду, но она не видна пользователю в виде файла.

Если вы не знаете, что я имею в виду, вот пример:

.
..
Su.exe
Sup.txt
SuperUser.COM

Ответы:


40

. является текущим каталогом, а .. обозначает родительский каталог. Это ускоряет работу и в командной строке, поэтому вам не нужно вводить полные пути.

пример:

подняться на 2 каталога:

cd ..\..\

или в системе на основе UNIX для запуска исполняемых двоичных файлов в текущем каталоге:

./program

Многие сценарии UNIX также будут использовать. для представления текущего каталога, например, для сканирования файлов (Perl):

#!/usr/bin/perl

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

Он гораздо более переносим, ​​если вы хотите переместить скрипт в другие каталоги или системы, поскольку имя каталога не жестко закодировано.


3
Это мало известно, но командная строка Windows расширяет это дальше. , = этот каталог .. = родительский каталог ... = родительский каталог родителя Иногда полезно использовать 3 точки, гораздо больше, чем просто, и с этим просто сложно иметь дело.
лосось

4
3 точки не работают для меня, используя Vista
Кевин Панко

1
ни меня на Windows 7 64 бит RTM. Звучит как миф для меня. что не так с .. \ .. так или иначе?
AdamV

2
@salmonmoose: у меня на XP тоже не работает.
Саймон П Стивенс


10

..Используются для перемещения вверх по иерархии файловой системы. Это полезно, когда вы не хотите вводить длинный путь или когда пишете скрипт / программу, которая не знает, где именно она будет установлена, но знает, что ../media/должна содержать все изображения / видео / значки и т. Д.

Одиночная точка .полезна в Linux, где вы хотите запустить исполняемый файл в текущем каталоге, поэтому вы вводите, ./a.outпотому что командная оболочка по умолчанию не ищет в текущем каталоге исполняемые файлы (из соображений безопасности).

Одиночная точка .также используется, если вы хотите передать текущий каталог в качестве аргумента команды.


1
PowerShell также не включает. в списке путей для поиска исполняемых файлов.
Джои

Как пройти "." в качестве аргумента команды?
Исчисление

@DeFu вы передаете точку как точку, например:ls .
hasen

ls функции так же, какls .
исчисление

@DeFu хорошо да , но когда вы делаете ls .вы которые проходит ". в качестве аргумента «лс»; разве это не то, что вы спросили? Он функционирует так же, потому что по умолчанию lsперечисляет текущий каталог и .является текущим каталогом. Но будут передавать его команду, конечно.
hasen

5

. это текущий каталог. Вам редко нужно использовать это; большинство команд принимает текущий каталог. .. следующий уровень выше; это довольно полезный ярлык. Если вы находитесь в C: \ foo \ bar и хотите перейти в C: \ foo \ bar2, вы можете сказать

cd ..\bar2

и вы будете в C: \ foo \ bar2. Если вы не хотите переходить на bar2, а хотите запустить только C: \ foo \ bar.exe, вы можете сказать

..\bar.exe

или .. \ bar для запуска без возврата в родительский каталог. Конечно, это более полезно, когда вы представляете более длинный путь, чем C: \ foo (например, "C: \ Users \ Daniel \ My Dropbox \").


1
Я нахожу . время от времени может быть весьма полезным, особенно при копировании или перемещении файлов в текущее местоположение ( copy F:\*.foo .) или при обращении к нему иным образом (например, start .открывает проводник в текущем каталоге).
Джои

3

Они обозначают:

.

Текущий каталог

.. 

Представляет родительский каталог

Так что если у вас есть исполняемый файл "su.exe" в:

  • Ваша переменная окружения Path (скажем, C: \ MyExecutables \ su.exe)
  • Ваш текущий режиссёр
  • Ваш родитель реж.

Вы можете выполнить каждый из них так:

 su.exe  

Выполняет тот в Пути

.\su.exe 

Выполняет тот в текущем каталоге

..\su.exe

Выполняет тот в родительском dir.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.