Как найти бинарник в linux

Обновлено: 05.07.2024

Графическим интерфейсом способен пользоваться каждый. Windows нас давно к тому приучила, отодвинув на задний план консольные возможности. Однако порой надо найти нужный файл, который, как оказывается, запрятан неизвестно куда. И здесь проводник часто просто не способен ничем помочь. Сегодня мы разбираем самые полезные команды поиска и локализации файлов и директорий в Кали. Есть немало способов, с помощью которых можно найти файл или папку в Кали Линукс (впрочем, как и в других версиях и сборках Линукс-систем), которые в Windows, например, недоступны.

Найти найти файл или папку в Кали Линукс: locate

Начинаем с самой популярной команды (локейт), которая под это и заточена.

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

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

locate -b firefox

Вот оба аргумента в одной команде:

найти файл в пределах первых пяти

Эти условности, однако, можно обойти. Так вот, чтобы найти нужный файл, расширив зону поиска, включив туда оба регистра (и малый и большой), добавьте к locate флаг -i:

терминал вернёт всевозможные результаты. Кроме того, нам доступна для скачивания и установки разновидность команды (в Кали моей сборки mlocate уже установлена)

После этого поиском через mlocate можно будет заниматься в пределах своей учётной записи.

Как найти файл или папку в Кали Линукс: whereis

команда whereis

Но и эту команду можно уточнить, попросив найти именно бинарник (как исполнительный файл в Windows) программы:

Как найти файл или папку в Кали Линукс: which

Команда ищет переменные только в пределах пользовательских прав.

команда whichis

Несмотря на внешнюю схожесть параметров поиска, между двумя методами поиска which и whereis есть некоторые различия. Так, команда whereis отображает расположение бинарного файла, исходника и т.п., в то время как which покажет расположение только бинарника команды. К тому же первая команда ищет в списке специальных директорий, вторая довольствуется переменными сред в директориях конкретного пользователя.

Далее. Когда речь заходит о результатах поиска, команда whereis отображает всё, что обнаружила по запросу. А вот which команда сначала покажет именно исполнительные файлы. К тому же whereis использует базу поиска в пределах основных страниц системы. И потому результат поиска может быть неполным. Если вы не уверены, что программа установилась в ту или иную директорию или неизвестно, где её вообще искать, лучше использовать команду whereis. Для полной уверенности зарегистрируйтесь в правами рут и используйте флаг -a . В этом случае от вас уже ничего не скроется.

Как найти файл или папку в Кали Линукс: find

Команда поиска find (файнд) в семействе Линукс вообще считается самой мощной. На фоне других команд она используется именно для поиска программ и утилит. Она будет рыскать везде в поисках вашего запроса. Файлы, которые она обнаруживает, будут отвечать следующим критериям:

  • дата и время создания или последних изменений
  • владелец
  • группа
  • разрешения на файл
  • размер

Основной синтаксис команды:

Так, если вы желаете найти файл или папку в Кали Линукс, начиная с главенствующих директорий root/директория с наименованием apache2, есть смысл начать поиск так:

команда find

команда find в конкретной директории

Обратите внимание на закрывающие поисковое слово одинарные кавычки. Уберите их, и поисковая выдача в этой директории может разбавиться ещё результатами.

Как найти файл или папку в Кали Линукс: grep

Запустите команду и увидите запущенные прямо сейчас на вашей Кали службы. Допустим, мне нужно вычленить одну из них. Опять же, пусть это будет apache2. Так запущен он или нет?

команда grep

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

Для тех, кто хочет сделать это на Mac (протестировано на OS X 10.9.5): ls -l | egrep '^[^d]..x..x..x.*$' выше приведен список всех исполняемых файлов (для всех / пользователя и группы) в текущем каталоге. Примечание . Этот -executable параметр не работает на Mac, поэтому возможен обходной путь, описанный выше.

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

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

Шебанг не означает, что они исполняемые. он говорит нам только, какой интерпретатор использовать. и по определению linux «исполняемые файлы» - это файлы с установленным битом исполняемого файла (x) Какая версия find поддерживает этот тип для -type? Человек находит списки b, c, d, p, f, l, s и D в моей системе. То же самое здесь, моя находка тоже не имеет -type x . Если у вас есть старая версия find (вероятно, до 4.3.8), в которой отсутствует -executable, используйте find. -perm / u = x, g = x, o = x.

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

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

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

