Определение пути в операционных системах¶
Путь — это строка, однозначно указывающая расположение файла, каталога или другого объекта в файловой системе. Пути используются в операционных системах (Windows, Linux, macOS), в программировании, в сетевых протоколах и в веб-разработке для обращения к ресурсам. Существует несколько стандартов записи путей, различающихся разделителями каталогов, обозначениями корневого каталога и способами указания относительного и абсолютного положения.
¶Виды путей
¶Абсолютный путь
Абсолютный путь начинается с корневого каталога и содержит полную цепочку каталогов до целевого объекта. В файловой системе Linux и macOS корень обозначается символом /, поэтому абсолютный путь выглядит как /home/user/documents/report.txt. В Windows корневой каталог определяется буквой диска, например C:\Users\user\Documents\report.txt. Абсолютный путь не зависит от текущего рабочего каталога процесса и всегда указывает на одно и то же место.
¶Относительный путь
Относительный путь задаётся относительно текущего рабочего каталога. Если текущий каталог — /home/user, то путь documents/report.txt указывает на /home/user/documents/report.txt. Относительные пути удобны для перемещения совокупности файлов целиком: при изменении корневого каталога проекта все относительные ссылки остаются рабочими. В Unix-подобных системах используются специальные обозначения: . — текущий каталог, .. — родительский каталог.
¶Путь к URL
В веб-разработке путь к ресурсу задаётся в URL. Абсолютный URL-путь начинается с / и отсчитывается от корня домена: https://example.com/docs/guide.html../images/logo.png. Относительный путь не начинается со слэша и разрешается относительно текущего документа: . Существуют также протокольно-зависимые ссылки (//example.com/style.css`), наследующие схему текущего документа.
¶Разделители каталогов
| Система | Разделитель | Пример пути |
|---|---|---|
| Linux, macOS, FreeBSD | / (прямой слэш) | /var/log/syslog |
| Windows | \ (обратный слэш) | C:\Windows\System32 |
| URL | / | /api/v1/users |
Windows традиционно принимает оба разделителя, поэтому C:/Windows/System32 тоже корректен, хотя в документации и в коде предпочтителен обратный слэш. В языках программирования, где обратный слэш является символом экранирования, путь в Windows-формате записывается как сырая строка (C#, Python) или с двойным слэшем.
¶Способы определения пути
¶В командной строке
В Linux и macOS для определения абсолютного пути текущего каталога используется команда pwd (print working directory). Для получения пути к файлу или каталогу применяется утилита realpath, разворачивающая относительный путь в абсолютный, или readlink -f. В Windows-командной строке текущий каталог отображается без команды, а путь к файлу можно получить командой for %I in ("имя_файла") do echo %~fI.
¶В Windows-интерфейсе
В Проводнике Windows полный путь к открытому каталогу отображается в адресной строке. Путь можно скопировать через контекстное меню: при удержании клавиши Shift в меню появляется пункт «Копировать как путь». В свойствах файла на вкладке «Сведения» также указывается полное расположение.
¶В программировании
В большинстве языков программирования для работы с путями существуют стандартные библиотеки. В Python это модуль pathlib (класс Path) и модуль os.path; в Java — класс java.nio.file.Path; в JavaScript (Node.js) — модуль path. Эти библиотеки предоставляют функции получения абсолютного пути (os.path.abspath, Path.resolve), вычисления относительного пути, получения имени файла и родительского каталога, а также проверки существования объекта по пути.
¶В файловых менеджерах
В Nautilus, Dolphin, Total Commander и аналогичных программах путь к текущей папке отображается в строке адреса или в панели. Многие файловые менеджеры поддерживают ввод пути вручную по сочетанию клавиш (например, Ctrl+L в Nautilus).
¶Особенности и ограничения
Длина пути в Windows по умолчанию ограничена 260 символами (MAX_PATH), хотя современные версии Windows 10 и 11 поддерживают длинные пути при включении соответствующей настройки реестра или манифеста приложения. В Linux и macOS ограничение на длину пути обычно составляет 4096 байт, а имя одного компонента пути — 255 символов.
В именах файлов запрещены определённые символы: в Windows — <>:"/\|?*, в Linux — только / и нулевой байт. Пробелы в путях допустимы, но требуют экранирования в командных строках (кавычки или обратный слэш).
¶Источники
- «UNIX и Linux: руководство системного администратора», Моллой Д.
- Документация Microsoft Learn: «Naming Files, Paths, and Namespaces»
- «Python. Лучшие практики и паттерны», Маттисон Т.
- Справочник POSIX: спецификация путей в файловых системах
- «The Linux Command Line», Шотт У.