Абсолютный и относительный путь к файлу, сетевая папка

Абсолютный путь к файлу

Абсолютный (он же полный) путь — это когда мы указываем все диски и папки, в которые нужно зайти, чтобы добраться до нужного файла.

В Windows всё начинается с диска — это может быть C:, D: или диск с любой другой буквой. Если на диске C: сделать папку UTO, внутри неё — папку DATA, а в DATA положить файл «doc.txt», то абсолютный путь к этому файлу будет такой:

C:\UTO\DATA\doc.txt

Полный путь к файлу в Windows формируется так: Диск → все вложенные папки → имя файла. Обратите внимание — названия дисков, папок и файлов отделяются друг от друга обратной косой чертой.

❌ C\UTO\DATA\doc.txt ← пропущено двоеточие после буквы диска.

❌ C: UTO DATA doc.txt ← нет разделителей между названиями папок и файлов.

❌ C:\UTO\DATA ← это путь к папке, но имя файла не указано.

В MacOS у дисков нет отдельной назначенной буквы, поэтому всё начинается с корневой папки /, внутри которой и находятся все остальные папки.

Кстати, в MacOS, Linux и любой UNIX-подобной файловой системе все диски — это тоже папки. Например, когда мы делали скрипт для бэкапа, то флешка с названием WIN10_64 находилась по такому адресу: /Volumes/WIN10_64. А всё потому, что все новые диски по умолчанию подключаются как папки внутри папки /Volumes.

Ещё одно отличие MacOS и Linux в том, что вместо обратной косой черты используется просто косая черта, у которой наклон в другую сторону: /. Всё остальное работает по тому же принципу: в абсолютном пути мы собираем все папки, которые нужно пройти, начиная с корня.

Например, если у нас есть в документах папка Notes, внутри которой лежит markdown-файл с задачами на день tasks.md, то полный путь к нему будет в MacOS выглядеть так:

/Users/mike/Documents/Notes/tasks.md

Когда скрипт или программа встречают абсолютный путь, они точно знают, где взять конкретный файл. Например, почти все ссылки в интернете, которые ведут с сайта на сайт, — абсолютные, чтобы браузер точно знал, где взять нужный файл со страницей.

Но если вы сделали проект на своём компьютере и использовали абсолютные пути, то при запуске на другом компьютере он может выдать ошибку, если файлы не будут лежать в точно таких же папках и дисках. Поэтому в такой ситуации лучше использовать относительный путь.

Относительный путь к файлу

Относительный путь — это путь к файлу относительно текущего каталога. Текущий каталог — это тот, в котором запускается скрипт, программа или открывается страница в браузере.

Например, если мы в папку Notes из примера выше положим файлы нашего калькулятора на JavaScript, то абсолютные пути к каждому файлу будут выглядеть так:

/Users/mike/Documents/Notes/index.html
/Users/mike/Documents/Notes/style.css
/Users/mike/Documents/Notes/script.js

Видно, что путь к файлу отличается только именем, потому что они все лежат в одной папке. В этом случае используют относительный путь к файлу, просто указывая его имя:

index.html
style.css
script.js

Когда браузер встретит такой путь, он возьмёт путь к каталогу, где лежит страница, и в нём будет искать эти файлы. А если нам понадобится файл data.json из папки Documents, которая лежит уровнем выше, то мы можем обратиться к нему так:

../data.json

Первая точка означает текущий каталог, вторая — на уровень выше, а косая черта — что нам нужно зайти в тот каталог и взять оттуда файл data.json.

Когда что использовать

При подключении файлов скриптов или стилей мы используем относительный путь, потому что они лежат в той же папке, что и веб-страница для браузера. А вот когда мы подключаем скрипты из интернета, то указываем полный путь, потому что они лежат не в нашей папке, а на своём сервере.

Общее правило будет такое: если вы работаете со своими файлами, лучше указывать относительный путь, а если нужен чужой файл из интернета — то абсолютный.

Как настроить сетевую папку
  • Выберите папку и кликните по ней правой кнопкой мыши.
  • «Свойства».
  • Вкладка «Доступ».
  • Кнопка «Общий».
  • Выберите группу, которой хотите предоставить права на использование каталога.
  • Выставьте уровень разрешений «Чтение и запись» или «Только чтение».
  • Нажмите на «Общий доступ», чтобы подтвердить действие.
  • Выделите директорию и кликните «Готово».
  • В строке «Сетевой путь» указано, где находится папка. Его можно вписать в Проводник.
  • Перейдите в «Расширенная настройка».
  • Отметьте галочкой «Открыть общий доступ».
  • Придумайте имя для директории. Или оставьте то название, которое было прежде.
  • В меню «Разрешения» пропишите ограничения.

Абсолютный и относительный путь к файлам

0 ∞ 5

Как вы знаете, в параметре href тега <a> (<a… href=»…»…>) необходимо указывать путь к файлу, на который делается ссылка.
Многие пишут что-то вроде http://somesite.ru/catalog/doc.html. Да, никто не спорит, это работает. Но есть одно «но». Рассмотрим на примере.

