Путь к файлу в Linux
Все файлы в Linux имеют определенный адрес в файловой системе, с помощью которого мы можем получить к ним доступ с помощью файлового менеджера или консольных утилит. Это довольно простая тема, но у многих новичков с этим возникают трудности.
В сегодняшней небольшой заметке мы рассмотрим что такое путь к файлу Linux, каким он может быть, как правильно его писать и многое другое. Если раньше у вас возникали с этим трудности, то после прочтения статьи все станет полностью понятно.
Пути файлов в Linux
Файловая система Linux очень сильно отличается от Windows. Мы не будем рассматривать ее структуру, это было сделано ранее. Мы сосредоточимся на работе с файлами.
Самое главное отличие, в том что адрес файла начинается не с диска, например, C:\ или D:\ как это происходит в Windows, а с корня, корневого системного каталога, к которому подключены все другие. Его адрес — /. И тут нужно сказать про адреса. Пути файлов linux используют прямой слеш «/» для разделения каталогов в адресе, и это отличается от того, что вы привыкли видеть в Windows — \.
Например, если в Windows полный путь к файлу на рабочем столе выглядел C:\Users\Sergiy\Desktop\ то в путь файла в linux будет просто /home/sergiy/desktop/. С этим пока все просто и понятно. Но проблемы возникают дальше.
В операционной системе Linux может быть несколько видов путей к файлу. Давайте рассмотрим какие бывают пути в linux:
- Полный, абсолютный путь linux от корня файловой системы — этот путь вы уже видели в примере выше, он начинается от корня «/» и описывает весь путь к файлу;
- Относительный путь linux — это путь к файлу относительно текущей папки, такие пути часто вызывают путаницу.
- Путь относительно домашний папки текущего пользователя. — путь в файловой системе, только не от корня, а от папки текущего пользователя.
Рассмотрим теперь подробнее как выглядят эти пути в linux, а также разберем несколько примеров, чтобы было окончательно понятно. Для демонстрации будем пользоваться утилитой ls, которая предназначена для просмотра содержимого каталогов.
Например, у нас есть такой каталог в домашней папке с четырьмя файлами в нем:
Вот так будет выглядеть полный путь linux к одному из файлов:
Это уже относительный путь linux, который начинается от домашней папки, она обозначается ~/. Заметьте, не ~, а именно ~/. Дальше вы уже можете указывать подпапки, в нашем случае tmp:
Ну или путь файла в linux, относительно текущей папки:
В каждой папке есть две скрытые ссылки, мы сможем их увидеть с помощью ls, выполнив ее с параметром -a:
Первая ссылка указывает на текущую папку (.), вторая (..) указывает на папку уровнем выше. Это открывает еще более широкие возможности для навигации по каталогам. Например, чтобы сослаться на файл в текущей папке можно использовать конструкцию:
Это бесполезно при просмотре содержимого файла. Но очень важно при выполнении программы. Поскольку программа будет сначала искаться в среде PATH, а уже потом в этой папке. А потому, если нужно запустить программу, которая находится в текущей папке и она называется точно также как и та что в каталоге /bin, то без явной ссылки что файл нужно искать в текущей папке ничего не получится.
Вторая ссылка вам позволяет получить доступ к файлам в папке выше текущей. Например:
Такие конструкции могут довольно часто встречаться при компиляции программ. Все эти символы и пути файлов linux вы можете применять не только в терминале, но и в любом файловом менеджере, что может быть очень удобно.
Но терминал Linux предоставляет еще более широкие возможности. Вы можете использовать простые символы замены прямо в адресах файлов или каталогов. Например, можно вывести все файлы, начинающиеся на f:
Или даже можно искать не только в папке tmp, а в любой подпапке домашней папки:
И все это будет работать, возможно, это не всегда нужно и практично. Но в определенных ситуациях может очень сильно помочь. Эти функции реализуются на уровне оболочки Bash, поэтому вы можете применять их в любой команде. Оболочка смотрит сколько файлов было найдено и для каждого из них вызывает команду.
Выводы
Вот и все. Теперь вы знаете все что необходимо, чтобы не только правильно написать путь к файлу linux, но и выполнять более сложные действия, например, поиск файлов или навигация по каталогам с помощью команды cd. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Относительный и абсолютный путь в Linux. В чём разница?
Не знаете, использовать ли выражения относительного или абсолютного пути в своем следующем проекте? Начните с изучения разницы между ними.
Абсолютные и относительные пути — это два способа указать виртуальный адрес каталога или файла в Linux. Но в чем разница между этими двумя типами путей и какой из них следует использовать в ваших командах? Давай выясним.
Относительные и абсолютные пути в Linux
Если вы когда-либо использовали какую-либо команду Linux, основанную на аргументах, такую как cd или ls, вы должны знать, что существует несколько способов указать путь к каталогу или файлу.
Вы можете либо предпочесть придерживаться обычных выражений пути, либо, если вы опытный пользователь Linux, использовать сложные регулярные выражения для передачи имени файла или каталога в программу. В любом случае, в Linux есть только два способа указать путь к каталогу: абсолютный путь и относительный путь.
Выражения абсолютного пути
Абсолютный путь всегда начинается с корневого каталога и заканчивается фактическим каталогом или файлом, на который вы хотите указать. При использовании выражения абсолютного пути вам необходимо ввести все имена подкаталогов, присутствующих внутри иерархии, которые ведут к конечному местоположению.
Например, если вы хотите указать на /myfolder/folder2 внутри каталога /var/www, используя выражение абсолютного пути, вы должны использовать:
…где / в начале выражения относится к корневому каталогу в Linux.
Выражения относительного пути
Относительный путь, с другой стороны, относится к выражению пути, которое использует другой путь (обычно текущий рабочий каталог) в качестве корня или базы. Как следует из названия, это «относительно» существующего пути в вашей системе.
Например, если вы сейчас находитесь в каталоге /var/www и вам нужно указать на /myfolder/folder2, вы должны использовать:
… где . обозначает текущий каталог, в котором вы находитесь. Вы можете изменить текущий рабочий каталог с помощью команды cd.
Помимо одиночной точки ( . ), выражения относительного пути также используют двойные точки ( .. ) для ссылки на родительский каталог.
Например, предположим, что вы находитесь внутри каталога /www внутри следующей структуры каталогов:
В приведенном выше выражении пути . будет обозначать каталог /www, тогда как .. будет указывать на каталог /var. Если внутри /var есть другой каталог /random, к которому вам нужно получить доступ, пока вы находитесь внутри /var/www, вы должны использовать:
Абсолютный или относительный: какое выражение пути лучше?
Хотя выражения пути могут показаться вам простыми и неважными для вас, как для пользователя настольного компьютера, существуют различные варианты использования, когда использование неправильного имени пути может привести к множеству нежелательных неудобств. Веб-серверы являются хорошим примером.
Как веб-разработчик, работающий над проектом, размещенным на сервере Linux, вам необходимо получить доступ к файлам внутри каталога проекта. Здесь использование выражений относительного пути является стандартом, поскольку любое изменение имен подкаталогов или доменного имени проекта может привести к неработающим ссылкам.
Вы можете понять это на простом примере, который может быть более понятен пользователям настольных компьютеров. Символ / обозначает корневой каталог в системе Linux. Представьте, если вы вдруг измените это и сделаете символ / указывающим на домашний каталог. Многие из ваших команд, содержащих выражения абсолютного пути, не будут работать, так как / теперь переназначен другому каталогу.
Еще одно преимущество использования выражений относительного пути заключается в том, что, поскольку они относятся к текущему рабочему каталогу, это экономит ваше время, которое вы в противном случае потратили бы на ввод ненужных символов.
Единственная загвоздка здесь — это сложность и кривая обучения, связанные с относительными выражениями. Но это также часто встречается в выражениях абсолютного пути; чтобы стать мастером использования абсолютных путей, вам нужно хорошо разбираться в иерархии каталогов Linux. Вы можете использовать команду tree, чтобы просмотреть все дерево каталогов Linux и упростить для себя выражение абсолютного пути.
Понимание иерархии каталогов Linux
Структура каталогов Linux является общей для всех машин, работающих под управлением операционных систем на базе Linux. Вы можете использовать такую команду, как ls или tree, чтобы узнать больше о том, как структурированы файлы и каталоги на вашем компьютере, ну, или дождаться следующей статьи. С последним, желаю удачи!)