Это работает только на более новой версии find. Один , который поставляется по умолчанию с CentOS дает ошибку find: invalid mode / и = х, г = х, о = x'` Затем вы должны попробовать версию "-perm +", которая в GNU find устарела: find. +111 " Похоже, -perm /111 может быть самая портативная версия.

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

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

Это единственный вариант, на котором я мог работать на OS X 10.14, спасибо

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

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

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

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

(0) Что вы предпочитаете, тайное и правильное или интуитивное и ошибочное? Я предпочитаю правильно. (1) ответ InnaM в , показывая find -perm , находит файлы , которые имеют любое разрешение на выполнение бит. (2) Напротив, этот ответ находит только файлы, для которых текущий пользователь имеет разрешение на выполнение. Конечно, это может быть тем, чего хочет ОП, но неясно. … (Продолжение) (Продолжение)… (3) Для ясности, вы можете захотеть перейти `…` на… $(…) увидеть это , это и это . (4) Но не делай for i in $(find …); do … ; это терпит неудачу на именах файлов, которые содержат пробел (ы). Вместо этого делай find … -exec … . (5) И, когда вы работаете с переменными оболочки, всегда заключайте их в кавычки (в двойных кавычках), если у вас нет веских причин не делать этого, и вы уверены, что знаете, что делаете. @ Scott Хорошо, я исправлен :) Я прочитал -perm аргумент как требующий все три, а не один из них. Кроме того, спасибо за вклад в защиту аргументов оболочки, это все, о чем я не знал. @MarkMcKenna у вас есть опечатка: for i in найти. -тип f ; do [ -x $i ] && echo "$i is executable"; done ; вам не хватает части <dir>, которую я использую точку (.)

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

Вот что я использую:

@DerMike, это один из способов найти исполняемый файл в текущем каталоге, включая файлы .so, даже если файл не помечен как исполняемый файл, который он может обнаружить. Он читает из заголовка файла для обнаружения, каждый бинарный файл или файл сценария имеет заголовок. Насколько я знаю, -name "*" это никак не влияет find - он обычно находит все файлы, которые не были удалены тестами.

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

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

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

Это не сработает, если скрипт содержит не-ASCII символы. file сообщает кодировку, поэтому сценарий Python может быть сообщен как a /usr/bin/python script, UTF-8 Unicode text executable . find . | xargs file -b | grep -v '^ELF' может работать лучше, чтобы обнаружить недвоичные файлы.

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

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

В этой статье мы покажем вам, как использовать команду whereis в Linux.

Как использовать команду whereis

Синтаксис команды whereis следующий:

При использовании без каких-либо опций, whereis выполняет поиск команды, указанной в качестве аргумента, в двоичных, исходных и ручных файлах.

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

Например, чтобы получить информацию о команде bash , вы должны ввести следующее:

Если whereis команда не существует, будет выведено только имя команды.

Вы также можете указать несколько аргументов для команды whereis :

Вывод будет включать информацию о командах netcat и uptime :

Для поиска только двоичных файлов команд используйте параметр -p .

Например, чтобы найти расположение команды ping , вы должны ввести следующее:

При поиске только местоположения двоичного файла команды предпочтительнее использовать команды which или type .

Чтобы искать только исходные файлы, используйте параметр -s .

Если исходные файлы существуют, whereis напечатает их расположение.

Параметр -m позволяет искать только файлы man:

Чтобы ограничить места, где whereis ищет двоичные файлы, используйте параметры -B , для руководств параметр -M и -S для источников. Каждая опция принимает список абсолютных путей к каталогам, разделенных пробелом. Список каталогов должен заканчиваться параметром -f , указывающим начало имен файлов.

Например, чтобы найти двоичный файл cp в каталоге /bin , введите:

Параметр -u указывает, whereis искать необычные записи. Файлы, в которых нет ровно одной записи каждого запрошенного типа (двоичный, ручной и исходный), считаются необычными файлами (командами).

Например, для поиска всех двоичных файлов в каталоге /bin , в которых нет справочных страниц или более одной документации, вы должны ввести:

Подстановочный знак ( * ) после параметра -f означает все файлы в текущем рабочем каталоге ( /bin ).

Выводы

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

В этой статье поговорим о командах поиска файлов и директорий в терминале, таких как find, locate, whereis, which.

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

Формат команды find.

В общем виде команда find выглядит следующим образом:

где путь – это директория, в которой мы хотим произвести поиск, опции - это ключи-параметры поиска.

Путь поиска команды find.

