При работе с файлами и каталогами в Linux вы должны знать, как работать с путями для быстрой навигации и доступа к файлам. Путь определяет маршрут для доступа к данной папке или файлу. Структура каталогов Linux напоминает корни дерева, где все начинается от корня до ветвей, пока вы не достигнете целевого файла или папки.
Сегодняшняя статья посвящена пониманию путей в Linux. Мы будем копаться в абсолютных и относительных путях в Linux, чтобы понять их различия и то, как использовать каждый из них при поиске пути к файлу или папке.
Понимание абсолютного и относительного пути в Linux
Файловая система Linux — это все о файлах и каталогах — доступ к этим файлам или папкам осуществляется с помощью путей. Каждый путь начинается с корневого каталога, представленного косой чертой (/). Из корневого каталога вы можете получить разделители. Вы можете использовать относительный или абсолютный путь.
1. Абсолютный путь
Вы используете абсолютный путь, когда указываете путь к файлу или папке, начиная с корневого каталога. Этот путь начинается с корня (/), за которым следуют разделители к другим каталогам в середине, прежде чем вы достигнете целевого файла.
Чтобы понять абсолютный путь в Linux, давайте рассмотрим пример использования команды pwd.
andreyex@andreyex: $ andreyex@andreyex: $ pwd /home/andreyex andreyex@andreyex:
Вы заметите, что наш текущий путь в данном случае — /home/andreyex. Первая косая черта (/) обозначает корневой каталог. Все пользователи, созданные в системе Linux, сохраняются в домашнем каталоге. В данном случае имя нашего пользователя andreyex. Таким образом, этот абсолютный путь является домашним каталогом andreyex и содержит все остальные дочерние каталоги.
andreyex@andreyex: $ ls Desktop Downloads Pictures snap Documents Music Public Videos Templates wget-log andreyex@andreyex: $
Предположим, мы хотим вывести содержимое каталога Downloads для указанного пользователя, вы можете сделать это, используя его абсолютный путь, как показано ниже.
$ ls /home/andreyex/Downloads/
andreyex@andreyex: $ ls Desktop Downloads Pictures snap Videos Documents Music Public Templates wget-log andreyex@andreyex: $ ls /home/andreyex/Downloads/ names.txt andreyex@andreyex: $
Абсолютный путь в Linux позволяет получить доступ к файлам и папкам в других местах без перехода в их родительский каталог.
2. Относительный путь
В отличие от абсолютного пути, который начинается с корневого каталога, относительные пути начинаются с текущего рабочего каталога. Таким образом, относительный путь меняется в зависимости от вашего текущего каталога.
Например, ссылаясь на более ранний пример доступа к содержимому /Downloads, наша команда изменится следующим образом, если мы хотим использовать абсолютный путь:
$ ls Downloads/
wyey lnuxhint@andreyex: $ ls /home/andreyex/Downloads/ names.txt andreyex@andreyex: $ ls Downloads/ names.txt andreyex@andreyex: $
Целевая папка находится в текущем каталоге, что означает, что мы можем напрямую ссылаться на нее, не добавляя корневой каталог.
Относительный путь позволяет использовать одну точку (.) и двойную точку (..) для указания путей вверх или вниз по текущему каталогу. Эти точки не видны, если вы не используете их для доступа к целевому файлу.
Одна точка указывает текущий каталог, а двойная точка представляет его родительский каталог.
Приведем пример.
Мы находимся в пути /home/andreyex/Downloads/names.
andreyex@andreyex:-/Downloads/names$ andreyex@andreyex: -/Downloads/names$ pwd /home/andreyex/Downloads/names andreyex@andreyex:~/Downloads/names$
Предположим, мы хотим вывести содержимое Downloads/, не вводя его абсолютный путь, мы могли бы использовать двойные точки для относительного пути, чтобы получить доступ к родительскому каталогу с помощью команды ниже.
$ ls ../
andreyex@andreyex: -/Downloads/names$ andreyex@andreyex:-/Downloads/names$ pwd /home/andreyex/Downloads/names andreyex@andreyex:-/Downloads/names$ ls . files.txt names andreyex@andreyex:~/Downloads/names$
Использование относительного пути в таком случае более удобно, в отличие от абсолютного пути, который требует ввода всего пути, как показано.
andreyex@andreyex:~/Downloads/names$ ls . files.txt names andreyex@andreyex:-/Downloads/names$ ls /home/andreyex/Downloads/ files.txt names andreyex@andreyex:~/Downloads/names$
Точно так же, если бы мы хотели подняться выше в родительском каталоге, мы могли бы добавить больше двойных точек с разделителем. В приведенном ниже примере мы получили доступ к домашнему каталогу.
andreyex@andreyex: -/Downloads/names $ andreyex@andreyex:-/Downloads/names$ ls …/…/ Desktop Downloads Pictures snap Videos Documents Music Public Templates wget-log andreyex@andreyex:~/Downloads/names$
Если бы мы хотели получить доступ к каталогу в дочернем каталоге нашего текущего каталога, мы могли бы указать его относительный путь, используя одинарные кавычки.
andreyex@andreyex:-/Downloads$ andreyex@andreyex:-/Downloads$ ls files.txt names andreyex@andreyex:-/Downloads$ ls ./names/demo/ names.txt andreyex@andreyex:-/Downloads$
Абсолютный путь против относительного пути
Абсолютный путь указывает путь к папке или файлу, начиная с корневого каталога, за которым следует домашний каталог пользователя. Однако относительный путь указывает путь к файлу или папке, начиная с текущего каталога.
Используйте относительный путь при доступе к дочернему или родительскому каталогу, начиная с текущего каталога. Используйте абсолютный путь для доступа к файлу или папке в файловой системе или из другого места без переключения текущего каталога.
Заключение
В этой статье обсуждалось, что означают абсолютные и относительные пути в Linux. Мы видели примеры в каждом случае и то, как выбрать любой вариант в зависимости от местоположения вашего целевого файла или папки. С помощью этого поста вы быстро поймете, как работать с путями в Linux.