Архив рубрики: Linux

Ваш путеводитель по одной из самых популярных и влиятельных операционных систем в мире. От базовых команд и установки дистрибутивов до глубокого изучения ядра и сетевых технологий — здесь вы найдете статьи и руководства на самые разные темы, связанные с Linux. Независимо от вашего уровня подготовки, здесь найдется что-то интересное и полезное.

Поиск файла в Linux

В операционных системах семейства Linux все объекты ОС являются файлами. Это означает, что не только данные пользователя и настройки системы хранятся в файлах, но и различные механизмы управления системой и коммуникации основаны тоже на файлах. Поэтому поиск файлов очень важен и для новичков будет очень полезно узнать, как найти местоположение того или иного файла, будь то программа, изображение или документ.

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

Поиск файла в Linux через графический интерфейс

В популярных графических окружениях рабочего стола таких как Gnome или KDE поддерживается поиск файлов прямо в главном меню. Этот поиск выполняется реальном времени и ищет только в самой домашней папке и в нескольких стандартных подпапках, таких как Документы, Загрузки и т д. Кроме того, большинство файловых менеджеров поддерживают поиск файла в выбранной папке и её подпапках. Я не буду рассматривать это в данной статье. Вместо этого давайте сосредоточимся на утилитах, которые позволяют выполнять расширенный поиск файлов.

1. Catfish

Это простая программа для поиска файлов. В ней можно выбрать тип файла для поиска, а также время его изменения. Программа ищет по всей файловой системе, поэтому это может занять довольно много времени. Она ищет не в реальном времени, а использует поисковый индекс mlocate. Вы можете установить Catfish в Ubuntu используя такую команду:

sudo apt install catfish

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

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

Кроме того, утилита поддерживает поиск по содержимому. Для этого нужно включить галочку Search file contents в настройках:

2. FSearch

Это инструмент для поиска файлов по имени работающий также как и Everything Search Engine. При первом запуске необходимо создать индекс для поиска на основе папок, в которых вы собираетесь искать файлы. Затем вы будете получать результаты поиска сразу же при вводе текста. Программа поддерживает модификаторы по типу файла, символы подстановки, операторы И/ИЛИ, регулярные выражения, сортировку по типу и размеру, а также многое другое. Вы можете найти информацию о том как установить FSearch в вашем дистрибутиве на странице программы на GitHub. При первом запуске окно программы выглядит вот так:

После запуска программы необходимо нажать кнопку Add Folders и добавить папки, в которых вы хотите выполнять поиск с помощью кнопки со значком плюса:

Также здесь можно настроить параметры поискового индекса и частоту его обновления. Позже, индекс можно настроить открыв Edit -> Preferences -> Database. После этого вы можете просто начать набирать имя файла в поисковой строке и он сразу же появится в списке:

Можно использовать модификатор по типу файла, например pic: для картинок:

Кроме того доступны такие модификаторы типа файла: file, folder, app, archive, audio, doc, video. Также можно использовать регулярные выражения с помощью модификатора regex:

Или искать по размеру с помощью модификатора size:

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

Существует ещё одна похожая утилита для поиска - это AngrySearch. Но она уже давно не обновлялась и её функциональность примерно такая же как и у fsearch, поэтому я не буду рассматривать её в этой статье.

3. Recoll

Это приложение тоже может выполнять поиск файлов Linux не только по имени, но и по их содержимому. Здесь используется полнотекстовый поисковый движок Xapian. Как и в предыдущем варианте необходимо сначала создать поисковый индекс. Для этого нажмите кнопку Indexing Configuration:

В открывшемся окне вы можете добавить папки, в которых будет выполняться поиск в разделе Top-Level Directories, а также, поскольку это полнотекстовый индекс, то можно подключить словари словоформ для вашего языка в разделе Stemming Languages. По умолчанию выбрана только ваша домашняя папка:

Когда все настройки будут внесены, нажмите кнопку Ok, а затем Start the indexing process. В приложении доступно четыре варианта поисковых запросов:

  • Any word - вхождение хотя бы одного слова из запроса в имя или содержимое;
  • All words - вхождение всех слов из запроса в имя или содержимое;
  • File name - поиск только по имени файла;
  • Query language - позволяет формировать сложные запросы с помощью языка запросов Xapian.

Для поиска файлов по имени в Linux выберите тип поиска File Name, и наберите запрос. Например:

Для поиска по содержимому выберите Any Word, All Words, или Query Language. Например:

Можно искать по содержимому только в файлах с определённым расширением или вхождением определённых символов в имя файла используя язык запросов. Синтаксис довольно простой: имя_поля:значение. Например, так можно найти все вхождения kovalets в файлах, начинающихся на file:

Более подробную информацию про все возможные модификаторы можно найти в официальной документации.

Поиск файлов в Linux по имени через терминал

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

1. find

Самая часто используемая команда поиска файла Linux на данный момент - это find. Она имеет множество возможностей: вы можете искать файлы по имени, дате изменения или создания, использовать регулярные выражения и маски, выполнять определённые действия для найденных файлов, настраивать глубину поиска и многое другое.

По умолчанию команда find ищет и файлы и каталоги. Если папку не задать явно, то поиск будет выполняться в текущей папке. Указать что нужно искать именно файлы можно с помощью опции -type с параметром f, а сам запрос надо указать с помощью опции -name. Например:

find -type f -name "file"

Обратите внимание, что find будет искать файлы, имя которых точно совпадает с вашим запросом. Если вам нужно найти файлы которые содержат определённые символы в имени, используйте символы подстановки, например *:

find -type f -name "file*"

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

sudo find /etc/ -type f -name "pa*"

Для того чтобы не учитывать регистр символов при поиске, используйте опцию -iname вместо -name:

sudo find /etc/ -type f -iname "pa*"

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

sudo find /etc/ -type f -name "*.ini"

Более подробную информацию об этой команде читайте в статье команда find в Linux.

2. fd

Это альтернатива команды find, написанная на Rust. Она работает быстрее оригинальной find, поддерживает цветной вывод, поиск по регулярным выражениям, не учитывает скрытые файлы и файлы, перечисленные в .gitignore а также имеет более простой и удобный синтаксис. В Ubuntu утилиту можно установить с помощью следующей команды:

sudo apt install fd-find

Обратите внимание, что в Ubuntu эта команда пишется не fd, как задумали разработчики, а fdfind.

Как и find, эта утилита по умолчанию ищет в текущей папке, но вместо точного сопоставления имени, она ожидает часть имени или регулярное выражение. Например, для того чтобы найти все файлы в текущей папке, которые содержат слово file в имени достаточно команды:

fdfind file

Далее, для того чтобы найти файлы имя которых начинается на pa в папке /etc/ используйте такую команду:

sudo fdfind "^pa" /etc/

Если вам нужно искать файлы по расширению, используйте опцию -e. Например, для поиска всех ini файлов содержащих в имени букву x в папке /etc/ выполните:

sudo fdfind -e ini "x" /etc/

Более подробную информацию об утилите можно найти на её странице GitHub.

3. fzf

Команда fzf предназначена для живого нечеткого поиска файлов по имени. При запуске она показывает список файлов в текущей папке и строку поиска, куда вы можете вводить поисковый запрос, для того чтобы уменьшить количество этих файлов. Список фильтруется в реальном времени и всё работает довольно быстро. Для установки программы в Ubuntu можно использовать такую команду:

sudo apt install fzf

Когда утилита установлена, нужно перейти в папку, в которой вы хотите выполнять поиск. Например, в папку /etc/:

cd /etc/

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

fzf

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

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

А если только с конца, то символ $. Более подробную информацию можно найти в официальной документации.

4. skim

Это ещё одна утилита для нечеткого поиска в Linux в реальном времени, написанная на Rust. Она может делать почти всё то же самое что и fzf, но более легковесная. Утилиты нет в официальных репозиториях Ubuntu, но вы можете установить её с помощью cargo:

cargo install skim

Как и при использовании fzf вам нужно перейти в папку, в которой будет выполняться поиск. Например:

