我需要知道一个命令来查找系统路径中的所有Java版本。我知道which -a java
将打印在系统路径中可以找到java可执行文件的所有位置,但我想获取每个可执行文件的版本信息。
答案 0 :(得分:1)
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