🐧 Получение абсолютного пути к файлу на Linux |

🐧 Получение абсолютного пути к файлу на Linux

Мануал

Вы можете получить полный путь к текущему каталогу с помощью команды pwd:

pwd

Но как получить абсолютный путь к файлу в системах Linux?

Существует несколько способов вывести полный путь к файлам:

  • readlink
  • realpath
  • найти
  • комбинирование ls и pwd

Позвольте мне показать вам эти команды по очереди.

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

Команда readlink предназначена для разрешения символических ссылок.

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

readlink -f filename

Вот пример:

readlink -f sample.txt
/home/itsecforu/sample.txt

Использование команды для получения полного пути к файлу

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

Помимо прочего, она может показать полный путь к файлу.

realpath filename

Взгляните на этот пример:

realpath sample.txt
/home/itsecforu/sample.txt

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

Вы можете заставить его не следовать за символической ссылкой:

realpath -s filename

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

realpath linking-park
/home/itsecforu/Documents/ubuntu-commands.md
realpath -s linking-park

Используем команду find для получения абсолютного пути к файлу

Вот в чем дело с командой find.

Все относительно каталога, который вы указываете для поиска.

Если вы укажете ей ., она покажет относительный путь.

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

Используйте подстановку команд с командой find следующим образом:

find $(pwd) -name filename

Вы можете запустить команду для поиска полного пути к одному файлу:

find $(pwd) -name sample.txt
/home/itsecforu/sample.txt

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

find $(pwd) -name "*.pdf"
/home/itsecforu/Documents/eBooks/think-like-a-programmer.pdf
/home/itsecforu/Documents/eBooks/linux-guide.pdf
/home/itsecforu/Documents/eBooks/absolute-open-bsd.pdf
/home/itsecforu/Documents/eBooks/theory-of-fun-for-game-design.pdf
/home/itsecforu/Documents/eBooks/Ubuntu 1804 english.pdf
/home/itsecforu/Documents/eBooks/computer_science_distilled_v1.4.pdf
/home/itsecforu/Documents/eBooks/the-art-of-debugging-with-gdb-and-eclipse.pdf

Выведем полный путь с помощью команды ls

Этот способ немного сложный и запутанный.

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

ls -ld $PWD/*

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

ls -ld $PWD/*
-r--rw-r-- 1 itsecforu itsecforu 0 Jul 27 16:57 /home/itsecforu/test/file2.txt
drwxrwxr-x 2 itsecforu itsecforu 4096 Aug 22 16:58 /home/itsecforu/test/new

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

ls -l $PWD/filename

Не самое чистое решение, но оно работает.

$ ls -l $PWD/sample.txt 
-rw-r--r-- 1 itsecforu itsecforu 12813 Sep  7 11:50 /home/itsecforu/sample.txt

Заключение

Мы рассмотрели четыре различных способа получения полного пути к файлу в Linux.

Команды find и ls являются обычными, в то время как realpath и readlink едва ли известны многим пользователям Linux.

Всегда полезно узнавать что-то новое, не так ли?

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Vlad

    U best of the best

    Ответить
  2. egor

    привет всем
    зачем нужны примеры типа -> ls -ld $PWD/*
    интереснее сразу пошарить за флагами -l -a

    Ответить
    1. cryptoparty автор

      Привет, а почему нет?)

      Ответить