Меню Рубрики

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

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

В Linux есть такие понятия, как абсолютный и относительный путь. Я сам только недавно узнал об этом и поэтому решил поделиться информацией, а так же, что бы лучше запомнить самому. Что же такое, абсолютный и относительный путь?

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

Абсолютный путь неизменен, например, /home/robin/Documents и интерпретируется одинаково независимо от вашей рабочей папки, в то время как относительный путь не включает одно или несколько имен родительских папок, заменяя их либо обозначением . либо ссылаясь на файлы и папки внутри текущей папки.

Путь с использованием родительских папок без их именования может выглядеть, как ../Видео или ../../../Документы. При каждом обнаружении специального обозначения .. Ubuntu переходит на уровень вверх. Если описание пути на этом не закончено, за символом .. должен следовать символ / (прямой слэш). Если нет, относительный путь ../../.. вполне корректен, он переносит вас в дереве каталогов на три уровня вверх.

Другой вариант относительного пути — путь, в котором упоминаются только файлы и папки из текущей папки, например Документы/Отчеты или Vacation/Cancun/Photos.

В действительности, несмотря на то, что он может показаться бессмысленным, относительный путь, такой как Vacation/Cancun/../Barbados, абсолютно корректен, потому что он представляет путь Vacation/Barbados с ненужным посещением папки Cancun по дороге.

Вам следует запомнить, что главное отличие абсолютного пути от относительного — наличие символа / в начале пути. Без начального прямого слэша относительный путь указывается относительно текущего местонахождения, а с прямым слэшем вначале относительный путь указывается относительно корневого каталога файловой системы и чаще называется абсолютным путем.

Ну а если вас интересует компьютерное оборудование и программное обеспечение, то обратите внимание на сайт сайт микротик.
Большой выбор компьютерной техники с доставкой по всей России.

Не нашли ответ на свой вопрос? Воспользуйтесь поиском.

Источник

Путь к файлу в 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. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

Как в Bash узнать абсолютный путь до файла

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

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

Пример абсолютного пути: /home/mial/bin/myfile.txt

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

Относительный путь указывает на расположение файла относительно текущей папки. Примеры относительных путей:

  • myfile.txt
  • ./myfile.txt
  • bin/myfile.txt
  • ../../bin/myfile.txt

Преимущество относительного пути в том, что обычно он обозначается более короткой записью как например myfile.txt — означает одноимённый файл в текущей папке. Очевидно, что при смене рабочей директории относительный путь до файла станет другим.

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

realpath

Первый вариант — использовать команду realpath:

Привет вывода абсолютного пути:

Эта программа является частью coreutils.

По умолчанию эта программа преобразует символические ссылки (опция -P) и показывает расположение файла даже если он не существует (опция -m) — то есть эти опции указывать необязательно.

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

Если вас это не устраивает, то используйте опцию -e — тогда если указанный файл не существует, то вместо вывода абсолютного пути будет показано сообщение об ошибке.

readlink

Аналогичную функцию выполняет и команда readlink.

Если вы хотите показать абсолютный путь только для существующих файлов, то используйте опцию -e:

Если вас не волнует, существует ли файл, то используйте опцию -f (не требует существование последнего компонента) или опцию -m (не требует существование какого-либо компонента пути):

realpath и readlink не найдены

UNIX системы — это не только многочисленные дистрибутивы Linux. В некоторых из них команды realpath и readlink могут отсутствовать. Если они отсутствуют и вы не хотите или не можете устанавливать дополнительные бинарные файлы, то выход всё равно есть.

Создайте файл, например, realpath.sh и скопируйте в него:

Этот же вариант в виде функции:

Вот эта же функция в продвинутом варианте — дополнительно обрабатывает ситуацию, когда директория не существует, а также если во вводе присутствуют ‘..’ или ‘.’

Ещё один вариант в виде функции оболочки, который:

  • не требует утилит (только cd и pwd)
  • работает для директорий и файлов
  • обрабатывает .. и .
  • обрабатывает пробелы в директориях и именах файлов
  • требует, чтобы файл или директория существовали
  • ничего не возвращает, если ничего не существует
  • может принимать абсолютные пути в качестве ввода (хотя ничего с ними не делает)

И ещё одна функция, записанная в одну строку и работающая в bash и zsh (другие не проверялись):

Источник

Популярные записи


Adblock
detector