Как проверить, существует ли символическая ссылка в Linux

LinuxLinuxBeginner
Практиковаться сейчас

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

Введение

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

Сначала вы используете команду test с опцией -L для программной проверки типа файла. Затем вы проверите информацию о ссылке, изучив вывод команды ls -l. Наконец, вы узнаете, как определить целевой файл или каталог, на который указывает символическая ссылка, с помощью команды readlink.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/ln("Link Creating") subgraph Lab Skills linux/echo -.-> lab-558768{{"Как проверить, существует ли символическая ссылка в Linux"}} linux/test -.-> lab-558768{{"Как проверить, существует ли символическая ссылка в Linux"}} linux/ls -.-> lab-558768{{"Как проверить, существует ли символическая ссылка в Linux"}} linux/ln -.-> lab-558768{{"Как проверить, существует ли символическая ссылка в Linux"}} end

Проверка символической ссылки с использованием test -L

На этом этапе вы узнаете, как проверить, является ли файл символической ссылкой, используя команду test с опцией -L.

Символическая ссылка (или symlink) — это особый тип файла, который указывает на другой файл или каталог. Можно представить ее как ярлык в Windows. Когда вы обращаетесь к символической ссылке, вы фактически обращаетесь к файлу или каталогу, на который она указывает.

Сначала создадим простой файл. Убедитесь, что вы находитесь в каталоге ~/project.

echo "This is the original file." > original_file.txt

Теперь создадим символическую ссылку на original_file.txt. Назовем символическую ссылку my_symlink.

ln -s original_file.txt my_symlink
  • ln: Команда, используемая для создания ссылок.
  • -s: Эта опция сообщает команде ln создать символическую ссылку (вместо жесткой ссылки).
  • original_file.txt: Целевой файл, на который будет указывать символическая ссылка.
  • my_symlink: Имя создаваемой символической ссылки.

Теперь можно использовать команду test для проверки, является ли my_symlink символической ссылкой. Команда test используется для проверки типов файлов и сравнения значений. Она не выводит результат напрямую, но ее статус завершения указывает на успех (0) или неудачу (не ноль).

Можно объединить test с echo, чтобы увидеть результат.

test -L my_symlink && echo "my_symlink is a symbolic link" || echo "my_symlink is NOT a symbolic link"
  • test -L my_symlink: Эта команда проверяет, является ли my_symlink символической ссылкой.
  • &&: Это логический оператор "И". Если команда перед && завершается успешно (статус завершения 0), то выполняется команда после &&.
  • ||: Это логический оператор "ИЛИ". Если команда перед || завершается неудачно (статус завершения не ноль), то выполняется команда после ||.

Поскольку my_symlink действительно является символической ссылкой, вывод должен быть следующим:

my_symlink is a symbolic link

Теперь проверим обычный файл, например original_file.txt:

test -L original_file.txt && echo "original_file.txt is a symbolic link" || echo "original_file.txt is NOT a symbolic link"

Вывод должен быть:

original_file.txt is NOT a symbolic link

Это подтверждает, что команда test -L правильно определяет символические ссылки.

Проверка ссылки по выводу команды ls -l

На этом этапе вы узнаете, как определить символические ссылки и их целевые объекты с помощью команды ls -l.

Команда ls используется для вывода списка файлов и каталогов. Опция -l предоставляет "расширенный формат вывода", который включает подробную информацию о каждом файле, такую как права доступа, владелец, размер и время последнего изменения.

Когда вы используете команду ls -l для символической ссылки, она отображает саму ссылку и показывает, на что она указывает.

Убедитесь, что вы находитесь в каталоге ~/project, где в предыдущем шаге вы создали файл original_file.txt и символическую ссылку my_symlink.

Теперь выполните команду ls -l:

ls -l

Вы должны увидеть вывод, похожий на следующий:

total 4
-rw-rw-r-- 1 labex labex   25 Feb 28 10:00 original_file.txt
lrwxrwxrwx 1 labex labex   15 Feb 28 10:00 my_symlink -> original_file.txt

Разберем вывод для my_symlink:

  • Первый символ l указывает, что это символическая ссылка. Для обычного файла здесь был бы -.
  • Права доступа (rwxrwxrwx) для символических ссылок часто показываются как полные права, но фактические права определяются целевым файлом.
  • Количество ссылок обычно равно 1 для символической ссылки.
  • Владелец и группа - labex.
  • Размер (15) - это количество символов в целевом пути (original_file.txt).
  • Метка времени - это время создания или изменения самой символической ссылки.
  • my_symlink: Имя символической ссылки.
  • -> original_file.txt: Эта часть четко показывает, что my_symlink указывает на original_file.txt.

Сравним это с выводом для original_file.txt:

  • Первый символ - указывает, что это обычный файл.
  • Права доступа (rw-rw-r--) показывают, кто может читать, записывать и выполнять файл.
  • Количество ссылок (1) показывает, сколько жестких ссылок указывает на данные этого файла.
  • Размер (25) - это фактический размер содержимого файла в байтах.

Использование команды ls -l - очень распространенный способ быстро определить символические ссылки и увидеть, на что они указывают.

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

В то время как команда ls -l отлично подходит для визуального обзора, команда readlink специально разработана для разрешения символических ссылок и вывода целевого пути. Это особенно полезно в скриптах или когда вам нужен только целевой путь без другой информации о файле.

Убедитесь, что вы находитесь в каталоге ~/project.

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

readlink my_symlink

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

original_file.txt

Это подтверждает, что my_symlink действительно указывает на original_file.txt.

У команды readlink есть полезная опция -f, которая рекурсивно следует по всем символическим ссылкам и разрешает их до абсолютного пути конечного целевого объекта. Это полезно, если у вас есть цепочка символических ссылок.

Создадим еще одну символическую ссылку, которая будет указывать на my_symlink:

ln -s my_symlink another_link

Теперь, если вы используете команду readlink для another_link без опции -f, она покажет непосредственный целевой объект:

readlink another_link

Вывод:

my_symlink

Но если вы используете команду readlink -f для another_link, она будет следовать по цепочке (another_link -> my_symlink -> original_file.txt) и выдаст абсолютный путь конечного целевого объекта:

readlink -f another_link

Вывод:

/home/labex/project/original_file.txt

Это показывает полный путь к исходному файлу. Команда readlink -f очень мощна для нахождения конечного назначения ссылки, даже если она вложена в другие ссылки.

Теперь вы узнали три способа работы с символическими ссылками: использование test -L для проверки, является ли файл ссылкой, использование ls -l для просмотра деталей ссылки и ее целевого объекта, а также использование readlink для определения целевого пути.

Резюме

В этом практическом занятии (лабораторной работе) вы узнали, как проверить, является ли файл символической ссылкой в Linux. Сначала вы создали обычный файл и символическую ссылку, указывающую на него. Затем вы использовали команду test с опцией -L для программной проверки, является ли заданный файл символической ссылкой, и увидели, как ее статус завершения можно использовать с логическими операторами (&& и ||) для вывода результата.

Вы также узнали, как визуально проверить символическую ссылку с помощью команды ls -l, которая отображает символ 'l' в начале поля прав доступа и показывает целевой объект ссылки. Наконец, вы изучили команду readlink для определения целевого пути символической ссылки и поняли ее полезность для написания скриптов и автоматизации.