Архив документации OpenNet.ru / Раздел "Документация для Linux" / Индекс

4.1.3 Как повысить информативность запроса

4.1.3.1 Перенаправление вывода на grep

Команда grep предоставляет мощные инструменты фильтрации текстового потока для Linux (Unix) систем. Сочетание rpm -qa и grep представляет собой настоящую поисковую машину. Например, задание шаблона "py" в качестве аргумента grep приведет к такому выводу:

# rpm -qa | grep py

python-2.2.1-17

pygtk2-1.99.12-7

pyxf86config-0.3.1-2

rpm404-python-4.0.4-8x.27

python-devel-2.2.1-17

gnome-python2-gtkhtml2-1.99.11-8

orbit-python-1.99.0-4

gnome-python2-canvas-1.99.11-8

gnome-python2-bonobo-1.99.11-8

gnome-python2-1.99.11-8

pyOpenSSL-0.5.0.91-1

rpm-python-4.1-1.06

pygtk2-devel-1.99.12-7

kdesdk-kspy-3.0.3-2

mod_python-3.0.0-10

gnome-python2-gconf-1.99.11-8

libxslt-python-1.0.19-1

python-tools-2.2.1-17

libxml2-python-2.4.23-1

pygtk2-libglade-1.99.12-7

python-optik-1.3-2

kfloppy-3.0.3-3

Опции grep, а также регулярные выражения, которые можно использовать в grep, досупны в справке man.

Наиболее интересные примеры.

Для поиска пакета, имя которого начинается с определенного буквосочетания, введите:

# rpm -qa | grep ^py

где py - начальные буквы имен пакетов.

Для исключения пакетов с заданным буквосочетанием в имени, введите:

# rpm -qa | grep -v blabla

В команде grep опция -v означает не многословный вывод, а инверсию шаблона, то есть "выведи мне все, что не соответствует шаблону".

4.1.3.2 Запросы с помощью метасимволов

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

# rpm -qa "send*"

sendmail-cf-8.11.6-3

sendmail-8.11.6-3

Кавычки вокруг шаблона send* экранируют специальный символ * от интерпретации его определенным образом механизмами Linux shell. Эта команда ищет все пакеты, имена которых начинаются с send. Подобно grep, такая форма команд может инвертировать шаблон с помощью символа !:

# rpm -qa "!send*"

Данная вариация будет искать пакеты, имена которых не начинаются с send.

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

Далее - Какому пакету принадлежит файл?
Назад - Запросы о пакетах
Содержание


Архив документации на OpenNet.ru