Intereting Posts
где переменная 'Editor' хранится в git? Независимый от оболочки путь к cp dotfiles из папки в другую Как создать несколько идентификаторов с одинаковым UID в AIX? Как изменить UID идентификаторов в AIX? ext4: Как учесть пространство файловой системы? Я не могу получить CentOS 7 iso (на жестком диске) для загрузки с GRUB2 Как я могу установить pingable IP, но интерфейс без подключения не связан? Поиск файла по части его содержимого df -k + как совместить строку корневого тома Как заблокировать сайт https facebook с помощью iptables 100C температура процессора в «датчиках» Ubuntu, но 39C в BIOS, какой из них правильный? Как добавить дескриптор дескриптора gnome в оболочку пантеона Печать оцениваемых приглашающих заполнителей для отображения Насколько надежны / переносимы Nix-встроенные / команды (echo, ps, sort, uniq) из Debian в другие дистрибутивы Обрезать линии до определенной длины Экспедирование Kerberos в SSSD

Что меньше делать с 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