cd /etc/

Теперь вы можете запустить программу и начать вводить поисковый запрос:

sk

По списку найденных файлов можно перемещаться с помощью клавиш стрелка вверх и вниз. В отличие от fzf здесь также поддерживается командный режим, который позволяет добавить дополнительный уровень фильтрации комбинируя skim с grep или другой утилитой для поиска файлов. Просто укажите команду с помощью опции -c. Например:

sk --ansi -c 'grep -r "{}" .'

После выполнения команды вы увидите не только имена файлов но и их содержимое. Здесь вы можете отфильтровать файлы по имени. Например, только содержащие в пути init.d:

А затем, переключитесь в командный режим с помощью сочетания клавиш Ctrl+Q и наберите запрос уже для поиска по содержимому:

Или же сразу можно перейти в командный режим добавив опцию -i к команде запуска:

sk --ansi -i -c 'grep -r "{}" .'

5. locate

Команда locate считается устаревшей и уже была удалена из многих дистрибутивов. Она выполняет поиск не в реальном времени, как find, а по ранее созданной базе файлов, но она делает только поиск файла по имени Linux. Вы вводите слово, которое вас интересует, и утилита выдаёт все известные ей файлы, имя которых содержит такое слово. Можно использовать регулярные выражения. Например, найдем все файлы, в имени которых содержится passwd:

locate passwd

Обратите внимание, что если файл был добавлен после создания базы, то он найден не будет. Для обновления поискового индекса locate используйте такую команду:

sudo updatedb

Более подробно об этой утилите можно прочитать в статье Команда locate в Linux.

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

Существует несколько консольных утилит для поиска файлов по их содержимому и они будут подробно описаны в отдельной статье. Это SilverSearcher, ripgrep, ack и другие. Но исторически так сложилось, что самая популярная и часто используемая утилита для поиска текста по файлам это grep. Она поставляется во всех популярных дистрибутивах по умолчанию и её возможностей хватает для большинства задач.

Для того чтобы найти файлы, которые содержат определённую строку достаточно использовать опцию -r и указать папку, в которой надо искать текст. Например, давайте найдём все файлы в /etc/, которые содержат строчку error_reporting:

sudo grep -r "error_reporting" /etc/

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

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

Это можно сделать с помощью команды whereis. Эта команда достаточно простая и решает только одну задачу. Она показывает, где находится исполняемый файл, переданной ей программы. Например, если мы хотим узнать, в какой папке расположен grep, достаточно выполнить:

whereis grep

Выводы

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

Сетевой шлюз на Orange Pi R1 и Yocto Project

Yocto Project - это совместный Open Source проект для упрощения разработки дистрибутивов для встраиваемых систем. Yocto содержит большое количество шаблонов, метаданных и инструментальных средств сборки, и  поддерживает очень большое количество аппаратных платформ.

Poky – это эталонная система сборки в рамках проекта Yocto Project. Название Poky также относится к эталонному дистрибутиву Linux, который создается этой системой сборки и может быть чрезвычайно минималистичным (core-image-minimal). В данной статье мы будем руководствоваться шаблоном core-image-minimal и на его основе создадим рецепт сборки дистрибутива для шлюза.
Читать далее Сетевой шлюз на Orange Pi R1 и Yocto Project

История создания Linux

Операционная система GNU/Linux появилась благодаря стечению обстоятельств. Вы узнаете о том, с чего всё начиналось и какую роль в этом сыграл неисправный принтер. Это история Ричарда Столлмана и Линуса Торвальдса.

Столлман задал вектор развития программного обеспечения и пракически закончил работу над операционной системой, подготовив необходимые системные утилиты. А Торвальдс добавил недостающее - ядро Linux.

Читать далее История создания Linux

Файл hosts в Linux

Система доменных имен DNS используется для определения, какой IP принадлежит к нужному домену в сети интернет. Когда какой-либо программе понадобится обратиться к сайту по его доменному имени, операционная система отправляет к DNS-серверу запрос, чтобы узнать, по какому IP ей дальше передавать пакеты. Но так происходит не всегда. Например, когда мы обращаемся к домену localhost, то всегда запрос отправляется нашему локальному компьютеру.

