Просто запустите две команды ack-grep
как составную команду;затем передайте результаты команды compund.Первая составная команда, определенная в man bash
- это круглые скобки:
(list) list is executed in a subshell environment (see COMMAND EXECU-
TION ENVIRONMENT below). Variable assignments and builtin com-
mands that affect the shell's environment do not remain in
effect after the command completes. The return status is the
exit status of list.
Итак:
james@bodacious-wired:tmp$echo one > one.txt
james@bodacious-wired:tmp$echo two > two.txt
james@bodacious-wired:tmp$(cat one.txt; cat two.txt) | xargs echo
one two
Вы можете использовать фигурные скобки для аналогичного эффекта, но фигурные скобки имеют несколько синтаксических различий(например, они более привередливы в необходимости пробелов между фигурной скобкой и другими словами).Самое большое отличие состоит в том, что команды внутри фигурных скобок выполняются в текущей оболочке, поэтому они могут влиять на вашу среду.Например:
james@bodacious-wired:tmp$HELLO=world; (HELLO=MyFriend); echo $HELLO
world
james@bodacious-wired:tmp$HELLO=world; { HELLO=MyFriend; }; echo $HELLO
MyFriend
Если вы хотите по-настоящему придумать, вы можете определить функцию и выполнить ее:
james@bodacious-wired:tmp$myfunc () (
> cat one.txt
> cat two.txt
> )
james@bodacious-wired:tmp$myfunc | xargs echo
one two
james@bodacious-wired:tmp$