См. символические ссылки Linux

Обновлено: 21.11.2024

Существует два способа найти символическую ссылку или программную ссылку в операционных системах на основе UNIX, таких как Linux, Solaris, BSD или IBM AIX. Первый способ — использовать команду ls в UNIX, которая отображает файлы, каталоги и ссылки в любом каталоге, а другой способ — использовать команду UNIX find, которая имеет возможность искать файлы любого типа, например. файл, каталог или ссылку. В этом руководстве по командам UNIX мы увидим примеры обеих этих команд UNIX для поиска программной ссылки в любом каталоге. Если вы новичок в операционной системе UNIX и не знакомы с концепцией мягкой ссылки и жесткой ссылки, я бы порекомендовал освоить ее, поскольку это одна из самых мощных функций системы на основе UNIX.

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

Это также очень популярный вопрос на собеседованиях по Linux, который задают системным администраторам и разработчикам. В любом случае, давайте начнем с первого примера того, как найти символическую ссылку в UNIX с помощью команды «ls»:

Кстати, если вы новичок в мире Linux, я также рекомендую вам присоединиться к практическому курсу, такому как «Мастерство Linux: освоить командную строку Linux за 11,5 часов», чтобы изучить некоторые важные команды Linux, такие как эта, чтобы стать более продуктивный и уверенный пользователь Linux.

Команда

ls для поиска символической ссылки в системах UNIX

когда вы запускаете команду ls -lrt в любом каталоге, она печатает сведения о разрешениях для каждого файла и каталога, если вы внимательно посмотрите на ссылки, строка которых начинается с маленькой буквы L ( l для ссылки).

Если вы объедините вывод команды ls с grep и используете регулярное выражение для поиска всех записей, начинающихся с маленькой буквы L, вы сможете легко найти все программные ссылки в любых каталогах.

Вот полный пример команды UNIX для поиска символической ссылки с помощью команд ls и grep:


Символ ^ — это специальное регулярное выражение, означающее начало строки. Вы также можете ознакомиться с курсом Udemy «Изучай Linux за 5 дней» и «Повысь уровень своей карьеры», чтобы узнать больше о параметрах ls и других важных командах Linux.

Отображение программной ссылки с помощью команды «Найти» в Unix

Еще один способ найти все программные или символические ссылки — использовать команду find в UNIX. Поскольку все операционные системы на основе UNIX, такие как Linux, Solaris или IBM AIX, поддерживают поиск, это не только доступный, но и самый мощный способ найти программную ссылку в любом каталоге или подкаталоге.

Когда вы используете команду find с типом параметра и указываете тип как маленькую L ( l для ссылки), отображаются все программные ссылки по указанному пути.

Например, по примеру команды find будут показаны все программные ссылки в текущем каталоге и его подкаталоге:

Здесь символ точки (.) обозначает текущий каталог.

Если вы хотите ограничить этот поиск только текущим каталогом, а не подкаталогом, вы можете указать максимальную глубину как 1, используя параметр -maxdepth команды find, как показано в следующем примере:

Как я уже говорил, команда find it очень полезна, но большинство пользователей UNIX не использует find в полной мере. Они даже не знают о некоторых полезных опциях, подобных этой.

Если вы хотите узнать больше о дополнительных параметрах поиска и других важных командах, я предлагаю вам пройти онлайн-курс «Основы системного администрирования Linux» для изучения команд Linux от Pluralsight. Вы можете получить это бесплатно, подписавшись на 10-дневную бесплатную пробную версию.

Это были два способа найти программную ссылку или символическую ссылку в операционной системе UNIX, например. Linux, Solaris или IBM AIX. Я все еще ищу команду UNIX, которая может найти все неработающие ссылки, и обновлю этот пример, когда получу это. Кстати, если вы, ребята, знаете какие-либо другие способы найти, показать или отобразить программную ссылку в любом каталоге или PATH, поделитесь, пожалуйста.

  • Как планировать задания cron в Linux (пример crontab)
  • 10 примеров сетевых команд в Unix (nslookup)
  • 7 лучших курсов по Linux для разработчиков и облачных инженеров (курсы)
  • 5 Пример команд kill в Unix и Linux (пример)
  • Как найти все файлы, соответствующие определенному тексту в Linux (grep)
  • 10 примеров использования команды chmod в Linux (chmod)
  • Как отправить почту с вложениями из Linux? (почта)
  • Мои любимые курсы Linux для инженеров DevOps (онлайн-курсы)
  • Как работает команда nslookup в UNIX? (ответ)
  • 10 примеров использования команды lsof в Linux? (примеры)
  • Как использовать команду netstat, чтобы определить, какой процесс прослушивает порт? (пример)
  • Linux find + du + grep пример (пример)
  • 5 лучших онлайн-курсов для углубленного изучения Linux (онлайн-курсы)
  • 10 примеров команды curl в Linux (cURL)
  • 10 лучших курсов для изучения командной строки Linux (курсы)
  • Практическое руководство по командам, редакторам и программированию оболочки Linux (руководство)

П. С. — Если вы новый пользователь Linux и ищете бесплатные онлайн-курсы, чтобы начать знакомство с Linux, вам следует ознакомиться с моим списком бесплатных курсов по Linux для программистов, ИТ-специалистов и системных администраторов.

