- Узнать полный путь к файлу
- Как получить полный путь к файлу?
- В окнах вы можете: —
- Удерживайте клавишу shift и щелкните правой кнопкой мыши по файлу, который дает вам опцию с именем «Copy as Path»
- В Linux вы можете использовать команду: —
- Как получить полный путь к исполняемому файлу?
- Основы Linux от основателя Gentoo. Часть 1 (1/4): BASH, основы навигации
- Предисловие
- Об этом руководстве
- Введение в bash
- Оболочка
- А у вас запущен bash?
- О bash
- Использование «cd»
- Абсолютные пути
- Относительные пути
- Использование ..
- Примеры относительных путей
- Понимание .
- cd и домашняя директория
- Другие домашние директории пользователей
- Об авторах
- Daniel Robbins
- Chris Houser
- Aron Griffis
Узнать полный путь к файлу
Приветствую Сообщество!
Для создания загрузочной флешки при помощи dd нужен путь к образу.
Образ находится в папке /home/vaio/Загрузки
Стало интересно, как узнать путь через терминал? Нашел несколько команд, например, pwd
pwd debian-live-8.5.0-amd64-lxde-desktop.iso
Прошу подсказать с помощью какой команды можно через терминал узнать полный путь к файлу.
Если указывать такой путь в dd, то на выходе получаю Нет такого файла или каталога
потому, что файл находится в /home/vaio/Загрузки/debian-live-8.5.0-amd64-lxde-desktop.iso, а не в /home/vaio/debian-live-8.5.0-amd64-lxde-desktop.iso как ты написал. Ты либо вывод перепечатывай правильно, либо копируй, либо используй подстановку команд:
find или locate
find / -type f -name ‘debian-live-8.5.0-amd64-lxde-desktop.iso’ -exec dd if=<> of=. ;\
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=.
Когда я действительно находился в папке, где лежит образ, то все получилось.
Т.е. образ на флешку записал.
Но все же вопрос остается открытым:
Как через терминал узнать путь к произвольному файлу, зная его название?
Как через терминал узнать путь к произвольному файлу, зная его название?
тебе уже ответили, man find
Как через терминал узнать путь к произвольному файлу, зная его название?
find / -type f -name ‘название’
в дополнение к find, есть шустрый mlocate, который ищет по индексу.
Ребята, благодарю за ответы!
И прошу еще немного терпения и внимания.
find / -type f -name debian-live-8.5.0-amd64-lxde-desktop.iso
Вот такой вывод.
sudo find / -type f -name debian-live-8.5.0-amd64-lxde-desktop.iso 2>/dev/null
Чтобы искать по индексу — нужно его сначала построить, а потом регулярно обновлять. Есть лишние иопсы? 🙂
Обновляется индекс по крону.
Чтобы найти файл с помощью find, обычно тратится больше иопсов, чем тратится на обновление базы mlocate.
Я принимаю бессилие перед этой задачей.
Буду делать как раньше и экономить иопсы.
Всем благодарен!
Источник
Как получить полный путь к файлу?
Есть ли простой способ распечатать полный путь file.txt ?
Я полагаю, вы используете Linux.
Я нашел утилиту под названием realpath в coreutils 8.15.
Согласно комментариям @ styrofoam-fly и @ Arch-standton, только realpath не проверяет существование файла, для решения этой проблемы добавьте аргумент e : realpath -e file
Следующее обычно делает трюк:
Я знаю есть более простой способ, но черт возьми, если я смогу это найти .
Если вы находитесь в том же каталоге, что и файл:
Замените file.txt вашим целевым именем файла.
В окнах вы можете: —
Удерживайте клавишу shift и щелкните правой кнопкой мыши по файлу, который дает вам опцию с именем «Copy as Path»
В Linux вы можете использовать команду: —
- realpath yourfile , чтобы получить полный путь к файлу, как предлагают многие.
Я знаю, что это старый вопрос сейчас, но просто добавить к информации здесь:
Команду Linux which можно использовать для поиска пути к файлу командного файла, т.е.
Вы можете использовать скрипт fpn (полный путь) :
Работает на Mac, Linux, * nix:
Это даст вам CSV всех файлов в текущем каталоге:
Вывод этого может быть легко скопирован в список python или любую подобную структуру данных.
В Mac OS X я заменил утилиты, поставляемые с операционной системой, и заменил их более новой версией coreutils. Это позволяет вам получать доступ к таким инструментам, как readlink -f (для абсолютного пути к файлам) и realpath (абсолютный путь к каталогам) на вашем Mac.
Версия Homebrew добавляет «G» (для GNU Tools) перед именем команды — так что эквивалентами становятся greadlink -f FILE и grealpath DIRECTORY .
Инструкции по установке coreutils/GNU Tools на Mac OS X с помощью Homebrew можно найти в этот раздел StackExchange .
NB. Команды readlink -f и realpath должны работать «из коробки» для пользователей не-Mac Unix.
Это объяснение того, что происходит в @ ZeRemz’s ответ :
- Этот скрипт получает относительный путь в качестве аргумента «$1»
- Затем мы получаем dirname часть этого пути (вы можете передать либо dir, либо файл в этот скрипт): dirname «$1»
- Затем мы cd «$(dirname «$1») в этот относительный каталог
- && pwd -P и получите абсолютный путь к нему. Опция -P позволит избежать всех символических ссылок
- После этого мы добавляем базовое имя к абсолютному пути: $(basename «$1»)
- В качестве последнего шага мы echo это
В аналогичном сценарии я запускаю скрипт cshell из другого места. Для установки правильного абсолютного пути скрипта, чтобы он работал только в указанном каталоге, я использую следующий код:
$0 хранит точную строку, как был выполнен скрипт.
Например, если скрипт был запущен следующим образом: $> ../../test/test.csh , $script_dir будет содержать /home/abc/sandbox/v1/../../test
Это наивно, но я должен был сделать это, чтобы быть POSIX-совместимым. Требуется разрешение на CD в каталог файла.
Вы можете сохранить это в вашем «Shell.rc» или просто положить в консоль
псевдоним ap = «absolute_path»
Это сработало очень хорошо для меня. Он не зависит от файловой системы (pro/con в зависимости от необходимости), поэтому он будет быстрым; и он должен быть переносимым для большинства * NIX. Предполагается, что переданная строка действительно относится к PWD, а не к какому-либо другому каталогу.
Вы можете использовать эту функцию. Если имя файла задано без относительного пути, то предполагается, что оно присутствует в текущем рабочем каталоге:
Использование с относительным путем:
С пробелами в имени файла:
В Mac указанном ниже строке работает. Не нужно добавлять какие-либо необычные линии.
Источник
Как получить полный путь к исполняемому файлу?
Пишу скрипт, он определяет какой архитектуры исполняемый файл и подставляет ему нужные библиотеки.
При помощи команды
Как найти указанный в параметре исполняемый файл к которому не указан полный путь по переменной окружения?
Перемещено leave из talks
Дык, никак. А кто искать то будет? Пушкин?
Если скрипты в строго определенных директориях, то пропиши эти пути в самом скрипте.
Дык, никак. А кто искать то будет? Пушкин?
bash же как то ищет.
так он и ищет по путям в PATH
Если скрипты в строго определенных директориях, то пропиши эти пути в самом скрипте.
Программу предполагается использовать примерно так:
есть ли готовый парсер на bash для разбора этой переменной и поиска?
А как же революция?
Я о том, что если «программы» могут лежать только в заранее заданной директории, то ты внутри скрипта можещь написать типа blabla /mydetermineddir/$1 [another params]
зачем тебе это вообще могло понадобиться?
Тебе же первый ответивший дал правильный ответ.
Смотри:
readelf -h $(which wine) | grep ELF32
Класс: ELF32
есть ли готовый парсер на bash для разбора этой переменной и поиска?
ааааааааааааааа, кто там рядом живёт, стукните его по голове чем-нибудь тяжёлым. 1111
он же пишет, что ему нужен поиск вне PATH, which ничего не найдет
Мне всего 160км.
Как же вы задолбали!
pet / # mkdir /1
pet / # cp $(which wine) /1
pet / # ls /1
wine
pet / # echo $
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/6.2.0:/root/.local/bin:/root/bin
pet / # readelf -h $(env PATH=«$
Класс: ELF32
which он как яндекс — найдёт всё, что нужно, главное правильно спросить
Ты в Архызе сейчас?
че то тыы какую то пургу намел. Если добавить директорию в PATH, есен х, все отыщется. Че сказать то хотел? Зачем ты там с каким то копированием че-то делал?
Надо было с mv, ты прав
pet / # mv /usr/bin/wine /usr/bin/wine_
pet / # env PATH=«$
/1/wine
Какая разница, какое это отношение к вопросу имеет?
Вот именно это сказать и хотел:
Если добавить директорию в PATH, есен х, все отыщется.
Зачем ты там с каким то копированием че-то делал?
Каталог надо было вперёд ставить.
pet / # mv /usr/bin/wine_ /usr/bin/wine
pet / # ls /usr/bin/wine
/usr/bin/wine
pet / # env PATH=«/1:$
/1/wine
Какая разница, какое это отношение к вопросу имеет?
Не, непонято, если исходить из вопроса ТС, как найти скрипт, которого нет в PATH. Ладно, забей, мне, видимо, не понять.
Скрипт, которого нет в $
Если при запуске задавать полное имя скрипта, то каталог в котором этот скрипт лежит считай известен и его можно добавить в переменную PATH
Что ещё тебе не понятно? Не стесняйся, спрашивай.
pet / # cat /1/bzzz.sh
#! /bin/bash
pwd
echo $(dirname $0)
pet / # env PATH=/1 /bin/bash bzzz.sh
/
/1/bzzz.sh: line 4: dirname: команда не найдена
pet / # env PATH=/1:$
/
.
pet / # bzzz.sh
bash: bzzz.sh: команда не найдена
я об этом и сказал
Да, я знаю.
Мне непонятно, что тебе не нравится в запуске which с новой переменной PATH для поиска?
Просто, как бы, не совсем соответствует вопросу. Может я вопрос неверно понял, хз. Ладно, проехали.
В чем, собственно, проблема? %)
Но ведь пользователь введёт не полный путь к исполняемому файлу, а как чаще всего бывает просто его имя.
В этом случае исполняемый файл лежит в каталоге, содержащемся в PATH. Иначе надо вводить полный путь абсолютный, или относительный (что легко через dirname привести к первой задаче).
Как бы других-то способов нет и усложнять ничего не надо.
Абсолютно согласен, всё что можно было уже сказать по теме, в этой теме сказал самый первый комментатор 😀
PS: тему твою удалили про разум. ИМХО нет, чёткого критерия не будет.
Источник
Основы Linux от основателя Gentoo. Часть 1 (1/4): BASH, основы навигации
Предисловие
Об этом руководстве
Добро пожаловать в первую из четырех частей обучающего руководства по основам Linux, разработанного чтобы подготовить вас к сдаче экзамена Linux Professional Institute 101. В нем вы познакомитесь с bash (стандартной оболочкой командного интерпретатора в Linux), узнаете о большинстве возможностей таких стандартных команд Linux, как ls, cp и mv, разберетесь в инодах, жестких и символьных ссылках, и многом другом. К концу этого руководства у вас сформируется некий фундамент знаний, и вы будете готовы к изучению основ администрирования Linux. К концу всего курса (8 частей), у вас будет достаточно навыков, чтобы стать системным администратором Linux и пройти сертификацию LPIC Level 1 от Linux Professional Institute, если конечно захотите.
Данная первая часть руководства отлично подходит для новичков в Linux, а также для тех пользователей, кто хочет освежить или улучшить свое понимание фундаментальных концепций Linux, таких, как копирование и перемещение файлов, создание символических и жестких ссылок, а также стандартных команд обработки текста, включая конвейеры и перенаправления. По ходу мы также дадим множество советов, подсказок и трюков, что делает это руководство насыщенным и практичным, даже для тех, кто уже имеет солидный опыт работы с Linux. Для начинающих большая часть этого материала будет новой, но более продвинутые пользователи Linux найдут это руководство отличным средством, чтобы разложить свои фундаментальные навыки по полочкам у себя в голове.
Тем, кто изучал первую версию этого руководства с целью, отличной от подготовки к экзамену LPI, возможно, что вам не нужно его перечитывать. Однако, тем же, кто планирует сдавать экзамены, стоит обязательно просмотреть данную исправленную версию.
Введение в bash
Оболочка
Если вы уже использовали Linux ранее, то наверняка знаете, что после входа в систему вас приветствует приглашение, которое выглядит примерно так:
На практике приглашение, которое вы видите, может немного отличаться. Например, оно может содержать имя хоста, имя текущей рабочей директории, или все вместе. Не зависимо от того, как выглядит ваше приглашение, есть одна несомненная вещь: программа, которая выводит это приглашение, называется оболочка интерпретатора команд (от англ. shell — оболочка, он же командная строка или терминал — прим. пер.), и, вероятнее всего, вашей командной оболочкой будет ‘bash’.
А у вас запущен bash?
Вы можете убедиться, что используете bash, набрав:
Если строчка выше выдает ошибку, или ответ не соответствует, возможно, что вы запустили другую оболочку. В этом случае большая часть этого руководства все еще будет полезна, но было бы значительно лучше для вас переключиться на bash, ради подготовки к экзамену 101.
О bash
Bash — это акроним от Bourne-again-shell, от англ. «ещё-одна-командная-оболочка-Борна» или «рождённая-вновь-командная оболочка» (тут игра слов Bourne/born — прим. пер.), и является оболочкой по умолчанию для большинства Linux-систем. Задача оболочки получать от вас команды, через которые вы взаимодействуете с Linux-системой. После того, как вы закончили ввод команд, вы можете выйти из оболочки (exit) или закончить сеанс (logout), в этом случае вы увидите приглашение входа в систему.
Кстати, вы также можете выйти из оболочки bash нажав control-D в приглашении.
Использование «cd»
Вы, возможно, уже обнаружили, что пялиться на приглашение bash — не самое впечатляющее занятие в мире. Ну что ж, давайте узнаем как путешествовать по нашей файловой системе. В приглашении введите пожалуйста следующую команду (без $):
Вы только что сообщили bash, что хотите работать в директории /, также известной, как корневая; все директории в системе имеют форму дерева, и / является его вершиной, т.е. корнем (в информатике деревья растут наоборот, корень вверху, а ветки спускаются вниз — прим. пер.). cd устанавливает директорию, в которой вы в данный момент работаете, также известную как «текущая рабочая директория».
Чтобы узнать текущую рабочую директорию в bash нужно набрать:
В примере с cd, аргумент / называется путь. Он сообщает cd куда мы хотим отправиться. В частности, аргумент / это абсолютный путь, что значит, что он задает расположение относительно корня дерева файловой системы.
Абсолютные пути
Ниже несколько из них:
/dev
/usr
/usr/bin
/usr/local/bin
Как можно заметить, у всех абсолютных путей есть одна общая черта, они начинаются с /. Указывая, допустим, /usr/local/bin в качестве аргумента для cd, мы сообщаем, что хотим попасть в / директорию, затем в usr директорию внутри нее, и так далее в local и bin, вниз по дереву. Абсолютные пути всегда отсчитываются начиная от / сперва.
Относительные пути
Другой тип пути называется «относительный путь». bash, cd, и другие команды всегда интерпретируют их относительно текущей директории. Относительные пути НИКОГДА не начинаются с /. Так, если мы сначала переместимся в /usr:
То, затем мы можем использовать относительный путь local/bin, чтобы попасть в директорию /usr/local/bin:
Использование ..
Относительные пути могут также содержать одну или более «..» директории. Директория «..» специальная; она указывает на родительскую директорию. Так, продолжая с примера выше:
Как видно, наша текущая директория теперь /usr/local. Мы смогли переместиться «назад» на одну директорию относительно текущей, где были до того.
Кроме того, мы также можем использовать «..» в существующем относительном пути, позволяющем нам переместиться в директорию «рядом» с той, в которой находимся:
Примеры относительных путей
Относительные пути могут быть чуточку более сложными. Ниже несколько примеров, попробуйте самостоятельно догадаться, где вы окажитесь после набора каждой из этих команд.
А теперь наберите их и проверьте свои предположения. 😉
Понимание .
Перед тем как мы закончим изучение cd, есть несколько моментов, которые необходимо прояснить. Во-первых, есть еще одна специальная директория «.», которая означает «текущая директория». Хотя она и не используется с командой cd, но часто используется для выполнения программы из текущей директории, как в следующем примере:
В данном случае будет запущена исполняемая программа myprog, находящаяся в текущей рабочей директории.
cd и домашняя директория
Если бы мы хотели переместиться в нашу домашнюю директорию, то могли бы набрать:
Без каких либо аргументов cd переместит в вашу домашнюю директорию, которая будет /root для суперпользователя, или обычно /home/username (где username — имя пользователя в системе — прим.пер.) для любого другого пользователя. Но, что если мы хотим указать файл в нашей домашней директории? Может быть мы хотим передать путь к файлу в качестве аргумента нашей программе myprog. Если файл расположен в нашей домашней директории, мы можем набрать:
Однако, использования абсолютного пути вроде этого, не всегда удобно. К счастью, мы можем использовать символ
(тильда), чтобы проделать то же самое:
Другие домашние директории пользователей
Bash воспримет одиночную
как указатель на вашу домашнюю директорию, но вы также можете использовать её для указания на домашние директории других пользователей. Например, если мы хотели сослаться на файл под названием fredsfile.txt в домашней директории пользователя fred, то могли бы набрать:
Об авторах
Daniel Robbins
Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.
Chris Houser
Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.
Aron Griffis
Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».
Источник