Что такое команда для поиска 64-битной установленной Java, JRE или OpenJDK?

У меня есть вопрос по поводу следующей команды:

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 -)?

Любая помощь экспертов очень ценится.

2
задан 17.05.2020, 11:47

1 ответ

В первую очередь, 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
6
ответ дан 17.05.2020, 11:48
  • 1
    Нет, это простой язык программирования, но весь странный материал, который Вы видите здесь, является регулярными выражениями, часть оболочки - то, что передает вход одной команды другому (использование |). Для очень хорошего учебного руководства на регулярных выражениях см. здесь . – Esko 17.05.2020, 11:48
  • 2
    Спасибо за Ваш ответ. Основные сценарии оболочки основаны на языке программирования, нет? – Jav_Rock 17.05.2020, 11:48
  • 3
    В каком языке программирования команда была записана? C? C++? Основной? C#? Целая команда напоминает строку искусства с ^ | и * – Kell 17.05.2020, 11:49
  • 4
    Язык является основными сценариями оболочки и регулярными выражениями. Эти ^ прием регулярного выражения, это означает match the beginning of a line, эти | каналы, которые передают вывод одной команды, как введено другому. * подстановочный знак, это означает 0 or more. – Avi-B 17.05.2020, 11:49
  • 5
    Спасибо за такой Ваш ответ и подробное объяснение. Существует ли способ для меня наградить Вас большим количеством точек? – Aaron McIver 17.05.2020, 11:49

Теги

Похожие вопросы