Как показать полный путь к файлу или каталогу в терминале?
Мне нужно знать, как называется каталог, чтобы набрать его в терминале. Как мне получить доступ к именам каталогов?
В проводнике Windows раньше была строка заголовка с полным путем. Может кто-нибудь помочь мне разобраться, как увидеть полный путь к определенному файлу?
Чтобы отобразить полный путь к файлу в терминале, просто перетащите значок файла в терминал, и полный путь к файлу будет отображен в виде двух апострофов (одинарных кавычек). Это так просто.
Если вы используете nautilus для просмотра своих файлов, вы можете переключать панель навигации, нажимая Ctrl + L .
Если вы используете терминал, просто используйте, pwd чтобы узнать абсолютный путь вашего текущего местоположения.
find может сделать это довольно легко из терминала. Вот пример, в котором я ищу полный путь к файлу Taxes-2013.pdf:
sudo find / -name Taxes-2013.pdf
Я использую sudo, чтобы избежать вывода отказа в разрешении, который я мог бы получить с помощью find при поиске в корне дерева.
Если вы просто хотите указать путь и хотите удалить имя файла, вы можете использовать
sudo find / -name Taxes-2013.pdf | xargs -n1 dirname
Примечание. Если у вас есть привычка вводить пробелы в именах, это относится к вам.
Как показать полный путь к файлу или директории в терминале?
Единственное различие заключается в том, что версия в репозиториях Ubuntu, как правило, занимает день или два дольше для обновления.
Если вы устанавливаете с помощью менеджера надстроек (в отличие от перехода на сайт ) Я понимаю, что он устанавливается из репозиториев Ubuntu в любом случае из-за плагина ubufox.
2 ответа
Если вы используете nautilus для просмотра ваших файлов, вы можете переключить навигационную панель, нажав Ctrl + L.
Если вы используете терминал, просто используйте pwd, чтобы узнать абсолютный путь ваше текущее местоположение.
find может сделать это довольно удобно с терминала. Вот пример, в котором я ищу полный путь к файлу Taxes-2013.pdf:
sudo find / -name Taxes-2013.pdf
Я использую sudo, чтобы я мог избежать всех разрешений, запрещенных для вывода, которые я бы в противном случае мог получить с помощью find при поиске из корня дерева.
Если вы просто хотите имя пути и хотите, чтобы filename stripped off вы можете использовать
sudo find / -name Taxes-2013.pdf | xargs -n1 dirname
Примечание: если вы привыкли помещать пробелы в имена, это относится к вам.
Как в Bash узнать абсолютный путь до файла
Абсолютный путь содержит полный перечень папок, в которых находится файл, начиная от корня файловой системы.
Пример абсолютного пути: /home/mial/bin/myfile.txt
Преимущество абсолютного пути в том, что используя его можно обратиться к файлу из любой папки системы.
Относительный путь указывает на расположение файла относительно текущей папки. Примеры относительных путей:
- myfile.txt
- ./myfile.txt
- bin/myfile.txt
- ../../bin/myfile.txt
Преимущество относительного пути в том, что обычно он обозначается более короткой записью как например myfile.txt — означает одноимённый файл в текущей папке. Очевидно, что при смене рабочей директории относительный путь до файла станет другим.
В этой заметке будут рассмотрены несколько примеров того, как определить абсолютный путь до файла в текущей рабочей директории или любой другой, когда путь до файла указан как относительный путь.
realpath
Первый вариант — использовать команду realpath:
Привет вывода абсолютного пути:
Эта программа является частью coreutils.
По умолчанию эта программа преобразует символические ссылки (опция -P) и показывает расположение файла даже если он не существует (опция -m) — то есть эти опции указывать необязательно.
Фактически, по умолчанию работа программы сводится к тому, что к указанному аргументу она добавляет текущую рабочую папку, то есть можно узнать абсолютный путь даже до файла, который не существует:
Если вас это не устраивает, то используйте опцию -e — тогда если указанный файл не существует, то вместо вывода абсолютного пути будет показано сообщение об ошибке.
readlink
Аналогичную функцию выполняет и команда readlink.
Если вы хотите показать абсолютный путь только для существующих файлов, то используйте опцию -e:
Если вас не волнует, существует ли файл, то используйте опцию -f (не требует существование последнего компонента) или опцию -m (не требует существование какого-либо компонента пути):
realpath и readlink не найдены
UNIX системы — это не только многочисленные дистрибутивы Linux. В некоторых из них команды realpath и readlink могут отсутствовать. Если они отсутствуют и вы не хотите или не можете устанавливать дополнительные бинарные файлы, то выход всё равно есть.
Создайте файл, например, realpath.sh и скопируйте в него:
Этот же вариант в виде функции:
Вот эта же функция в продвинутом варианте — дополнительно обрабатывает ситуацию, когда директория не существует, а также если во вводе присутствуют '..' или '.'
Ещё один вариант в виде функции оболочки, который:
- не требует утилит (только cd и pwd)
- работает для директорий и файлов
- обрабатывает .. и .
- обрабатывает пробелы в директориях и именах файлов
- требует, чтобы файл или директория существовали
- ничего не возвращает, если ничего не существует
- может принимать абсолютные пути в качестве ввода (хотя ничего с ними не делает)
И ещё одна функция, записанная в одну строку и работающая в bash и zsh (другие не проверялись):
Может работать с несуществующими файлами.
Связанные статьи:
-
(50%) (50%) (50%) (50%) (50%) (RANDOM — 50%)
Рекомендуемые статьи:
2 Комментарии
Зачем использовать какие-то скрипты с pwd, readlink или realpath для ТЕКУЩЕЙ директории, если можно просто использовать pwd.
Или просто прочитай глобальную переменную $PWD:
Вдумайся, что такое ТЕКУЩАЯ директория! Это просто значение в переменной $PWD! "cd /home" и PWD='/home' это ОДНО И ТОЖЕ! Просто абстракция, благодаря которой ты думаешь, что "переходишь" из директории в директорию. А теперь включи мозг, и сообрази, как узнать путь к запускаемому скрипту, если запускаешь его не из ТЕКУЩЕЙ директории, а из, примеру, соседней?
Во-первых, вам надо что-то делать со своей манерой общения: даже если вы считаете себя самым умным и считаете что много знаете, разговаривать в таком тоне с вами никто не обязан.
А вы далеко не самый умный — показанные способы подходят на все случаи жизни, в том числе, когда получаем путь для файла, который является ссылкой. С помощью pwd или переменной это не сработает.
И самое главное, pwd не поможет, если нужно получить абсолютный путь не просто для файла в текущей папке, а для относительного пути (например, ../../bin/myfile.txt), а методы в статье предназначены именно для таких ситуаций, чтобы любые относительные пути преобразовывать в абсолютные.
Следующее отличие — если мы просто будем добавлять к имени файла вывод команды pwd, то мы никогда не узнаем, существует ли этот файл на самом деле или нет. В статье рассмотрены оба варианта: когда в случае отсутствия файла будет или не будет возвращена ошибка.
Ну и так далее. Ваш комментарий нелеп. Видимо, вы даже не понимаете, о чём говорится в статье.