Пусть ваш сайт размещался, например, на каком-то бесплатном хостинге и его адрес был следующий: http://fsite.freehosting.ru.
На сервере лежит порядка 100 документов. И вот вы решили перенести свой сайт на другой домен,
пусть это будет платный хостинг в зоне ru: http://site.ru. Что же, везде теперь менять http://fsite.freehosting.ru на http://site.ru?
Да, благодаря таким редакторам как homesite, это возможно. Но это не выход.
Предположим, что прежде чем заливать страницу на сервер, вы проверяете ее работоспособность
на своем домашнем сервере apache (тем, кто еще не знает что такое «домашний сервер» — сюда(Установка и настройка сервера apache), и вместо http://localhost надо везде будет писать http://site.ru. Согласитесь это, по крайней мере, неудобно.

Выход состоит в том, что бы, при указывании пути к файлу, учитывать не его положение на сайте, а его положение на сервере.

Абсолютный путь

Возьмем, к примеру, файл doc. html, который находится по адресу: http://somesite.ru/catalog/doc.html. На сервере, как известно, находится папка www. Как мы видим из адреса, в этой папке находится папка catalog, и уже в ней находится файл doc.html.

Если, при указывании пути к файлу, перед адресом поставить /, то это будет аналогично следующему: корневая_директория_на_севере/www/путь к файлу.
То есть, http://somesite.ru/catalog/doc.html аналогично следующему: /catalog/doc.html.
Итак, когда перед адресом стоит /, то это означает, что «отсчет» начинается с директории www.
Теперь вместо http://localhost/index.html из любого документа можно писать /index.html.
А вот что бы добраться до директории cgi надо писать так: /cgi-bin/путь к файлу.

Пути, созданные способами, описанными выше, называется абсолютными, т.к указывается абсолютный (полный) путь к файлу на сервере.

Относительный путь

Существуют также относительные пути, которые указываются относительно самого документа, откуда идет ссылка.
Например, если в doc.html создать ссылку newcat/new.html, то это подразумевает, что файл new.html находится в каталоге newcat, который, в свою очередь, находится в том же каталоге, что и файл doc.html. Как видите, этот путь указан относительно файла doc.html. Где бы этот файл не находился, путь newcat/new.html будет всегда справедлив, если файл doc.html и каталог newcat будут находиться на одном уровне (т.е. в одном каталоге).

Также относительно какого-то документа можно подняться на директорию вверх. Для этого необходимо написать ../.
Например, есть каталог big, в нем находятся два каталога: primary и secondary. В каталоге primary лежит, уже знакомый нам файл doc.html; а в каталоге secondary находится файл new.html. Для того, чтобы из файла doc.html сделать ссылку на файл new.html, то нужно написать ../secondary/new.html. А вот если каталог big находится в каталоге www, то путь к файлу new.html можно было указать и так: /big/secondary/new.html

Вместо заключения стоит сказать, что использование абсолютных и относительных путей значительно облегчает работу веб мастерам, будь то новичок или профессионал. Так что используйте эту возможность, как говорится, на полную катушку, и старайтесь избегать путей типа http://site.ru/catalog/file.file, или же, по крайней мере, прибегайте к их помощи как можно реже.

Как найти полный путь к файлу в Linux

Вы можете получить полный путь к каталогу с помощью команды pwd:

 pwd 

Но как получить абсолютный путь к файлу в Linux?

Существует несколько способов вывода полного пути к файлу:

  • readlink
  • realpath
  • find
  • сочетание ls и pwd
Различные способы вывода полного пути к файлу

Позвольте мне показать вам эти команды один по одному. Но перед этим я предлагаю сначала освежить в памяти основы концепции абсолютного и относительного пути.

Абсолютный и относительный пути в Linux: в чем разница?

В этой важной главе по изучению Linux вы узнаете об относительных и абсолютных путях в Linux. В чем разница между ними и какой из них следует использовать.

Linux HandbookAbhishek Prakash

Используйте readlink для получения пути к файлу

Целью команды readlink является разрешение символических ссылок. Вы можете использовать его для отображения полного пути к файлу следующим образом:

 readlink -f имя файла 

Вот пример:

 [электронная почта защищена]:~$ readlink -f sample.txt
/home/абхишек/sample.txt
[email protected]: 

Используйте realpath для получения полного пути к файлу

Команда realpath используется для разрешения абсолютных имен файлов. Помимо прочего, он может показывать полный путь к файлу.

 realpath имя файла 

Взгляните на этот пример:

 [email защищен]:~$ realpath sample.txt
/home/абхишек/sample.txt
[электронная почта защищена]:~$ 

Если вы используете его с символической ссылкой, он покажет реальный путь к исходному файлу. Вы можете заставить его не следовать символической ссылке

:

 realpath -s имя файла 

Вот пример, где он по умолчанию показывал полный путь к исходному файлу, а затем я заставил его показать символическую ссылку, а не оригинал файл.

 [электронная почта защищена]:~$ realpath linking-park
/home/abhishek/Документы/ubuntu-commands.md
[электронная почта защищена]:~$ realpath -s linking-park
 

Используйте команду find, чтобы получить абсолютный путь к файлу

Вот что происходит с командой find. Все относительно каталога, который вы даете для поиска.

Если вы дадите . он покажет относительный путь. Если вы укажете абсолютный путь к каталогу, вы получите абсолютный путь к файлам, которые вы ищете.

Используйте подстановку команды с командой find следующим образом:

 find $(pwd) -name filename 

Вы можете запустить его, чтобы найти полный путь к одному файлу:

 abhish[email protected]:~$ find $(pwd) -name sample.txt
/home/abhishek/sample.txt 

Или вы можете использовать его с кучей файлов, соответствующих определенному шаблону:

 [email protected]:~/Documents/eBooks$ find $(pwd) -name "*.pdf "
/home/abhishek/Documents/eBooks/think-like-a-programmer. pdf
/home/abhishek/Документы/электронные книги/linux-guide.pdf
/home/abhishek/Документы/электронные книги/absolute-open-bsd.pdf
/home/abhishek/Documents/eBooks/theory-of-fun-for-game-design.pdf
/home/abhishek/Документы/электронные книги/Ubuntu 1804 english.pdf
/home/abhishek/Документы/электронные книги/computer_science_distilled_v1.4.pdf
/home/abhishek/Documents/eBooks/the-art-of-debugging-with-gdb-and-eclipse.pdf 

Распечатайте полный путь с помощью команды ls

Теперь это немного сложно и запутанно.

Вы можете использовать переменную среды PWD с командой ls, чтобы отобразить файлы и каталоги с их абсолютным путем:

 ls -ld $PWD/* 

Вы получите следующий вывод:

 [email protected]: ~/test$ ls -ld $PWD/*
-r--rw-r-- 1 abhishek abhishek 0 27 июля 16:57 /home/abhishek/test/file2.txt
drwxrwxr-x 2 abhishek abhishek 4096 22 августа 16:58 /home/abhishek/test/new
 

Однако, чтобы напечатать полный путь к файлу с помощью команды ls, вам придется использовать ее следующим образом:

 ls -l $PWD/имя файла 

Не самое чистое решение, но оно работает.

 [электронная почта защищена]:~$ ls -l $PWD/sample.txt
-rw-r--r-- 1 abhishek abhishek 12813 7 сен 11:50 /home/abhishek/sample.txt
[email protected]:~$ 

Заключение

Я показал четыре разных способа получить полный путь к файлу в Linux. Команды find и ls широко распространены, в то время как realpath и readlink вряд ли известны многим пользователям Linux. Всегда приятно узнавать что-то новое, не так ли?

Абсолютные и относительные пути в UNIX

Путь — это уникальное местоположение файла или папки в файловой системе ОС. Путь к файлу представляет собой комбинацию / и буквенно-цифровых символов.

Абсолютный путь

Абсолютный путь определяется как указание местоположения файла или каталога из корневого каталога (/).
Для записи абсолютного имени пути:

  • Начните с корневого каталога ( / ) и продвигайтесь вниз.
  • Напишите косую черту (/) после каждого имени каталога (последнее необязательно)
  • Например:

$cat abc. sql
 

будет работать только , если файл «abc.sql» существует в вашем текущем каталоге. Однако, если этот файл отсутствует в вашем рабочем каталоге и присутствует где-то еще, скажем, в /home/kt, тогда эта команда будет работать, только если вы будете использовать ее, как показано ниже:

кот /home/kt/abc.sql
 

В приведенном выше примере, если первым символом пути является /, местоположение файла должно быть определено относительно корня. Когда у вас есть более одного / в имени пути, для каждого такого / вы должны спуститься на один уровень в файловой системе, как в приведенном выше примере, kt на один уровень ниже дома и, следовательно, на два уровня ниже корня.

Абсолютный путь определяется как указание местоположения файла или каталога из корневого каталога (/). Другими словами, мы можем сказать, что абсолютный путь — это полный путь от начала фактической файловой системы до каталога /.

Относительный путь

Относительный путь определяется как путь, непосредственно связанный с текущей работой (pwd). Он начинается в вашем текущем каталоге, а никогда не начинается с /.

Чтобы быть более конкретным, давайте посмотрим на рисунок ниже, на котором, если мы ищем фотографии, то абсолютный путь к ним будет указан как /home/jono/photos , но при условии, что мы уже присутствуем в каталоге jono тогда относительный путь для того же самого может быть записан как простой

фото .

Использование . и .. в относительных путях

UNIX предлагает ярлык в относительном пути , который использует текущий или родительский каталог в качестве ссылки и указывает путь относительно него. Относительное имя пути использует один из следующих загадочных символов:

  .(одна точка)  - это представляет текущий каталог.
  ..(две точки)  - это родительский каталог. 

На самом деле это означает, что если мы сейчас находимся в каталоге /home/kt/abc и теперь вы можете использовать .