Руководство по командам readlink и realpath для Linux для начинающих (с примерами)
На этой странице
- Команды Linux realpath и readlink
- Q1. Как разрешить путь, используя realpath и readlink?
- Вопрос 2. Как напечатать разрешенный путь относительно каталога?
- Вопрос 3. Как просто избавиться от .. в путях?
- Q4. Как изменить символ-разделитель?
- Заключение
Мы уже обсуждали команду 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 (здесь), чтобы узнать больше об этих инструментах.