Новички Linux (включая меня :)) часто сталкиваются с проблемой, как найти файлы и программы, главным образом принимая во внимание совершенно другую directory structure по сравнению с Mac OS или Windows. Новички иногда разочаровываются, пытаясь найти нужные файлы или binaries, поэтому я посвящаю этот урок именно поиску материала (stuff) в Linux.
Finding Files in a Directory (Find)
Первую команду, с которой хочу вас познакомить, это find. Как вы вероятно догадались, find умеет находить материал (stuff) при помощи просмотра директории в целях найти необходимый файл. По умолчанию, она рекурсивна, что означает она будет просматривать все sub-директории и отображать список всего, где она нашла этот файл. К примеру, если мы ищем aircrack-ng, мы могли бы написать:
find -name aircarck-ng
Заметьте, что нам нужно сказать Linux, что мы ищем по имени (-name) и затем имя файла, который мы ищем.
Тогда она вернет полный путь каждого места, где она нашла aircrack-ng. Мы можем быть более конкретными и попросить Linux только сказать, где найдется aircrack-ng в /pentest директории. Мы можем сделать это напечатав:
find /pentest -name aircrack-ng
Эта команда говорит: «Посмотри в pentest директории и все sub-директориях и скажи мне, где найдется что-нибудь с названием aircrack-ng«.
Теперь Linux возвращает только те пути к файлам, которые лежат в директории /pentest или ее sub-директориях, такие как /pentest/wireless/aircrack-ng и другие.
Finding Binaries in Path Variables (Which)
Следующая команда поиска, которую мы рассмотрим, это which. Эта команда позволяет нам искать binaries, которые находятся в нашей path variable.
Binaries это файлы, эквивалентные executables в Windows. Это такие файлы, которые что-то делают, как, например, echo, ls, cd, mv, и так далее. Наша path variable это переменная, в которой хранятся пути к нашим binaries. Обычно наши binaries находятся в /bin (bin это сокращение от binaries) или в /sbin директории и это отражается в path variable. Настройки нашей path variable могут быть запрошены у Linux при помощи команды echo. Мы делаем это вызвав:
echo $PATH
Linux отвечает значением в нашей path variable. Это те места, в которых which будет искать binaries. Поэтому когда мы печатаем:
which ls
Она возвращает путь к этому binary. Если мы используем which для поиска aircrack-ng:
which aircrack-ng
Тогда мы можем увидеть, что Linux возвращает /usr/local/bin/aircrack-ng. Если бы aircrack-ng была не в директории, которая в нашем пути (path variable), эта команда не смогла бы нам помочь.
Finding Any File in Any Directory (Whereis)
В отличие от which, whereis не ограничена нахождением binaries в path variable. Она может определять файлы в любой директории, и в дополнении она также может определять мануалы файлов (manual) или man страницы. Поэтому когда мы печатаем:
whereis aircrack-ng
Мы можем видеть, что whereis возвращает путь к разным расположениям aircrack-ng, включая man страницы.
Finding Files Using the Database (Locate)
locate команда может также использоваться для нахождения файлов и обычно намного быстрее нежели which или whereis. Отличие состоит в том, что locate использует базу данных всех файлов и из-за этого поиски выполняются гораздо быстрее.
Недостаток заключается в том, что новые файлы не будут найдены с помощью locate, так как база данных обычно обновляется только раз в день, обычно планируется эта операция в полночь, когда активность системы не высокая, так как обновление базы может быть CPU ресурсоемким.
locate aircrack-ng
Вы можете видеть на скриншоте выше, что locate возвращает путь каждый раз, когда встречает любой файл с aircrack-ng в нем, вне зависимости binary он или нет.
Надеюсь, это поможет в поиске всего, что вам нужно в Linux :). Убедитесь, что вы уверенно владеете материалом первых трех частей этой серии (1, 2, и 3), и если у вас есть вопросы, задавайте их в комментариях.