Мы уже знали, что такое символические ссылки, символические ссылки или программные ссылки, и как найти и удалить неработающие символические ссылки из нашей системы Linux. Сегодня мы узнаем, как получить список Symlinks в Linux. Если вы давным-давно создали какие-то символические ссылки и совершенно о них забыли, этот быстрый совет поможет вам легко найти символические ссылки с помощью команды «найти».

Список симлинков в Linux

Чтобы вывести список всех символических ссылок или символических ссылок или программных ссылок в системе Linux, выполните:

  • / — представляет всю файловую систему.
  • -type – относится к типу файла.
  • l — ссылка на символическую ссылку.

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

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

Например, следующая команда выведет список всех программных ссылок в текущем каталоге:

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

Пример вывода:

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

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

Пример вывода:

Список символических ссылок в Linux

Как вы, возможно, заметили в выводах выше, команда find ищет символические ссылки в текущем каталоге и его подкаталогах.

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

Другой способ найти список символических ссылок в текущем каталоге:

Это рекурсивно перечислит все символические ссылки в текущем каталоге. Кроме того, он показывает фактические файлы, на которые указывает.

Символическая ссылка, также известная как программная ссылка, представляет собой своего рода указатель, указывающий на расположение папки или файла в вашей системе. Некоторые из этих ссылок создаются по умолчанию в вашей системе, тогда как вы сами можете создавать символические ссылки вручную для любых желаемых файлов или папок. Эта статья объяснит вам различные методы, с помощью которых вы можете перечислить все символические ссылки в Linux. Для этого руководства я использовал Linux Mint 20, но те же шаги будут работать в любом дистрибутиве Linux.

Три способа перечисления символических ссылок в Linux

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

Если вы хотите вывести список всех символических ссылок вашей текущей файловой системы в Linux Mint 20, вы можете сделать это, выполнив команду, показанную ниже:

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

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

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

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

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

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

Заключение

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

Похожие сообщения:

Карим Буздар

Об авторе: Карим Буздар имеет степень инженера в области телекоммуникаций и несколько сертификатов системного администратора. Как ИТ-инженер и технический автор, он пишет для различных веб-сайтов. Вы можете связаться с Каримом в LinkedIn

Поиск

Об этом сайте

Последние руководства

сообщить об этом объявлении

Какая команда linux показывает полный путь?

8 ответов 8

realpath доступен не во всех разновидностях Linux, но readlink должен быть.

Вышеизложенное должно сработать.

В качестве альтернативы, если у вас не установлено ни одно из вышеперечисленных приложений, вы можете сделать следующее, если у вас установлен Python 2.6 (или более поздней версии)

должно помочь.

man realpath показывает внизу, что он является частью «GNU coreutils», который, я почти уверен, всегда присутствует в Ubuntu, поэтому, хотя @IanStapletonCordasco говорит, что «realpath недоступен во всех вариантах Linux», он должен по крайней мере, быть доступным на всех версиях Ubuntu и Ubuntu, которые, как мне кажется, являются производными.

разновидности unix -> ll symLinkName

OSX -> readlink symLinkName

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

Вопрос касался именно полного/абсолютного пути, а не относительного пути (../../file.txt). Оба этих ответа дадут относительный путь.

Еще один способ просмотреть информацию — команда stat, которая покажет больше информации. Команда stat ~/.ssh на моем дисплее компьютера

Надеюсь, это может кому-нибудь помочь.

Вы можете использовать awk с системным вызовом readlink, чтобы получить эквивалент вывода ls с полными путями символических ссылок. Например:

Отобразится, например,

ls может сделать это без readlink; просто используйте ls -l . Это также вообще не работает, пытается сделать это для всего в каталоге (кроме ссылок), и если ваш ls настроен на использование цветов, awk полностью ломается. просто используйте найти . -maxdepth 1 -тип l -ls | awk ''

На моем Mac у меня есть следующее:

Например, создайте символическую ссылку на каталог: ln -s /Users/test/play/game game

Тогда, если я использую символическую ссылку для перехода к каталогу: cd game. Если я ввожу команду cmd: pwd, фактический каталог, в котором вы находитесь: ~

Если я по какой-то причине решу, что действительно хочу перейти в каталог: /Users/test/play/game, у меня есть псевдоним в моей настройке .bash_profile:

после использования вышеуказанного псевдонима cdp, за которым следует команда pwd, текущий каталог: /Users/test/play/game

Здесь я дам краткий обзор и анализ, но для тех, кто TL;DR, вот однострочник для bash, полезный для привязки рабочего каталога:

Или вы можете использовать любое другое имя файла вместо $0, чтобы определить его реальное местоположение.

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

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

И частью GNU coreutils является несколько очень полезных команд:

см. также в оригинале:

Также очень хорошей комбинацией в скриптах является использование имени каталога в скрипте

чтобы завершить это, вы можете использовать в скрипте

или получить и сохранить в переменной домашний каталог реального сценария и сохранить код, чтобы получить реальный путь к сценарию realscript.sh:

Где "$0" определяется как "я" в сценарии оболочки.

Чтобы все протестировать, мы помещаем симлинк в /home/test2/, меняем некоторые дополнительные вещи и запускаем/вызываем его из корневого каталога:

Пожалуйста, попробуйте сами написать измененные результаты :)

Обновление 2021, также есть команда:

readlink — вывести разрешенные символические ссылки или канонические имена файлов

ОПИСАНИЕ Обратите внимание, что realpath(1) предпочтительнее использовать для функций канонизации.

Читайте также: