Поиск по сайту:

Руководство по командам readlink и realpath для Linux для начинающих (с примерами)


На этой странице

  1. Команды Linux realpath и readlink
  2. Q1. Как разрешить путь, используя realpath и readlink?
  3. Вопрос 2. Как напечатать разрешенный путь относительно каталога?
  4. Вопрос 3. Как просто избавиться от .. в путях?
  5. Q4. Как изменить символ-разделитель?
  6. Заключение

Мы уже обсуждали команду ln, которая позволяет создавать ссылки между файлами. Но есть также инструменты, которые позволяют разрешить эти ссылки.

В этом руководстве мы обсудим основы команд realpath и readlink, которые похожи (если не одинаковы) в том смысле, что они отображают разрешенные символические ссылки в выводе. Но прежде чем мы это сделаем, стоит упомянуть, что все приведенные здесь примеры были протестированы на Ubuntu 18.04 LTS и Debian 10.

Команды Linux realpath и readlink

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

Ниже приведен их синтаксис:

realpath [OPTION]... FILE...
readlink [OPTION]... FILE...

И вот что говорят их соответствующие справочные страницы:

Print the resolved absolute file name
print resolved symbolic links or canonical file names

Ниже приведены несколько примеров в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работают эти инструменты.

Q1. Как разрешить путь, используя realpath и readlink?

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

А вот как они работают с путями:

Таким образом, вы можете видеть, что обе команды успешно разрешили символические ссылки в двух случаях.

Q2. Как напечатать разрешенный путь относительно каталога?

Команда realpath позволяет вам легко это сделать. Например, предположим, что это то, что вы пытаетесь сделать:

realpath /var/local/Downloadslink

Однако дополнительным требованием является наличие выходных данных этой команды относительно каталога /home/himanshu. Затем следует команда, которую вам нужно выполнить:

realpath /var/local/Downloadslink --relative-to=/home/himanshu

Вот результат:

Downloads

Итак, вы можете видеть, что опция --relative-to позволяет вам иметь вывод относительно каталога /home/himanshu.

Q3. Как просто избавиться от .. в путях?

Могут быть случаи, когда расширение/разрешение символических ссылок не является целью, а избавление от .. в пути. Команда realpath позволяет это сделать.

Все, что вам нужно сделать, это использовать параметр командной строки -s. Вот пример:

realpath -s ../../var/local/Downloadslink

И вот вывод этой команды:

/var/local/Downloadslink

Q4. Как изменить символ-разделитель?

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

В обоих случаях вам нужно использовать опцию -z.

realpath -z [FILE/PATH]
readlink -z [FILE/PATH]

Заключение

Здесь мы обсудили лишь несколько опций/функций, предоставляемых этими командами. После того, как вы закончите практиковать их, перейдите на справочные страницы readlink и realpath (здесь), чтобы узнать больше об этих инструментах.