Linux путь до исполняемого файла

Как найти исполняемый файл linux

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

Например, вывод для исполняемого процесса gopls (сервер go для VS Code):

Набрав в командной строке

whereis locates the binary, source and manual files for the specified command names. The supplied names are first stripped of leading pathname components and any (single) trailing extension of the form .ext (for example: .c) Prefixes of s. resulting from use of source code control are also dealt with. whereis then attempts to locate the desired program in the standard Linux places, and in the places specified by $PATH and $MANPATH.

Поиск в Linux с помощью команды find

Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.

Общий синтаксис

путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».

набор правил, по которым выполнять поиск.

* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.

Описание опций

Тип объекта поиска. Возможные варианты:

Также доступны логические операторы:

Оператор Описание
-a Логическое И. Объединяем несколько критериев поиска.
-o Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска.
-not или ! Логическое НЕ. Инвертирует критерий поиска.

Полный набор актуальных опций можно получить командой man find.

Примеры использования find

Поиск файла по имени

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.

2. Поиск файла по части имени:

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

в) Более компактный вид имеют регулярные выражения, например:

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

* данная команда найдет файлы, которые менялись более 60 дней назад.

find . -mmin -20 -mmin +10 -type f

* найти все файлы, которые менялись более 10 минут, но не более 20-и.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).

Читайте также:  Какую версию линукс выбрать для дома

find . -type f -newermt «2019-11-02 00:00»

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct «2019-09-09 07:50:00»

* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

По типу

Искать в текущей директории и всех ее подпапках только файлы:

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

2. Находим файлы, доступ к которым имеет только владелец:

Поиск файла по содержимому

find / -type f -exec grep -i -H «content» <> \;

* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.

С сортировкой по дате модификации

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name «sess_*» -type f -print -exec rm <> \;

* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.

2. Переименовать найденные файлы:

find . -name «sess_*» -type f -exec mv <> new_name \;

find . -name «sess_*» -type f | xargs -I ‘<>‘ mv <> new_name

3. Переместить найденные файлы:

find . -name «sess_*» -type f -exec mv <> /new/path/ \;

* в данном примере мы переместим все найденные файлы в каталог /new/path/.

4. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find /home/user/* -type d -exec chmod 2700 <> \;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

6. Передать найденные файлы конвееру (pipe):

find /etc -name ‘*.conf’ -follow -type f -exec cat <> \; | grep ‘test’

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

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

find /opt/project -type f -exec sed -i -e «s/test/production/g» <> \;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

Чистка по расписанию

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

Открываем на редактирование задания cron:

0 0 * * * /bin/find /tmp -mtime +14 -exec rm <> \;

* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.

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

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

Читайте также:  Путь до утилиты linux

Проверка наличия исполняемых файлов может быть выполнена с -perm (не рекомендуется) или -executable (рекомендуется, так как это учитывает ACL). Чтобы использовать -executable опцию:

если вы хотите найти только исполняемые файлы, а не каталоги с возможностью поиска, объедините их с -type f :

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

Я просто нашел другой вариант, который присутствует по крайней мере в GNU find 4.4.0:

Это должно работать даже лучше, потому что списки ACL также рассматриваются.

Я знаю, что в этом вопросе конкретно упоминается Linux, но, поскольку это первый результат в Google, я просто хотел добавить ответ, который искал (например, если вы — как и я — в данный момент — вынуждены вашим работодателем использовать не GNU) Система Linux).

Протестировано на macOS 10.12.5

У меня есть другой подход, в случае, если вы действительно хотите что-то сделать с исполняемыми файлами — и не обязательно фактически заставлять find фильтровать себя:

Я предпочитаю это, потому что это не зависит от -executable конкретной платформы; и он не полагается на то, -perm что является немного загадочным, немного специфичным для платформы, и, как написано выше, требует, чтобы файл был исполняемым для всех (не только для вас).

Это -type f важно, потому что каталоги * nix должны быть исполняемыми, чтобы их можно было обойти, и чем больше в команде запросов find , тем эффективнее будет ваша команда.

Во всяком случае, просто предлагая другой подход, поскольку * nix — это страна миллиардов подходов.

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

Как поклонник одного лайнера .

Использование ‘xargs’ для получения вывода команды find (использование print0 для обеспечения правильной обработки имен файлов с пробелами). Теперь у нас есть список исполняемых файлов, и мы предоставляем их один за другим в качестве параметра команды file. Затем grep для термина ASCII, чтобы игнорировать двоичные файлы. Пожалуйста, замените -executable в команде find тем, какой стиль вы предпочитаете (см. Предыдущие ответы) или что работает в вашей ‘NIX OS

Я требовал, чтобы выше было найти файлы с eval в сценариях, принадлежащих root, поэтому создал следующее, чтобы помочь найти слабые места для повышения привилегий, когда пользователь root запускает сценарии с небезопасными параметрами .

/.bashrc Сегодня вечером я создал функцию для поиска исполняемых файлов не по системному пути и не по каталогам:

Преимущество состоит в том, что он будет искать три дистрибутива Linux и установку Windows менее чем за секунду, где find команда занимает 15 минут.

Источник

Команда Linux which

В Linux команда which используется для поиска исполняемых файлов в файловой системе. Команда отображает абсолютный путь к местоположению файла.

Использование команды which в Linux

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

Читайте также:  Best linux command shell

Синтаксис

which [опции] [имя_программы]

Основные опции

-a, —all Выводить все совпадения в PATH , а не только первое -i, —read-alias Читать список псевдонимов из стандартного ввода

Переменная окружения PATH

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

Для просмотра содержимого переменной PATH используется команда echo с аргументом $PATH :

oleg@mobile:~:$ echo $PATH ”/home/oleg/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl” oleg@mobile:~:$ 

Примеры использования команды which в Linux

Полный путь к исполняемому файлу

Для примера найдём путь к исполняемому файлу команды traceroute :

oleg@mobile:~:$ which traceroute /usr/bin/traceroute oleg@mobile:~:$

Пути к нескольким исполняемым файлам

Пути к исполняемым файлам нескольких команд:

oleg@mobile:~:$ which locate kruler pacman /usr/bin/locate /usr/bin/kruler /usr/bin/pacman oleg@mobile:~:$

Справочная информация

Выводим справочную информацию по команде which :

Next: Which Program, Prev: (dir), Up: (dir) 'which': Show the full path of commands *************************************** The 'which' program shows the full path of (shell) commands. This file documents 'which' version 2.21, updated 20 March 2015. * Menu: * Which Program:: The 'which' Program * Invoking Which:: How to invoke 'which' * Option Summary:: Overview of commandline options * Return Value:: The return value of 'which' * Example:: Examples of invokation * Bugs:: Known bugs * See Also:: Related UNIX commands * Index:: Index

Заключение

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

Источник

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

Как в Linux узнать путь до исполняемого файла? В виндовс, например, на ярлыке или в bin/app.exe можно через свойство посмотреть Интересуюсь с целью создавать *.desktop ярлыки для заполнениями ими рабочего стола 🗔, так как способ «добавить в избранное» мне не подходит и получается рабочий стол пустой 😔

Для создания *.desktop нет необходимости указывать полный путь. Посмотрите примеры в /usr/share/applications

3 ответа 3

Я по факту могу найти приложение в диспетчере приложений, можно ли как-то оттуда взять этот путь? Или лучше и правильнее поискать путь к .exe в папках типа как в Windows —> C/Program FIles/app_folder/bin/app.exe ?

Внизу слева есть кнопка «Показать приложения», я про это имел в виду, оттуда бы как-то брать пути, там же ярлыки и их на рабочий стол хочу закидывать : )

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

pgrep | while read pid; do echo -ne "$pid\t"; readlink -f /proc/$pid/exe; done 

Например, вывод для исполняемого процесса gopls (сервер go для VS Code):

pgrep gopls | while read pid; do echo -ne "$pid\t"; readlink -f /proc/$pid/exe; done 30880 /mnt/drive2/home2/user/go/bin/gopls 

Набрав в командной строке

whereis locates the binary, source and manual files for the specified command names. The supplied names are first stripped of leading pathname components and any (single) trailing extension of the form .ext (for example: .c) Prefixes of s. resulting from use of source code control are also dealt with. whereis then attempts to locate the desired program in the standard Linux places, and in the places specified by $PATH and $MANPATH.

Источник

Оцените статью
Adblock
detector