У меня есть вопрос по поводу следующей команды:
apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common'
Из-за моих ограниченных знаний в области ИТ, могу ли я сказать, что (ia32-) в приведенной выше команде относится к 32-разрядному программному обеспечению? Если это так, то я предполагаю, что приведенная выше команда предназначена для 32-битной установленной ОС.
Однако я установил 64-битную ОС.
Каков правильный параметр для 64-битного программного обеспечения? Это (amd64-) или (ia-64) или (x86_64 -)?
Любая помощь экспертов очень ценится.
В первую очередь, apt-cache search
не ищет , установил пакеты, это ищет доступный , оба установленные и не установленное. Кроме того, различные шаблоны поиска, которые Вы видите, не являются взаимоисключающими, таким образом, строки, соответствующие любой из них, будут распечатаны. Наконец, ?
после ^(ia32-)
средство ia32-
является дополнительным, выражение будет соответствовать строкам, которые имеют его и строки, которые не делают. Так, Ваша команда будет действительно работать на системы на 64 и 32 бита.
эквивалентная команда для поиска установленных пакетов только была бы:
dpkg -l *java* | awk '{print($2)}' |
grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' \
-e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common'
, Но не используют это. В полученных системах Debian, таких как Ubuntu, существует специальный инструмент для этого, update-java-alternatives
, который, когда выполнено с -l
опция перечислит установленные среды Java:
update-java-alternatives -l
В моей системе, например, это печатает:
java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
jdk-7-oracle-x64 317 /usr/lib/jvm/jdk-7-oracle-x64
|
). Для очень хорошего учебного руководства на регулярных выражениях см. здесь . – Esko 17.05.2020, 11:48^
прием регулярного выражения, это означаетmatch the beginning of a line
, эти|
каналы, которые передают вывод одной команды, как введено другому.*
подстановочный знак, это означает0 or more
. – Avi-B 17.05.2020, 11:49