Как установить все пакеты, связанные с iptables, на OpenWrt с помощью одной эффективной команды?

В OpenWrt 10.03.1-RC6 следующая команда устанавливает вещи iptables:

opkg update && grep -e "Package: iptables-mod-" -e "Package: kmod-ipt-" -e "Package: kmod-nf" -e "Package: .*nfnetlink" -e "Package: .*netfilter" -e "Package: .*iptables" /var/opkg-lists/packages | awk -F ': ' '{print $2}' | xargs opkg install

Как я могу сделать эту команду более компактной? (Например, с регулярными выражениями.)

1 ответ

Решение

Вы можете полностью заменить команду grep этой командой grep:

grep -E "Package: ((iptables-mod-|kmod-(ipt-|nf))|.*(nfnetlink|netfilter|iptables))" /var/opkg-lists/packages

Опция -E указывает grep для использования расширенных регулярных выражений. Я использую расширенные регулярные выражения:

(c|b)at 

Это соответствует "кошка" или "летучая мышь", т.е. выбран только один из вариантов в круглых скобках. Так что в вашем случае команда grep будет соответствовать

  • Пакет: iptables-мод
  • Пакет: kmod-ipt-
  • Пакет: кмод-нф
  • Пакет: .* Nfnetlink
  • Пакет: .* Netfilter
  • Пакет: .* Iptables

Чтобы лучше узнать регулярные выражения, используйте http://www.grymoire.com/Unix/Regular.html в качестве справочного материала. Регулярные выражения составляют основу команд grep, sed, awk, find и многих других UNIX. Так что это большое преимущество, если вы хорошо разбираетесь в регулярных выражениях. Наслаждайтесь!

Другие вопросы по тегам