Передача результата команды в качестве аргумента
Я хочу получить результат 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