在系统路径中查找所有 Java 版本
Find all Java versions in the system path
我需要知道一个命令来在系统路径中找到 Java 的所有版本。我知道 which -a java
会打印在系统路径中可以找到 java 可执行文件的所有位置,但我想获取每个这些可执行文件的版本信息。
which -a java | xargs -I{} echo "echo {};{} -version;echo" | sh
这将打印在系统路径中找到的每个 java 可执行文件的路径,以及该可执行文件的版本信息,并用换行符分隔条目。它是这样工作的:
- 将
which -a java
的输出通过管道传输到 xargs
- 使用
xargs -I{} echo
构造bash
命令,将which
输入的每一行替换{}
- 将构建的
bash
命令通过管道传输到系统的默认 shell 执行器中。
我机器上的样本输出给出了
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
/usr/lib/jvm/java-8-oracle/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
请注意,如果您想知道不同可执行文件的版本,您可以修改构建的 bash 命令以适当地打印版本信息。例如。如果你想知道 python
的所有版本,你可以 运行
which -a python | xargs -I{} echo "echo {};{} --version;echo" | sh
我需要知道一个命令来在系统路径中找到 Java 的所有版本。我知道 which -a java
会打印在系统路径中可以找到 java 可执行文件的所有位置,但我想获取每个这些可执行文件的版本信息。
which -a java | xargs -I{} echo "echo {};{} -version;echo" | sh
这将打印在系统路径中找到的每个 java 可执行文件的路径,以及该可执行文件的版本信息,并用换行符分隔条目。它是这样工作的:
- 将
which -a java
的输出通过管道传输到 xargs - 使用
xargs -I{} echo
构造bash
命令,将which
输入的每一行替换{}
- 将构建的
bash
命令通过管道传输到系统的默认 shell 执行器中。
我机器上的样本输出给出了
/usr/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
/usr/lib/jvm/java-8-oracle/bin/java
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
请注意,如果您想知道不同可执行文件的版本,您可以修改构建的 bash 命令以适当地打印版本信息。例如。如果你想知道 python
的所有版本,你可以 运行
which -a python | xargs -I{} echo "echo {};{} --version;echo" | sh