Вопрос касается Windows, но вы пометили Linux, поэтому мой ответ относится к Linux.
Каждый раз, когда вы вызываете команду, есть какой-то рабочий каталог, в котором вы сейчас находитесь; .
обозначает этот каталог. pwd
- это общая команда, чтобы узнать, что это за каталог. Работая в такой оболочке, как bash
вы можете "перейти" в другой каталог с помощью cd /another/directory/path
.
Некоторые команды (например, cd
выше) принимают каталоги (то есть их пути) в качестве аргумента (ов). Теперь мне хочется говорить об очевидных основах; но ваш вопрос, кажется, основной, так что здесь мы идем. Общий синтаксис для передачи аргумента в some_command
выглядит следующим образом:
some_command argument
или даже произвольное количество аргументов (четыре в этом примере):
some_command argument1 argument2 "argument3 with spaces" argument4
Вы можете использовать .
в качестве аргумента вместо пути, возвращаемого pwd
. Если команда интерпретирует его как путь к каталогу, то его следует понимать как текущий рабочий каталог. Хотя cd .
не имеет смысла, потому что она заставляет вашу оболочку "идти" в ту же директорию, в которой она уже находится, синтаксис совершенно корректен. Полезный пример
df .
Он сообщает об использовании дискового пространства файловой системы, в которой находится ваш текущий рабочий каталог.
Есть команды, которые работают с текущим рабочим каталогом по умолчанию: ls
эквивалентно ls .
, du
равносильно du .
, Обратите внимание, что это не всегда так: df
печатает все доступные файловые системы, а df .
печатает только один из них.
Я написал « если команда интерпретирует это как путь к каталогу», потому что некоторые команды этого не делают. Например, в bash
команда
tr . , <<< foo.bar
выведет foo,bar
(tr
заменяет .
,
в заданной строке foo.bar
). Это потому, что tr
интерпретирует .
в виде односимвольной строки.
Это показывает .
не переводится оболочкой в текущий путь к каталогу. Сравните это с ~
что переводится в значение $HOME
(попробуйте echo ~
в bash
). Интерпретация .
поскольку определенный путь лежит глубоко внутри структуры дерева каталогов в Linux (более широкий: в UNIX).
Таким образом, каждая команда может интерпретировать .
сам по себе. Но когда это должен быть путь к каталогу, то по соглашению это должен быть текущий рабочий каталог. Linux понимает это и предоставляет инструменты для поддержки этого "преобразования".
Также обратите внимание, что ls -a
почти всегда печатает .
среди "реального" содержимого каталога. Это становится интересным, когда ваш текущий рабочий каталог удаляется. В этом случае ls -a
ничего не печатает, кроме ls .
или df .
все еще работает, как будто .
был здесь.