Как установить все пакеты, связанные с 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. Так что это большое преимущество, если вы хорошо разбираетесь в регулярных выражениях. Наслаждайтесь!