В обычном случае мы просто указываем полный путь к нужному каталогу, например:

Но в качестве пути поиска можно указывать следующие значения:

Основные опции команды find.

  • -name - поиск файлов по имени;
  • -user - поиск файлов, принадлежащих указанному пользователю;

-type - поиск файлов определенного типа. Вот наиболее используемые типы:

  • d – каталог;
  • f – обычный файл;
  • l – символическая ссылка;

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

Самый простой вариант поиска, указываем путь и имя файла. Давайте найдем файл с именем file1:

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

Но если мы напишем не полностью имя, например "file", то файл с именем "file1" не найдется. Для этого нужно писать имя в кавычках и в конце добавить *, вот таким образом:

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

Но нашлись и файлы и директории, в названии которых встречается "file". Чтобы найти только файлы, воспользуемся опцией -type , передав ей значение f, чтобы искать только файлы (для поиска только директорий мы бы передали d):

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

Но теперь нашлись файлы во всех вложенных директориях. А что если нам надо найти файл только в текущей директории или с уровнем вложенности 1 или 2?

Для этого используется опция maxdepth (глубина поиска), то есть, если мы хотим найти файл в директории поиска, без рекурсивного просмотра всех директорий:

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

Теперь нашлись файлы только в директории поиска.

Если хотим включить первый уровень внутри каталога поиска, тогда нужно указать maxdepth 2:

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

Как видно на скриншоте, теперь найден файл и в папке "Загрузки".

Важно!

Нужно указывать опцию -maxdepth перед опцией -name.

Теперь разберем очень важную опцию поиска файла по размеру "-size".

Важно, если мы хотим найти файлы размером в килобайтах, нужно писать в конце k, для мегабайт M, для гигабайт G, для байт b. Важно соблюдать регистр.

Разберем пример, найдем файлы в домашней директории менее 10 килобайт с именем file*:

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

Нашлись все файлы в домашней директории и ее папках, размер которых менее 10 килобайт.

Теперь давайте найдем файлы в домашней директории, которые весят больше 100 мегабайт:

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

Нашелся один файл, который весит более 100 мегабайт.

Также можно искать файлы определенного размера, например, которые весят 1G или 1M:

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

Поиск файлов, которые были изменены или созданы менее 2 дней назад:

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

Также можно использовать опцию -user, чтобы найти только файлы определенного пользователя:

Вместо username нужно подставить имя пользователя. Если искать ваши файлы, то можно использовать системную переменную $USER, которая выводит имя текущего пользователя.

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

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

Поиск файлов, которые были изменены или созданы более 100 дней назад:

В одной статье очень трудно перечислить все возможности этой команды поиска файлов и директорий. Это самое основное и часто используемое.

Помимо find для поиска файлов существует ещё команда locate.

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

Команда locate ищет файлы очень быстро, так как она производит поиск не по файловой системе, а по собственной базе данных.

Поэтому, перед использованием данной команды поиска следует использовать команду, которая обновит базу данных индексов файлов в системе:

Хотя это и не обязательно (система это делает периодически), просто если не выполнить её, то вам может вывести в поиске удаленные файлы или не вывести только что созданные.

Формат команды locate.

Вводится команда locate и имя файла, который хотим найти. И, конечно же, опции, которые разберем на примерах.

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

Давайте найдем все файлы с расширением .exe:

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

Если мы хотим вывести результаты поиска в одну строку, тогда используем следующую опцию -0 (это тире и ноль)

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

Но если мы ищем файл с названием "file", то не найдутся файлы с именами в другом регистре: File, FILE и т.д.

Чтобы поиск сделать регистронезависимым, то нужно использовать следующую опцию -i, то есть:

Если мы хотим узнать просто количество файлов, имеющих в имени "file", или количество файлов с определенным расширением, к примеру .exe, то нужно указать опцию -c:

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

Что означает, что в системе 10 файлов имеют расширение .exe.

Если мы хотим ограничить число выводимых файлов в поиске по заданному параметру, мы ставим опцию -n и число:

То есть, данная команда с опцией -n 2 выведет нам только 2 первых найденных файла:

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

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

Полезные команды whereis и which.

У нас установлены программы в системе и чтобы узнать размещение бинарных файлов, исходных кодов и руководств, относящихся к установленной программе, можно выполнить команду whereis. Для примера найдем информацию о пакете google-chrome:

Команда же which отображает полный путь к установленной программе. Также в качестве примера возьмем google-chrome:

Читайте также: