Как узнать путь до файла linux
Перейти к содержимому

Как узнать путь до файла linux

  • автор:

Узнать полный путь к файлу

Приветствую Сообщество!
Для создания загрузочной флешки при помощи dd нужен путь к образу.
Образ находится в папке /home/vaio/Загрузки
Стало интересно, как узнать путь через терминал? Нашел несколько команд, например, pwd
pwd debian-live-8.5.0-amd64-lxde-desktop.iso

/home/vaio 

Такой же вывод и у readlink
readlink -m debian-live-8.5.0-amd64-lxde-desktop.iso

/home/vaio/debian-live-8.5.0-amd64-lxde-desktop.iso

Если указывать такой путь в dd, то на выходе получаю Нет такого файла или каталога

Прошу подсказать с помощью какой команды можно через терминал узнать полный путь к файлу.

mfch
12.07.16 15:33:44 MSK

Если указывать такой путь в dd, то на выходе получаю Нет такого файла или каталога

потому, что файл находится в /home/vaio/Загрузки/debian-live-8.5.0-amd64-lxde-desktop.iso, а не в /home/vaio/debian-live-8.5.0-amd64-lxde-desktop.iso как ты написал. Ты либо вывод перепечатывай правильно, либо копируй, либо используй подстановку команд:

dd if="`readlink -m debian-live-8.5.0-amd64-lxde-desktop.iso`" of=. 

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

readlink -m debian-live-8.5.0-amd64-lxde-desktop.iso 

то следовательно ты уже находишься в /home/vaio/Загрузки, тебе достаточно писать

dd if=debian-live-8.5.0-amd64-lxde-desktop.iso of=. 

kostik87 ★★★★★
( 12.07.16 15:42:26 MSK )

find или locate

anonymous
( 12.07.16 16:13:30 MSK )

find / -type f -name ‘debian-live-8.5.0-amd64-lxde-desktop.iso’ -exec dd if=<> of=. ;\

slowpony ★★★★
( 12.07.16 16:56:21 MSK )
Ответ на: комментарий от kostik87 12.07.16 15:42:26 MSK

kostik87 , спасибо за ответ!

Ты либо вывод перепечатывай правильно, либо копируй,

Я и копировал вывод.

Вот это интересно. Буду знать.

только непонятно зачем тебе полный путь, если ты набираешь просто
readlink -m debian-live-8.5.0-amd64-lxde-desktop.iso

Так я думал, что таким образом узнаю, где находится искомый образ.
Как надо было набрать, чтобы узнать путь?

то следовательно ты уже находишься в /home/vaio/Загрузки, тебе достаточно писать
dd if=debian-live-8.5.0-amd64-lxde-desktop.iso of=.

Когда я действительно находился в папке, где лежит образ, то все получилось.
Т.е. образ на флешку записал.

Но все же вопрос остается открытым:
Как через терминал узнать путь к произвольному файлу, зная его название?

mfch
( 12.07.16 21:18:09 MSK ) автор топика
Ответ на: комментарий от mfch 12.07.16 21:18:09 MSK

Как через терминал узнать путь к произвольному файлу, зная его название?

тебе уже ответили, man find

anonymous
( 13.07.16 03:11:06 MSK )
Ответ на: комментарий от mfch 12.07.16 21:18:09 MSK

Как через терминал узнать путь к произвольному файлу, зная его название?

find / -type f -name ‘название’

slowpony ★★★★
( 13.07.16 13:20:24 MSK )

в дополнение к find, есть шустрый mlocate, который ищет по индексу.

Deleted
( 13.07.16 13:36:56 MSK )
Ответ на: комментарий от slowpony 13.07.16 13:20:24 MSK

Ребята, благодарю за ответы!
И прошу еще немного терпения и внимания.
find / -type f -name debian-live-8.5.0-amd64-lxde-desktop.iso

find: `/proc/1025/task/1065/fdinfo': Отказано в доступе find: `/proc/1025/task/1065/ns': Отказано в доступе find: `/proc/1025/task/1066/fd': Отказано в доступе find: `/proc/1025/task/1066/fdinfo': Отказано в доступе find: `/proc/1025/task/1066/ns': Отказано в доступе find: `/proc/1025/task/1067/fd': Отказано в доступе find: `/proc/1025/task/1067/fdinfo': Отказано в доступе find: `/proc/1025/task/1067/ns': Отказано в доступе find: `/proc/1025/task/1068/fd': Отказано в доступе find: `/proc/1025/task/1068/fdinfo': Отказано в доступе find: `/proc/1025/task/1068/ns': Отказано в доступе find: `/proc/1025/task/1069/fd': Отказано в доступе find: `/proc/1025/task/1069/fdinfo': Отказано в доступе find: `/proc/1025/task/1069/ns': Отказано в доступе find: `/proc/1025/task/1070/fd': Отказано в доступе find: `/proc/1025/task/1070/fdinfo': Отказано в доступе find: `/proc/1025/task/1070/ns': Отказано в доступе find: `/proc/1025/task/1071/fd': Отказано в доступе find: `/proc/1025/task/1071/fdinfo': Отказано в доступе find: `/proc/1025/task/1071/ns': Отказано в доступе find: `/proc/1025/task/1072/fd': Отказано в доступе find: `/proc/1025/task/1072/fdinfo': Отказано в доступе find: `/proc/1025/task/1072/ns': Отказано в доступе find: `/proc/1025/task/1073/fd': Отказано в доступе find: `/proc/1025/task/1073/fdinfo': Отказано в доступе find: `/proc/1025/task/1073/ns': Отказано в доступе find: `/proc/1025/task/1074/fd': Отказано в доступе find: `/proc/1025/task/1074/fdinfo': Отказано в доступе find: `/proc/1025/task/1074/ns': Отказано в доступе find: `/proc/1025/task/1075/fd': Отказано в доступе find: `/proc/1025/task/1075/fdinfo': Отказано в доступе find: `/proc/1025/task/1075/ns': Отказано в доступе find: `/proc/1025/task/1076/fd': Отказано в доступе find: `/proc/1025/task/1076/fdinfo': Отказано в доступе find: `/proc/1025/task/1076/ns': Отказано в доступе find: `/proc/1025/task/1077/fd': Отказано в доступе find: `/proc/1025/task/1077/fdinfo': Отказано в доступе find: `/proc/1025/task/1077/ns': Отказано в доступе find: `/proc/1025/task/1078/fd': Отказано в доступе find: `/proc/1025/task/1078/fdinfo': Отказано в доступе find: `/proc/1025/task/1078/ns': Отказано в доступе 

Вот такой вывод.

mfch
( 13.07.16 13:58:46 MSK ) автор топика
Ответ на: комментарий от mfch 13.07.16 13:58:46 MSK

sudo find / -type f -name debian-live-8.5.0-amd64-lxde-desktop.iso 2>/dev/null

slowpony ★★★★
( 13.07.16 14:39:09 MSK )
Ответ на: комментарий от Deleted 13.07.16 13:36:56 MSK

Чтобы искать по индексу — нужно его сначала построить, а потом регулярно обновлять. Есть лишние иопсы? 🙂

slowpony ★★★★
( 13.07.16 14:40:37 MSK )
Ответ на: комментарий от slowpony 13.07.16 14:40:37 MSK

Обновляется индекс по крону.
Чтобы найти файл с помощью find, обычно тратится больше иопсов, чем тратится на обновление базы mlocate.

Deleted
( 13.07.16 14:44:31 MSK )
Ответ на: комментарий от slowpony 13.07.16 14:40:37 MSK

Я принимаю бессилие перед этой задачей.
Буду делать как раньше и экономить иопсы.
Всем благодарен!

Как в Bash узнать абсолютный путь до файла

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

Пример абсолютного пути: /home/mial/bin/myfile.txt

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

Относительный путь указывает на расположение файла относительно текущей папки. Примеры относительных путей:

Преимущество относительного пути в том, что обычно он обозначается более короткой записью как например myfile.txt — означает одноимённый файл в текущей папке. Очевидно, что при смене рабочей директории относительный путь до файла станет другим.

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

realpath

Первый вариант — использовать команду realpath:

realpath timeout

Привет вывода абсолютного пути:

/home/mial/bin/timeout

Эта программа является частью coreutils.

По умолчанию эта программа преобразует символические ссылки (опция -P) и показывает расположение файла даже если он не существует (опция -m) — то есть эти опции указывать необязательно.

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

realpath not_exist /home/mial/bin/not_exist

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

readlink

Аналогичную функцию выполняет и команда readlink.

Если вы хотите показать абсолютный путь только для существующих файлов, то используйте опцию -e:

readlink -e timeout /home/mial/bin/timeout

Если вас не волнует, существует ли файл, то используйте опцию -f (не требует существование последнего компонента) или опцию -m (не требует существование какого-либо компонента пути):

readlink -f not_exist /home/mial/bin/not_exist

realpath и readlink не найдены

UNIX системы — это не только многочисленные дистрибутивы Linux. В некоторых из них команды realpath и readlink могут отсутствовать. Если они отсутствуют и вы не хотите или не можете устанавливать дополнительные бинарные файлы, то выход всё равно есть.

Создайте файл, например, realpath.sh и скопируйте в него:

#! /bin/sh echo "$(cd "$(dirname "$1")"; pwd -P)/$(basename "$1")"
bash realpath.sh ФАЙЛ

Этот же вариант в виде функции:

function realpath < echo $(cd $(dirname $1); pwd)/$(basename $1); >

Вот эта же функция в продвинутом варианте — дополнительно обрабатывает ситуацию, когда директория не существует, а также если во вводе присутствуют ‘..’ или ‘.’

get_abs_filename() < # $1 : relative filename filename=$1 parentdir=$(dirname "$") if [ -d "$" ]; then echo "$(cd "$" && pwd)" elif [ -d "$" ]; then echo "$(cd "$" && pwd)/$(basename "$")" fi >

Ещё один вариант в виде функции оболочки, который:

  • не требует утилит (только cd и pwd)
  • работает для директорий и файлов
  • обрабатывает .. и .
  • обрабатывает пробелы в директориях и именах файлов
  • требует, чтобы файл или директория существовали
  • ничего не возвращает, если ничего не существует
  • может принимать абсолютные пути в качестве ввода (хотя ничего с ними не делает)
function abspath() < # генерирует абсолютный путь из относительного # $1 : относительное имя файла # возвращает : абсолютный путь if [ -d "$1" ]; then # dir (cd "$1"; pwd) elif [ -f "$1" ]; then # file if [[ $1 = /* ]]; then echo "$1" elif [[ $1 == */* ]]; then echo "$(cd "$"; pwd)/$" else echo "$(pwd)/$1" fi fi >

И ещё одна функция, записанная в одну строку и работающая в bash и zsh (другие не проверялись):

abspath () < case "$1" in /*)printf "%s\n" "$1";; *)printf "%s\n" "$PWD/$1";; esac; >

Может работать с несуществующими файлами.

Связанные статьи:

  • Лучшие терминальные мультиплексные инструменты (50%)
  • Как просмотреть или отредактировать метаданные pdf или изображениях из командной строки Linux (50%)
  • Как установить 7zip на Linux (50%)
  • Работа с архивами в Linux (50%)
  • Какие есть полезные инструменты с интерфейсом командной строки для системных администраторов Linux (50%)
  • Как удалить образы, контейнеры и тома Docker (RANDOM — 50%)

Рекомендуемые статьи:

2 Комментарии

basarga 23.01.2021 в 10:50

Зачем использовать какие-то скрипты с pwd, readlink или realpath для ТЕКУЩЕЙ директории, если можно просто использовать pwd. pwd /home/bestoloch Или просто прочитай глобальную переменную $PWD: echo $PWD /home/bestoloch Вдумайся, что такое ТЕКУЩАЯ директория! Это просто значение в переменной $PWD! «cd /home» и PWD=’/home’ это ОДНО И ТОЖЕ! Просто абстракция, благодаря которой ты думаешь, что «переходишь» из директории в директорию. А теперь включи мозг, и сообрази, как узнать путь к запускаемому скрипту, если запускаешь его не из ТЕКУЩЕЙ директории, а из, примеру, соседней?

Alexey (Автор записи) 23.01.2021 в 11:25

Во-первых, вам надо что-то делать со своей манерой общения: даже если вы считаете себя самым умным и считаете что много знаете, разговаривать в таком тоне с вами никто не обязан. А вы далеко не самый умный — показанные способы подходят на все случаи жизни, в том числе, когда получаем путь для файла, который является ссылкой. С помощью pwd или переменной это не сработает. И самое главное, pwd не поможет, если нужно получить абсолютный путь не просто для файла в текущей папке, а для относительного пути (например, ../../bin/myfile.txt), а методы в статье предназначены именно для таких ситуаций, чтобы любые относительные пути преобразовывать в абсолютные. Следующее отличие — если мы просто будем добавлять к имени файла вывод команды pwd, то мы никогда не узнаем, существует ли этот файл на самом деле или нет. В статье рассмотрены оба варианта: когда в случае отсутствия файла будет или не будет возвращена ошибка. Ну и так далее. Ваш комментарий нелеп. Видимо, вы даже не понимаете, о чём говорится в статье.

Как узнать путь до исполняемого файла в Linux?

suffix_ixbt

В линукс обычно исполняемые файлы лежат в /bin, /sbin, /usr/bin, /usr/sbin.
Иногда в /usr/local/bin, /usr/local/sbin.
Еще некоторый софт ставит себя в /opt и там в собственном подкаталоге создает похожую иерархию каталогов.
Найти программу по имени можно с помощью команды whereis
Или с помощью find / -name
find будет работать дольше т.к. будет сканировать все что сможет. whereis сканирует только каталоги указанные в PATH, поэтому работает гораздо быстрей.

Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 1

DamianLewis

Damian Lewis @DamianLewis
Если только для ярлыков надо, можно посмотреть через системный монитор в разделе свойства процесса.
Скрин 1

60ec424239e39264282206.png

Также можно глянуть через htop в терминале.

Скрин 2

60ec426cb850d490467341.png

Скорее есть есть еще куча других вариантов, но я обходился только двумя этими

Форум русскоязычного сообщества Ubuntu

Страница сгенерирована за 0.068 секунд. Запросов: 25.

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *