На этот вопрос уже есть ответ:
Это что-то вроде того, что они по умолчанию добавляются в каждый каталог, созданный для облегчения перемещения за пределы?
Простой ответ - то, потому что эти имена файлов запускаются с точки. Любое имя файла, которое запускается с точки, считают скрытым файлом на Linux (даже если в этом случае само имя файла является всего одним символом долго), и в основном "традиция", которая возвращается к первому Unix ОС. Можно просмотреть их с ls -a
.
Если Вы хотите знать, почему на уровне кода, это установлено по умолчанию в ls.c
файл src/ls.c
в coreutils пакете:
638 static enum
639 {
640 /* Ignore files whose names start with '.', and files specified by
641 --hide and --ignore. */
642 IGNORE_DEFAULT,
643
644 /* Ignore '.', '..', and files specified by --ignore. */
645 IGNORE_DOT_AND_DOTDOT,
646
647 /* Ignore only files specified by --ignore. */
648 IGNORE_MINIMAL
649 } ignore_mode;
Вы спросили:
Это - что-то как, они по умолчанию добавляются к каждому каталогу, созданному для упрощения перемещения снаружи?
Да, с тех пор .
обращается к самому каталогу и ..
обращается к родительскому каталогу. Исключение /
каталог, который является корнем дерева файловой системы. В этом случае, ..
относится к /
самостоятельно с тех пор нет никакого каталога выше выше его. Вместо того, чтобы запомнить каждый путь, удобство состоит в том, что можно подняться одно использование уровня cd ..
. Простой, правильно? Теперь предположите, что у Вас есть очень длинный путь. Это неудобно для ввода полного пути к родительскому каталогу, тогда как ..
намного более просто. Это также допускает простые сценарии, такие как эта функция, которой я удерживаю .bashrc
:
goup() {
num=$1
while [ $num -ne 0 ]
do
cd ..
num=$(expr $num - 1 )
done
}
Путем определения goup 5
я могу подняться 5 каталогов, где каждый ..
относится к родителю родителя родителя.
В случае .
это может использоваться сценариями для определения их текущего местоположения, если это когда-либо необходимо.
Оболочки имеют очевидное внимание. Их поведение совпадает с ls
, значением по умолчанию, игнорирующим имена файлов, когда каждый использует шарик
$ echo *
LICENSE README.md ayatana-indicator ayatana-indicator.desktop debian
star:
Мы можем подражать ls -a
с шариком оболочки, если мы добавляем .*
включать скрытые файлы.
$ echo * .*
LICENSE README.md debian indicator-bulletin indicator-bulletin.desktop .git .gitignore
В отличие от этого, некоторые другие программы/утилиты и языки программирования не скрывают эти объекты (или по крайней мере они не скрываются .
). Их цель, однако, намного более обширна, что просто список каталогов, и они намного более подходят для парсинга файлов (Читает, Почему Вы не должны анализировать вывод ls (1)).
$ find -maxdepth 1
.
./.git
./README.md
./LICENSE
./debian
./indicator-bulletin.desktop
./.gitignore
./indicator-bulletin
$ perl -le 'opendir(dh,$ARGV[0]);while( $file = readdir(dh) ){ print $file; }; closedir(dh);' "."
.git
..
README.md
LICENSE
debian
.
indicator-bulletin.desktop
.gitignore
indicator-bulletin
Python os.listdir()
существенное исключение - оно не показывает .
ни ..
. glob
модуль может использоваться для проявления того же поведения как в оболочках.
$ python -c 'import os;print(os.listdir("."))'
['.git', 'README.md', 'LICENSE', 'debian', 'indicator-bulletin.desktop', '.gitignore', 'indicator-bulletin']
$ python -c 'import glob;print(glob.glob(".*"),glob.glob("*"))'
(['.git', '.gitignore'], ['README.md', 'LICENSE', 'debian', 'indicator-bulletin.desktop', 'indicator-bulletin'])
Файл, начинающийся .
, является скрытым файлом. Скрытая часть является удобством предоставления пользователю с более чистым выводом того, что он может надеяться видеть.
При нормальных обстоятельствах, пользователь ищет вывод файлов, он будет работать с, такие как файлы текстового процессора, изображения и другие данные по системе.
-a
опция является аргументом для показа ВЕСЬ файлы. Это включает скрытые файлы.
скрытые файлы являются обычно специальными файлами, такими как конфигурация и вспомогательные файлы. Вы видите их включением Весь файлы, или скрытый файлы в Вашем выводе. Файловый браузер GUI имеет Шоу, Скрытое опция файлов.
В этом случае файлов, которые являются .
и ..
. Они - спецификация Вашего каталога. Единственная точка является Вашим текущим каталогом. Двойная точка является родительским каталогом. Можно скопировать к родительскому каталогу от того, где Вы путем ввода:
$ cd ..
Точно так же, как другие файлы, которые начинаются с точки, они скрыты. Человек укажет шоу весь для показа скрытых файлов если, поскольку они хотели просмотреть те спецификации каталога.
В MS-DOS и Windows там также .
и ..
. Вполне просто .
представляет текущий каталог и ..
представляет родительский каталог.
MS-DOS родился от операционной системы CPM, когда Bill Gates купил права за 80 000$ и лицензировал для IBM как ПК-DOS, который превратился в MS-DOS, который превратился в Windows, который предсказан для приземления его Триллион долларов в конце.
Linux также использует .
и ..
поскольку первая версия файловой системы была основана на аппаратных средствах IBM PC AT.
Как Serg, которому отвечают в Linux .
и ..
не появляйтесь в ls
управляйте потому что любое начало файла .
скрытый файл. Можно использовать ll
псевдоним для наблюдения этих файлов все же.
И в MS-DOS и в Linux можно использовать cd ..
управляйте для изменения на родительский каталог. В Linux, когда Вы хотите назвать команду в текущем каталоге (не в пути) необходимо снабдить префиксом команду ./
. В MS-DOS однако это автоматически посмотрит в текущем каталоге для команды прежде, чем искать ПУТЬ.
Mac Apple и Google Android основаны на операционной системе Linux, но я не знаю, используют ли их файловые системы также .
и ..
.