Всему причиной файл hosts. Если вы раньше пользовались Windows, то, наверное, уже слышали о таком файле. Там чаще всего он использовался для того, чтобы быстро заблокировать доступ к какому-либо ресурсу. Но применение его гораздо шире. В этой статье мы рассмотрим, как настроить файл hosts в Linux, а также какие возможности он нам предоставляет.
Читать далее Файл hosts в Linux

Ошибка vfs unable to mount root fs on unknown block

Сообщение об ошибке "vfs unable to mount root fs on unknown block" может встречается во время загрузки Linux. Оно означает, что ядро не может примонтировать корневую файловую систему, и, следовательно, дальнейшая загрузка невозможна. Ошибка довольно серьёзная и, не исправив её, вы не сможете полноценно работать в своей операционной системе.

В сегодняшней статье мы разберём причины, по которым может возникать данная ошибка, а также способы, с помощью которых вы сможете попытаться её исправить.
Читать далее Ошибка vfs unable to mount root fs on unknown block

Команда strace в Linux

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

С помощью системных вызовов можно понять, к каким файлам обращается программа, какие сетевые порты она использует, какие ресурсы ей нужны, а также какие ошибки возвращает ей система. Это помогает разобраться в особенностях работы программы и лучше понять причину ошибки. За всё это отвечает команда strace Linux. В сегодняшней статье мы разберёмся, что она из себя представляет и как ею пользоваться.
Читать далее Команда strace в Linux

Нет звука в Ubuntu 18.04

Иногда мы можем сталкиваться с такой проблемой, что в системе нет звука. В Windows, обычно, это вызывается проблемами со звуковыми драйверами и решается, чаще всего, переустановкой. В Linux же всё немного по-другому. Драйверы здесь встроены в ядро, но есть библиотеки управления звуковой подсистемой, которые иногда могут вызывать сбои и проблемы.

В этой небольшой статье мы рассмотрим несколько способов борьбы с такой проблемой, как "нет звука Ubuntu 18.04". Несмотря на то, что статья пишется для версии 18.04, она должна отлично работать, как на новых, так и на более старых версиях, а также в других дистрибутивах Linux.
Читать далее Нет звука в Ubuntu 18.04

Установка PIP в Ubuntu

Существует несколько способов установки программного обеспечения в Ubuntu. Можно использовать центр приложений, установить deb-пакет, подключить репозиторий PPA, использовать Snap-пакеты, Flatpack или AppImage или даже собрать программу из исходного кода.

Однако существует еще один способ установки программ в Linux - это утилита PIP. Это система управления пакетами, которая используется для установки и управления программными пакетами, написанными на Python. В этой статье будет рассмотрена установка PIP в Ubuntu 20.04. Также будет показано, как пользоваться данной программой.

Читать далее Установка PIP в Ubuntu

Программы для скриншотов Linux

Когда я только начинал использовать Ubuntu вместо Windows в качестве основной системы, одной из первых вещей, которые меня беспокоили, было наличие инструментов для создания и редактирования скриншотов. Да, вы можете использовать стандартные комбинации клавиш, чтобы получить снимок экрана, но, используя сторонние инструменты, вы можете редактировать снимок.

В этой статье мы представим вам программы и инструменты для создания снимков экрана. Эта статья соберёт в себе лучшие программы для скриншотов Linux.
Читать далее Программы для скриншотов Linux

Установка тем Xfce

Один из самых больших плюсов Xfce - возможность очень гибкой настройки. В предыдущей статье мы рассмотрели подробную настройку данной оболочки, в этой же я расскажу о том, как устанавливать сторонние Gtk-темы, пакеты иконок и темы курсоров мыши. Благо существует множество различных тем на любой вкус.

Мы подробно рассмотрим, как установить тему XFCE из репозитория и своими руками, так как далеко не все графические украшения имеют готовые пакеты.
Читать далее Установка тем Xfce