Я хочу написать сценарий (или, желательно, псевдоним), который выполняет следующие действия:
*.jar
jar tvf <jar file name> | grep
<Some argument>
jar
содержит файл с именем, которое соответствует argument
Я работаю над tcsh
и предпочел бы не открывать новую оболочку, поскольку я хочу, чтобы это было псевдонимом, а не скриптом - выполнимо ли это?
Прямой псевдоним не подойдет для этого приложения. Что-то вроде этого было бы близко, за исключением того, что вы получили бы результат grep, а не имя файла jar:
alias targrep="find . -name '*.jar' -exec jar tvf {} \; | grep"
targrep someterm
Чтобы получить имя файла, вы должны переключиться на использование функции вместо псевдонима, чтобы у вас был больший контроль над аргументами и тем, куда идут значения. (Примечание: формат bash, возможно, потребуется изменить для tcsh)
function jargrep () {
find . -name '*.jar' | while read jar; do
jar tvf $jar | grep -q $@ && echo $jar
done
}
jargrep someterm
Попробуйте что-нибудь вроде
find . -name '*.jar' -exec 'jar tvf | grep <some agrument>'
прочтите справочную страницу для получения более подробной информации.