Вопрос или проблема
Когда я использовал ls -a
для просмотра скрытых файлов в папке, там было 2 скрытых файла, созданных по умолчанию. Каково значение этих двух файлов, .
и ..
?
ls -a
выводит:
.
..
<другие_файлы>
.
это текущая папка.
..
это папка выше текущей папки – папка, которая содержит текущую папку.
Вы иногда увидите одну точку в использовании, когда кто-то хочет запустить скрипт из своей домашней директории. Например: ./install-app.sh
. Это означает, что файл install-app.sh
находится в текущей директории. Также было бы совершенно правильно написать /home/username/directory/install-app.sh
. Тем же образом, вы также можете сделать ../install.app
, если файл находится в родительской директории.
Причина, по которой это так, заключается не только в навигации, но и в том, что нельзя случайно скрыть системные приложения, просто неправильно назвав файл в вашей домашней директории.
Это жесткие ссылки на саму себя (.
) и на родительскую (..
) директории. Они создаются, когда вы создаете директорию. Их нельзя удалить (без удаления директории, на которую они указывают).
Если вы создадите директорию:
mkdir /tmp/foo
вы можете видеть, что на самом деле есть две жесткие ссылки на /tmp/foo
:
drwxr-xr-x 2 michal michal 4096 2011-08-07 18:40 /tmp/foo
^---- две жесткие ссылки
Первая из директории /tmp/
, указывающая на /tmp/foo
, а вторая – это .
внутри /tmp/foo/
, указывающая на саму себя.
Также обратите внимание, что вы можете использовать ls -A
(вместо ls -a
), чтобы перечислить все файлы, включая скрытые файлы, но исключая директории .
и ..
.
.
текущая папка
..
родительская папка
.
Ответ или решение
Вопрос о значении файлов с названиями «.» и «..» в каталоге является важным аспектом понимания работы файловой системы. Эти символы не просто служат для обозначения скрытых файлов; они играют ключевую роль в навигации и структуре файлов в Unix-подобных операционных системах, таких как Linux.
Значение символа «.»:
Символ «.» представляет текущий каталог. Он используется для обозначения текущего местоположения в файловой системе. Это может быть полезно в различных сценариях, таких как выполнение исполняемых скриптов или приложений, находящихся в текущем каталоге. Например, если вы хотите запустить скрипт install-app.sh
, расположенный в текущем каталоге, вы можете использовать команду:
./install-app.sh
Это указывает системе, что файл install-app.sh
находится именно там, где вы сейчас находитесь.
Значение символа «..»:
Символ «..» обозначает родительский каталог — тот, который содержит текущий каталог. Это важная концепция, которая позволяет перемещаться вверх по иерархии файловой системы. Например, если вы находитесь в каталоге /home/username/documents
, команда:
cd ..
переместит вас обратно в каталог /home/username
. Так, с помощью «..» можно легко навигировать по структуре каталогов.
Жесткие ссылки и структура каталогов:
При создании нового каталога, например, с помощью команды:
mkdir /tmp/foo
в каталоге /tmp/foo
создаются две жесткие ссылки: одна ссылается на сам каталог (.
), а другая — на родительский каталог (..
). Это означает, что в каталоге /tmp
существует ссылка на /tmp/foo
, а также в самом /tmp/foo
есть ссылка на родительский каталог /tmp
. Такое поведение обеспечивает целостность файловой системы и позволяет избежать случайного удаления этих критически важных ссылок.
Сравнение с командами «ls»:
Вам может быть полезно знать, что использование команды ls -a
позволяет вам увидеть все файлы в каталоге, включая скрытые (начинающиеся с точки). Однако если вы хотите отобразить все файлы, исключая символы «.» и «..», используйте команду ls -A
.
Заключение:
Символы «.» и «..» — это не просто абстракции, а важные инструменты для навигации и управления файлами в каталоге. Понимание их использования и концепции жестких ссылок способствует более эффективной работе с файловыми системами, улучшает навыки администрирования и повышает вашу продуктивность в работе с операционной системой. В конечном итоге, это знание способствует более глубокому пониманию работы с информационными технологиями в целом.
Таким образом, знание роли этих двух символов не только обогащает вашу экспертизу в IT, но также открывает новые горизонты для манипуляций с файловыми системами и управления данными.