Intereting Posts
Что будет меньше налогообложения на более старой системе, более старой школьной системы, такой как debian или более легкая среда рабочего стола, например lxde? Общие сведения о виртуальных коммутаторах в Linux Каковы альтернативы для запуска и остановки конфигурации openvpn в Debian Jessie? Скрипт пытается создать файлы, даже если им это не нужно? Имя папки изменилось, когда SCP с iPhone на сервер Synology Bash не может запустить команду из скрипта: команда mkdir не найдена Почему псевдоним внутри функции не работает? Сортировка одного файла по строке на основе другого файла Являются ли аппаратные функции или программные функции «режима ядра» и «пользовательского режима»? gimp-plugin не может найти gtk / gtk.h Путь администрирования Weblogic слишком медленный Как я могу переопределить файл / etc / hosts на уровне пользователя? В чем разница между / opt и / usr / local? Как сообщить wget, где извлекать файлы, переданные через '-input-file' Применение функции bash для каждого файла в подпапке рекурсивно

Что меньше делать с rpm, и как мне получить этот текст без rpm

Когда я выполняю less package.rpm , меньше показывает мне всякую метаинформацию о пакете. То, что менее точно – делает ли он встроенный код, чтобы иметь возможность извлекать метаинформацию, или представляет собой rpm, структурированный таким образом, что первая часть просто выглядит как текстовый файл?

Я бы предпочел первый, так как head здесь не так полезен. Но чтобы ответить на реальный вопрос: если я хочу, чтобы grep через эти метаданные меньше показывал мне, как я могу это сделать?

    Если вы просмотрите страницу с less , вы заметите, что функция INPUT PREPROCESSOR меньше.

    echo $LESSOPEN чтобы просмотреть местоположение этого препроцессора и использовать less / vim / cat для просмотра его содержимого.

    На моей машине этот препроцессор – /usr/bin/lesspipe.sh и он включает следующее для rpms:

     *.rpm) rpm -qpivl --changelog -- "$1"; handle_exit_status $? 

    По сути, less рук, открывая файл для rpm , и показывает вам разбиение на страницы его вывода.

    Очевидно, чтобы grep через эту информацию, просто grep вывод rpm напрямую:

     grep "foo" < <(rpm -qpivl --changelog -- bar.rpm) 

    Или вообще (спасибо OrangeDog)

     grep "foo" < <(lesspipe.sh bar.rpm) 

    Примечание: $LESSOPEN Не просто удерживает расположение lesspipe.sh – он начинается с | и заканчивается %s поэтому его непосредственное обращение приведет к ошибкам.

    Если бы мне хотелось, чтобы эти метаданные помогли мне показать, как я могу это сделать?

    очень просто; если вы хотите grep на «Version», например:

     less your.rpm | grep "Version" 

    Обратите внимание, что меньше используется команда rpm ; поэтому лучше пропустить, используя меньше; и использовать команды rpm ; как:

     rpm -qip /path/to/uninstalled/rpm rpm -qi installed.rpm