Передача результата команды в качестве аргумента

Я хочу получить результат rpm -qa | grep something а затем запустить результат, который я получил rpm -ql result-i-gotи все в одну строку.

Я нашел это, чтобы работать:

rpm -ql $(rpm -qa | grep something)

Интересно, есть ли какой-нибудь лучший или даже иной способ передать этот результат, чтобы получить тот же результат, что я написал выше? Благодарю.

2 ответа

Решение

xargs сделаны для этого:

rpm -qa | grep something | xargs rpm -ql

Вы можете фактически предоставить подстановочные аргументы rpm -qa; это избавляет от необходимости передавать по конвейеру другой команде, поэтому вместо rpm -qa | grep something, ты можешь использовать

rpm -qa '*something*'

Используйте одинарные или двойные кавычки, чтобы оболочка не расширяла звездочку в качестве шаблона оболочки.

Пример:

$ rpm -qa '*vim*'
vim-enhanced-7.0.109-7.2.el5
vim-minimal-7.0.109-7.2.el5
vim-common-7.0.109-7.2.el5

Вышеуказанная команда может быть объединена с -l Возможность перечислить файлы в соответствующих пакетах.

rpm -qal '*vim*'

Одна из проблем этой команды заключается в том, что если возвращается более одного пакета, неясно, какие файлы принадлежат какому пакету, так как имя пакета не печатается. Чтобы включить имя пакета в вывод, вы можете добавить --queryformat возможность более точного контроля над тем, как печатается информация. Например, в следующем примере выводится имя пакета, подчеркнутое рядом символов дефис-минус, а затем список файлов, предоставляемых этим пакетом:

rpm -qal --qf "\n%{NAME}\n--------\n" '*vim*'

rpm Страница man содержит больше информации о настройке вывода команды.


Если вы часто используете эту команду, вы можете превратить ее в псевдоним:

alias rpmlist='rpm -qal --qf "\n%{NAME}\n--------\n"'

и использовать это так

rpmlist '*vim*' | less
Другие вопросы по тегам